with sharing キーワードを使用した Apex クラスのアクセス制限

with sharing キーワードを使用して定義された Apex クラスは、組織の共有ルールで非公開に設定されている User オブジェクトに対して絞り込まないアクセスができなくなりました。以前のリリースでは、User オブジェクトは with sharing キーワードの適用対象外でした。User オブジェクトの組織の共有設定の共有は、デフォルトで参照のみで公開されているため、ほとんどの組織でこの動作による影響はありません。ただし、組織が User オブジェクトの組織の共有設定の共有を非公開に設定した場合、with sharing キーワードによって予期しない結果が発生する可能性があります。

デフォルトでは、Apex コードはシステムコンテキストで実行され、組織の全データに対するフルアクセス権があります。with sharing キーワードは、データアクセス時、現在のユーザの共有ルールを考慮するようにクラスに指示します。詳細は、Force.com Apex コード開発者ガイド』の「with sharing または without sharing キーワードの使用」を参照してください。

API バージョン 34.0 以降、User オブジェクトは with sharing キーワードによる結果の追加の絞り込みから除外されなくなります。この変更はバージョン設定されています。新しい動作にアクセスするには、コードを API バージョン 34.0 以降に更新してください。

古い動作に依存するコードがある場合、互換性を保持するには 2 つのオプションがあります。
  • 影響を受ける Apex クラスを API バージョン 33.0 より後に更新しない。
  • 影響を受けるクラスを、without sharing を使用してコンテキストユーザに基づく絞り込みを実装するようにユーザが変更する。