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

WITH SECURITY_ENFORCED を使用した SOQL クエリの絞り込み (ベータ)

WITH SECURITY_ENFORCED 句を使用して、Apex コードの SOQL SELECT クエリ (サブクエリとクロスオブジェクトリレーションを含む) の項目およびオブジェクトレベルセキュリティ権限を確認できます。

ベータ機能である SELECT WITH SECURITY_ENFORCED はプレビューであり、Salesforce とのマスターサブスクリプション契約における「サービス」とはみなされません。この機能はお客様各自の裁量で使用し、購入するときは、現在正式にリリースされている製品および機能に基づいて判断してください。Salesforce はこの機能の特定期間内の正式リリースまたはリリースの有無を保証しません。また、いかなる時点でもこの機能を終了できるものとします。この機能は評価のみを目的とし、本番環境での使用はできません。この機能は現状のまま提供され、サポートの対象外です。この機能に起因あるいは関連して生じた危害または損害に対して Salesforce は一切の責任を負わないものとします。制限、Salesforce の権利の留保、サービスに関するお客様の義務、関連する Salesforce 以外のアプリケーションおよびコンテンツの使用規約はすべて、お客様によるこの機能の使用にも同様に適用されます。

メモ

Apex は一般に、システムコンテキストで実行されます。つまり、コード実行時に、現在のユーザの権限、項目レベルセキュリティ、および共有ルールは考慮されません。前のリリースでも項目レベルセキュリティとオブジェクトレベルセキュリティの確認の実行は可能でしたが、この句はクエリ操作の冗長性と技術的な複雑性を大幅に削減します。この機能は、セキュリティを含む開発経験が少ない Apex 開発者と、権限エラーのグレースフルデグラデーションが不要なアプリケーション向けです。

WITH SECURITY_ENFORCED 句は Apex でのみ使用できます。45.0 より前の API バージョンの Apex クラスまたはトリガで WITH SECURITY_ENFORCED を使用することはお勧めしません。

メモ

SOQL SELECT クエリで WITH SECURITY_ENFORCED を使用して参照されている項目またはオブジェクトへのアクセス権限がユーザにない場合、例外が発生し、データは返されません。

LastName または Description いずれかの項目アクセスが非表示の場合、次のクエリでは権限が不十分であることを示す例外が発生します。
1List<Account> act1 = [SELECT Id, (SELECT LastName FROM Contacts), 
2   (SELECT Description FROM Opportunities)
3   FROM Account WITH SECURITY_ENFORCED]

Website の項目アクセスが非表示の場合、次のクエリでは権限が不十分であることを示す例外が発生します。
1List<Account> act2 = [SELECT Id, parent.Name, parent.Website 
2   FROM Account WITH SECURITY_ENFORCED]

Type の項目アクセスが非表示の場合、次の集計関数クエリでは権限が不十分であることを示す例外が発生します。

1List<AggregateResult> agr1 = [SELECT GROUPING(Type) 
2   FROM Opportunity WITH SECURITY_ENFORCED 
3   GROUP BY Type]