Apex REST Web サービスメソッドを使用したデータの公開
カスタム Apex REST Web サービスメソッドの呼び出しには、必ずシステムコンテキストを使用します。その結果、現在のユーザの証明書は使用されず、これらのメソッドにアクセスできるすべてのユーザが、権限、項目レベルのセキュリティ、共有ルールに関係なく、全機能を使用できます。そのため、Apex REST アノテーションを使用してメソッドを公開する開発者は、ユーザが機密情報データを不用意に公開しないよう注意する必要があります。
Apex REST API を使用して公開されている Apex クラスメソッドは、デフォルトではオブジェクト権限と項目レベルのセキュリティを適用しません。Apex で SOQL SELECT ステートメントを使用しているときにオブジェクトレベルまたは項目レベルのセキュリティを適用するには、WITH SECURITY_ENFORCED 句を使用します。Security.stripInaccessible メソッドを使用して、クエリやサブクエリの結果からユーザがアクセスできない項目を削除したり、DML 操作の前にアクセスできない sObject 項目を削除したりできます。また、適切な Object または Field Describe Result メソッドを使用することで、Apex REST API メソッドがアクセスするオブジェクトと項目への現在のユーザのアクセスレベルをチェックできます。「DescribeSObjectResult クラス」と「DescribeFieldResult クラス」を参照してください。
また、共有ルール (レコードレベルアクセス) は、with sharing キーワードでクラスを宣言するときのみに適用されます。この要件は、Apex REST API によって公開されるクラスを含むすべての Apex クラスに適用されます。Apex REST API メソッドに共有ルールを適用するには、これらのメソッドを含むクラスを with sharing キーワードで宣言します。「with sharing または without sharing キーワードの使用」を参照してください。