この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Security クラス

Apex アプリケーションをセキュアに実装するメソッドを含んでいます。

名前空間

System

使用方法

現在のユーザの作成、参照、更新、または更新/挿入のアクセス権限のコンテキストでは、Security クラスのメソッドを使用して、次の操作を行いま��。
  • クエリおよびサブクエリの結果から非表示の項目を削除する
  • 例外を発生することなく、DML 操作の前にアクセスできない項目を削除する
  • 信頼されないソースからの並列化された sObject をサニタイズする

Security のメソッド

Security のメソッドは次のとおりです。

stripInaccessible(accessCheckType, sourceRecords, enforceRootObjectCRUD)

ソースレコードから、現在のユーザの項目レベルセキュリティチェックに失敗した項目が除外された sObject のリストを作成します。このメソッドでは、オブジェクトレベルのアクセス権チェックを適用するオプションも提供されます。

署名

public static System.SObjectAccessDecision stripInaccessible(System.AccessType accessCheckType, List<SObject> sourceRecords, Boolean enforceRootObjectCRUD)

パラメータ

accessCheckType
型: System.AccessType
AccessType 列挙の値を使用します。このパラメータは、実行される項目レベルのアクセスチェックの種別を決定します。現在のユーザの項目レベルのアクセス権を確認するには、Schema.DescribeFieldResult メソッド — isCreatable()isAccessible()、または isUpdatable() を使用します。
sourceRecords
型: List<SObject>
現在のユーザ操作のコンテキストで、アクセスできない項目についてチェックされる sObject のリスト。
enforceRootObjectCRUD
型: Boolean
オブジェクトレベルのアクセスチェックを実行するかどうかを示します。このパラメータが true に設定されていて、アクセスチェックが失敗した場合、メソッドは例外をスローします。この省略可能なパラメータのデフォルト値は true です。

この例では、ユーザに商談の Probability 項目を作成する権限はありません。

1List<Opportunity> opportunities = new List<Opportunity>{
2    new Opportunity(Name='Opportunity1'),
3    new Opportunity(Name='Opportunity2', Probability=95)
4};
5
6// Strip fields that are not creatable
7SObjectAccessDecision decision = Security.stripInaccessible(
8    AccessType.CREATABLE,
9    opportunities);
10
11// Print stripped records
12for (SObject strippedOpportunity : decision.getRecords()) {
13    System.debug(strippedOpportunity);
14}
15
16// Print modified indexes
17System.debug(decision.getModifiedIndexes());
18
19// Print removed fields
20System.debug(decision.getRemovedFields());
21
22//Lines from output log
23//|DEBUG|Opportunity:{Name=Opportunity1}
24//|DEBUG|Opportunity:{Name=Opportunity2}
25//|DEBUG|{1}
26//|DEBUG|{Opportunity={Probability}}

stripInaccessible(accessCheckType, sourceRecords)

ソースレコードから、現在のユーザの項目レベルセキュリティチェックに失敗した項目が除外された sObject のリストを作成します。

署名

public static System.SObjectAccessDecision stripInaccessible(System.AccessType accessCheckType, List<SObject> sourceRecords)

パラメータ

accessCheckType
型: System.AccessType
AccessType 列挙の値を使用します。このパラメータは、実行される項目レベルのアクセスチェックの種別を決定します。現在のユーザの項目レベルのアクセス権を確認するには、Schema.DescribeFieldResult メソッド — isCreatable()isAccessible()、または isUpdatable() を使用します。
sourceRecords
型: List<SObject>
現在のユーザ操作のコンテキストで、アクセスできない項目についてチェックされる sObject のリスト。

この例では、ユーザにキャンペーンの ActualCost 項目を読み取る権限はありません。

1List<Campaign> campaigns = new List<Campaign>{
2    new Campaign(Name='Campaign1', BudgetedCost=1000, ActualCost=2000),
3    new Campaign(Name='Campaign2', BudgetedCost=4000, ActualCost=1500)
4};
5insert campaigns;
6        
7// Strip fields that are not readable
8SObjectAccessDecision decision = Security.stripInaccessible(
9    AccessType.READABLE,
10    [SELECT Name, BudgetedCost, ActualCost from Campaign]);
11        
12// Print stripped records
13for (SObject strippedCampaign : decision.getRecords()) {
14    System.debug(strippedCampaign); // Does not display ActualCost
15}
16
17// Print modified indexes
18System.debug(decision.getModifiedIndexes());
19
20// Print removed fields
21System.debug(decision.getRemovedFields());
22
23//Lines from output log
24//|DEBUG|Campaign:{Name=Campaign1, BudgetedCost=1000, Id=701xx00000011nhAAA}
25//|DEBUG|Campaign:{Name=Campaign2, BudgetedCost=4000, Id=701xx00000011niAAA}
26//|DEBUG|{0, 1}
27//|DEBUG|{Campaign={ActualCost}}