Salesforceの「共有設定」と「共有ルール」は組織全体のオブジェクトのレコードに対するアクセス制御を適正化するための重要な権限設定です。本記事では、共有設定と共有ルールの基本的な概念から、具体的な設定方法までをわかりやすく詳細に解説します。
共有設定と共有ルールとは何なのか
「共有設定」は、各オブジェクトのレコードの公開 or ⾮公開や、編集権限を管理します。「共有ルール」は、共有設定の例外を定義する機能です。
例えば、共有設定を定義した後で、追加で共有ルールを設定するとします。このとき、共有設定で⾮公開にしたオブジェクトがあったとしても、共有ルールで例外を追加することで、特定のユーザーには閲覧可能にする、ということが出来るようになります。
まずは共有設定で厳しい制限をおこない、次に共有ルールで範囲を絞って条件を緩和してあげる、というやり⽅がSalesforce公式のベストプラクティスとなっています。
共有設定とは
まず初めに断っておきたいのは、共有設定というと、様々な共有にまつわる権限設定を包含した抽象的な上位概念のような語感がありますが、そうではありません。
「共有設定」で一つの機能です。「プロファイル」や「権限セット」と同じレイヤーの話だと捉えていただいた方が良いでしょう。
共有設定は、Salesforce内のオブジェクトの「レコード」に対するデフォルトのアクセス権を定義します。
ここで非公開や公開、と書いているのはオブジェクト自体を見られるかどうかということではありません。オブジェクト自体の参照/非公開はプロファイルでおこないます。
共有設定では、レコードの所有者以外のユーザーに対して、そのレコードの公開/非公開および編集可否を制御します。ここが感覚的に非常にわかりづらいので、要チェックです。
そのうえで、具体的には次のような共有設定を設定することができます。
- 親レコードに連動:親レコードの共有設定に従い、子レコードのアクセス権が決定されます。主従関係の従側のオブジェクトでこの選択肢が表示されます。
- 非公開:レコードの所有者とその上位のロールに属するユーザーのみがアクセスできます。
- 公開/参照のみ:全ユーザーがレコードを参照できますが、編集はできません。
- 公開/参照・更新可能:全ユーザーがレコードにフルアクセス(参照・更新)が可能です。
共有ルールとは
共有設定の概念さえ理解してしまえば、共有ルールは簡単です。
共有ルールは、共有設定のアクセス権を緩和するための機能です。共有ルールは、以下の条件に基づいて設定できます。
所有者ベースの共有ルール: 特定のレコード所有者に基づいてアクセス権を付与します。
例えば、共有設定でレコード所有者以外は非公開に制限している場合のユースケースを紹介します。同じ営業組織に所属する同僚にだけは情報共有をしたいとします。共有設定が非公開の場合、上位ロールに属するユーザーしかレコードを見られませんので、同じロールの同僚たちはこのままだとレコードを参照できません。
そんな時、所有者ベースの共有ルールを使用すれば、レコード所有者のロールが東日本営業部だったら東日本営業部のロールに所属する全員にレコードを公開するという設定が出来ます。
条件ベースの共有ルール: レコードの特定の項目値に基づいてアクセス権を付与します。
例えば、特定の地域の顧客レコードをその地域の販売チームに共有する場合、この共有ルールを使用します。
条件として、顧客レコードの「地域」項目が「関東」と設定されている場合には東日本営業部のロールに属するユーザーにアクセス権を付与するという方法が考えられます。
共有設定の設定方法
設定画面を開き、サイドメニューの検索窓に共有と入力します。サイドメニューに共有設定が出てきますので、クリックすると下図の画面になります。編集を押します。
例として取引先責任者の「デフォルトの内部アクセス権」を押すと、下図の選択肢が表示されます。
自社のSalesforce組織内のユーザーに対しての共有設定は内部アクセス権でおこないます。適宜設定をおこない、保存すれば作業は完了です。
「デフォルトの外部アクセス権」とは
ところで、「デフォルトの内部アクセス権」の右隣にある「デフォルトの外部アクセス権」とは何なのでしょうか?
答えは「Community Cloud」「Salesforceサイト」「Site.com」といった、自社のSalesforceのデータを外部公開する仕組みがあるのですが、外部公開する場合の共有設定になります。上記の機能を使用していない場合には気にする必要はないですが、念のため確認する方法を記します。
設定画面を開き、サイドメニューの検索窓にサイトと入力します。サイドメニューにサイトが出てきますので、クリックすると下図の画面になります。何も登録されていなければ「Community Cloud」「Salesforceサイト」「Site.com」は使用していません。
「階層を使用したアクセス許可」とは
アクセス権の右側にある「階層を使⽤したアクセス許可」のチェックボックスについて解説します。
チェックがtrueであれば、レコード所有者の上位ロールのユーザも、所有者と同じようにレコードを参照・編集することが出来るようになります。標準オブジェクトでは「階層を使⽤したアクセス許可」のチェックがデフォルトで⼊っており、外すことはできません。
つまりカスタムオブジェクトではレコードの所有者のみしか当該レコードを参照・編集できないという設定をすることが出来るということです。
共有ルールの設定方法
共有ルールへの導線は、先ほど解説した共有設定の導線と同じです。共有設定を開いた後で、ページ中ほどまでスクロールすると下図の通り、共有ルールを設定するセクションが現れます。
各オブジェクトの共有ルールから、「新規」を押すと下図の画面になります。共有ルールの解説の部分で例示した、レコード所有者に基づく共有ルールの設定により、レコード所有者が東日本営業ロールだったら、同僚の東日本営業ロールのユーザーにも参照・更新を許可するというルールを定義しています。
補足ですが、上図ステップ3で「共有するレコードを選択します」というセクションがあります。日本語の意味が若干わかりづらいですが、「所有者が○○だったら共有ルールを適用する」と読み替えればしっくりきます。
また、ステップ4についてはそのまま、「どんなユーザーに共有ルールでアクセスを許可するのか?」という意味になります。
なお、ユーザーのくくりとしては、下図の通りロールのほかに下位ロールや、公開グループを選択することが可能です。
次に、ステップ2で「条件に基づく」を選択した場合についてみていきます。
下図の通り、ステップ3が変形して、項目や値を選択できる形式となっています。こちらに条件を設定すれば、あとは設定内容は同様です。条件は「検索条件ロジック」も使用可能です。(ANDとかORのこと)
まとめ
本記事では、Salesforceの共有設定と共有ルールについて詳しく解説しました。共有設定を利用することで、レコードの所有者以外のユーザーに対するデータの公開/非公開や編集可否を制御することができます。
さらに、共有ルールを活用することで、特定のレコード所有者やレコードの特定の項目値に基づいて、アクセス権を柔軟に設定することが可能です。
これらの機能は最初はとっつきにくいですが、資格試験にも頻繁に出てくるので覚えておいて損はないです。