ロールについてです。設定によってどのようにレコードのアクセス件が変更されるかまとめてみようと思います。
検証用に次のロール階層を用意しました。
こんなユーザを用意してロールに割り当てました。
これで共有設定でどのようにアクセス権が変化するかをまとめてみます。
公開/参照のみ
共有設定のアクセス件を公開/参照のみに指定して検証します。公開/参照のみの場合は基本的に誰のレコードでもアクセスできます。ただし、更新権限はないため編集、削除はできません。
マネージャでログイン
マネージャの場合は下位ロールに存在するリーダー、第一、第二チームのユーザのレコードを編集、削除できます。同じ階層にいるロールユーザのレコードを編集、削除しようとするとアクセス件エラーが発生します。
リーダーでログイン
リーダーでログインすると下位ロールにいる第一、第二チームのユーザのレコードのみ編集、削除することができます。同じ階層、自分より上のシステム管理者とマネージャーユーザのレコードは編集、削除することができません。
第一チームでログイン
第一チームでログインすると下位ロールが存在しないので自分が所有しているレコードのみ編集、削除できます。同じ階層の第二チームのユーザのレコードと自分より上のシステム管理者とマネージャーユーザーのレコードは編集、削除できません。
第二チームでログイン
第一チームと同じ理由で自分が所有しているレコードのみ編集、削除できます。
共通して権限がないレコードを編集しようとすると次の画面が表示されます。
編集はできませんが、参照権限があれば子レコードを作成するのは可能です。例えば取引先の場合は取引先責任者を作成することができます。
公開/参照・更新可能
基本的にどのユーザのレコードでも参照でき、更に編集、削除も実行できます。
例えば第二チームのユーザが上位ロールのマネージャーのレコードに対して編集、削除が可能になります。
非公開
非公開に設定すると対象のユーザ以外はレコードを参照することができなくなります。不特定多数のユーザに公開したくない場合はこちらを利用します。ポータルユーザなど外部のユーザが存在する場合は非公開設定にしておかないと参照されてはいけないレコードにアクセスできてしまいます。
マネージャーでログイン
自分が所有するレコードと下位ロールのレコードのみ参照権限があるので同じ階層のシステム管理者のレコードは参照できなくなります。下位ロールユーザのレコードに対しての編集、削除は可能です。
リーダーでログイン
上位ロールのシステム管理者とマネージャーのレコードは参照できなくなります。
第一チームでログイン
下位ロールは存在しないので参照できるのは自分が所有するレコードのみになります。
第二チームでログイン
第一チームと同じで下位ロールが存在しないので参照できるのは自分が所有するレコードのみになります。
非公開に設定すると上記のようにアクセス件が厳しく制限されるようになります。
続いて少し特殊なケースについて検証してみます。
最近つかったデータの扱い
Salseforceには最近アクセスしたデータが表示される仕組みがあります。今まで参照権限があって途中から非公開になった場合について検証してみます。
最近使ったデータは非公開のレコードでも表示されます。
ただし、アクセスしようとするとアクセスエラーとなり参照できません。
URL直接指定によるアクセス
URL直接指定によるアクセスはあまりやることがないと思いますが、こういうアクセス方法もあります。またレポートのメール送信機能を使用しているとこれと同じ原理でアクセスされます。
この方法でも非公開に設定されているとアクセスエラーとなり参照することができなくなります。
非公開レコードに紐付く自分が所有する子レコードが存在する場合
非公開の取引先に自分が所有者の取引先責任者が存在しているケースです。所有者の変更などで発生する可能性があります。
例えばこんな感じのレコードです。
この場合は非公開になっている取引先を参照することができるようになります。所有権は除外したり取引先責任者を削除するとまたアクセスできなくなります。
別ロールに移動
第一チームのユーザが第二チームのロールに変更されたときのようなケースです。
ロールが変更されても所有者は自動では変更されないので自分が所有しているレコードは今まで同様参照可能です。ちなみに非公開の場合は同階層のユーザのレコードも参照できないので第二チームのロールに移動しても第二チームユーザのレコードは参照できません。
共有ルールの扱い
同じロールのユーザと自分の所有するレコードを共有したい場合は共有ルールを設定します。これで同じロールになった第一チームユーザも第二チームユーザのレコードを参照できるようになります。
こんな感じで参照できるようになっています。
このように共有ルールを設定することで同じロール内のユーザの情報なら共有できるようになります。では、この第一チームのユーザロールを元に戻した場合について確認してみたいと思います。
共有ルールの条件から外れるので第二チームロールのユーザの情報にはアクセスできなくなりました。
ロールについては大体こんな感じでした。