Apex-security
Apex-セキュリティ
Apexセキュリティとは、セキュリティ設定を適用し、コードの実行時に共有ルールを適用するプロセスを指します。 Apexクラスには、2つのキーワードで制御できるセキュリティ設定があります。
データセキュリティと共有ルール
Apexは通常、システムコンテキスト、つまり現在のユーザーの権限で実行されます。 フィールドレベルのセキュリティ、および共有ルールは、コード実行中に考慮されません。 コードを実行しているユーザーの許可を得て、匿名ブロックコードのみが実行されます。
Apexコードは、セキュリティおよび共有設定によって隠されている機密データをユーザーに公開しないでください。 したがって、Apexセキュリティと共有ルールの適用が最も重要です。
共有キーワードあり
このキーワードを使用すると、Apexコードは現在のユーザーの共有設定をApexコードに適用します。 これは、プロファイル権限を強制するのではなく、データレベルの共有設定のみを強制します。
ユーザーが5つのレコードにアクセスできるが、レコードの総数は10である例を考えてみましょう。 そのため、Apexクラスが「With Sharing」キーワードで宣言されると、ユーザーがアクセスできる5つのレコードのみが返されます。
例
まず、Customerオブジェクトに少なくとも5つのレコードの「Name」を「ABC Customer」として、残りの5つのレコードを「XYZ Customer」として少なくとも10個のレコードを作成したことを確認します。 次に、「ABCカスタマー」をすべてのユーザーと共有する共有ルールを作成します。 また、CustomerオブジェクトのOWDをプライベートとして設定したことを確認する必要があります。
下記のコードを開発者コンソールの匿名ブロックに貼り付けます。
キーワードを共有しない
名前が示すように、このキーワードで宣言されたクラスはシステムモードで実行されます。つまり、ユーザーのレコードへのアクセスに関係なく、クエリはすべてのレコードをフェッチします。
Apexクラスのセキュリティの設定
特定のプロファイルのApexクラスを有効または無効にすることができます。 同じ手順を以下に示します。 どのプロファイルがどのクラスにアクセスする必要があるかを決定できます。
クラスリストページからApexクラスセキュリティを設定する
- ステップ1 *-[設定]から、[開発]→[Apexクラス]をクリックします。
- ステップ2 *-制限するクラスの名前をクリックします。 CustomerOperationClassをクリックしました。
- ステップ3 *-[セキュリティ]をクリックします。
- ステップ4 *-有効にするプロファイルを[利用可能なプロファイル]リストから選択して[追加]をクリックするか、無効にするプロファイルを[有効なプロファイル]リストから選択して[削除]をクリックします。
- ステップ5 *-[保存]をクリックします。
権限セットからApexセキュリティを設定する
- ステップ1 *-[設定]から、[ユーザーの管理]→[権限セット]をクリックします。
PermissionsetセットからのApexクラスセキュリティの設定Step1
- ステップ2 *-権限セットを選択します。
PermissionsetからApexクラスのセキュリティを設定ステップ2
- ステップ3 *-[Apexクラスアクセス]をクリックします。
PermissionsetからApexクラスのセキュリティを設定ステップ3
- ステップ4 *-[編集]をクリックします。
権限セットのステップ4からApexクラスのセキュリティを設定
- ステップ5 *-有効にするApexクラスを[利用可能なApexクラス]リストから選択して[追加]をクリックするか、無効にするApexクラスを[有効なApexクラス]リストから選択して[削除]をクリックします。
PermissionsetからApexクラスのセキュリティを設定ステップ5
- ステップ6 *-[保存]ボタンをクリックします。