Salesforceのプロファイル・権限セット・共有ルールの違い
プロファイルと権限セットはオブジェクトと項目へのアクセスを、共有ルールはどのレコードを見られるかを制御します。2段階チェックがユーザーの実際の操作可否を決める仕組みを解説します。
「プロファイル vs 権限セット vs 共有ルール」で多くの人がつまずくのは、この3つが代替関係ではないからです。3つはそれぞれ異なる問いに答え、連携して機能します。プロファイルと権限セットはオブジェクトに対して何ができるかを決め、共有ルールはどのレコードに対してそれを行えるかを決めます。これらがどう組み合わさるのかを見ていきましょう。
2段階チェックモデル
Salesforceでのレコードアクセスはすべて、独立した2つのチェックを通過します。
- オブジェクトと項目のチェック — プロファイルと権限セットから: ユーザーはそのオブジェクトに対するCRUD権限と、項目に対する項目レベルセキュリティを持っているか?
- レコードのチェック — 共有モデルから: 組織の共有設定、ロール階層、または共有ルールが、この具体的なレコードへのアクセスを付与しているか?
オブジェクト権限がゲートです。共有はそこを通過できるレコードを決めます。両方を通過しなければなりません。
これがレコードアクセスモデル全体の土台です。
プロファイルと権限セット: 「何ができるか」
これらはオブジェクトレベルのアクセスとそれ以上を制御します。
- オブジェクトごとのCRUD(Read / Create / Edit / Delete)。
- 項目レベルセキュリティ — どの項目が参照可能/編集可能か。
- システム権限、アプリケーションとタブの表示、そしてアクセスをバイパスするView All / Modify All。
プロファイル vs 権限セット
- ユーザーが持つプロファイルは必ず1つだけです。歴史的には権限のベースラインでした。
- ユーザーはその上に複数の権限セット(および権限セットグループ)を重ねられます。
現代の推奨アプローチは権限セット主導です。プロファイルを最小限に保ち、アクセスは権限セットで付与します。乱立したプロファイルよりも、割り当て・再利用・監査が容易だからです。(対照的に、ロールは共有の階層を駆動します。これはプロファイルとは別の軸です。)
共有ルール: 「どのレコードか」
共有ルールはオブジェクトや項目のアクセスにはまったく関与しません。組織の共有設定の上に、所有者や条件に基づいてレコードレベルのアクセスを広げるだけです。階層との関係については、共有ルール vs ロール階層を参照してください。
決定的に重要なのは、共有ルールは欠けているオブジェクト権限を救済できないという点です。Opportunitiesに対するReadがなければ、いくつ共有ルールがそのユーザーを指していようと、商談は1件も見えません。
権限が共有を上書きする場所
レイヤーが交差する場所が1つだけあります。View AllとModify All(オブジェクトレベル)、そしてView All Data / Modify All Data(組織全体)です。これらは共有モデルを完全にバイパスします。これらを持つユーザーは、OWD、階層、ルールに関係なくすべてのレコードを見られます。非常に強力なため、アクセスがおかしいときに最初に確認すべきものです。View All / Modify All — 注意すべきバイパスを参照してください。
まとめると
| 問い | 答えるもの |
|---|---|
| ユーザーはそもそもこのオブジェクトを開けるか? | プロファイル / 権限セット(CRUD) |
| この項目を見られるか? | 項目レベルセキュリティ |
| そのオブジェクトのどのレコードを見られるか? | 共有モデル |
| 共有をバイパスできるか? | View All / Modify All |
ユーザーがあるレコードに到達できる理由・できない理由を知るには、両方の軸を一緒に読む必要があります。オブジェクト/項目の権限と、そのレコードに適用される共有の両方です。
2つの軸を一度に読む
厄介なのは、これらが設定の異なる場所に存在することです。プロファイルと権限セットは一方に、共有モデルはもう一方にあり、頭の中で両者を交差させなければなりません。AgentForceAccessはその交差をあなたの代わりに行います。あるユーザーがあるレコードに対して何ができるかを尋ねると、オブジェクト権限、項目レベルセキュリティ、そして共有モデルをまとめて考慮し、アクセスを付与または阻害している要素を正確に示します。
よくある質問
オブジェクトアクセスとレコードアクセスの違いは何ですか?
オブジェクトアクセス(プロファイルと権限セットによる)は、ユーザーがそのオブジェクトに触れられるかどうか(Read、Create、Edit、Delete)、そしてどの項目を見られるかを決めます。レコードアクセス(共有モデル)は、そのオブジェクトのどの具体的なレコードを見られるかを決めます。両方が必要です。
プロファイルと権限セット、どちらを使うべきですか?
両方とも存在しますが、現代的なアプローチは権限セット主導です。プロファイルはベースラインとして最小限に保ち、追加のアクセスは権限セットや権限セットグループで付与します。ユーザーが持つプロファイルは1つですが、権限セットは複数持てるため、アクセスの割り当てと監査が容易になります。
共有ルールはオブジェクトアクセスを付与しますか?
いいえ。共有ルールはレコードレベルのアクセスを広げるだけです。プロファイルや権限セットでオブジェクトにReadの権限がなければ、どんな共有ルールでも1件のレコードすら表示されません。オブジェクト権限がゲートであり、共有はそこを通過できるレコードを決めます。
プロファイルはどうやって共有ルールを上書きできるのですか?
View AllとModify Allを通じてです。これらの権限は、オブジェクトレベル、あるいは組織全体の「View All Data」/「Modify All Data」として、共有に関係なくユーザーがすべてのレコードを参照または編集できるようにします。共有モデルの上位に位置するため、権限が共有による制限を上書きできるのです。
あなたの組織で試してみる
AgentForceAccessは、あらゆるユーザーがあらゆるレコードやファイルを見られる理由を、Salesforceのすべての共有の仕組みを横断して、わかりやすい言葉で説明します。
先行アクセスを申し込む