tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:ロールについて

ロールについてです。設定によってどのようにレコードのアクセス件が変更されるかまとめてみようと思います。


検証用に次のロール階層を用意しました。

f:id:tyoshikawa1106:20131004215132p:plain


こんなユーザを用意してロールに割り当てました。

f:id:tyoshikawa1106:20131004215954p:plain


これで共有設定でどのようにアクセス権が変化するかをまとめてみます。

公開/参照のみ

共有設定のアクセス件を公開/参照のみに指定して検証します。公開/参照のみの場合は基本的に誰のレコードでもアクセスできます。ただし、更新権限はないため編集、削除はできません。

f:id:tyoshikawa1106:20131004221240p:plain

マネージャでログイン

マネージャの場合は下位ロールに存在するリーダー、第一、第二チームのユーザのレコードを編集、削除できます。同じ階層にいるロールユーザのレコードを編集、削除しようとするとアクセス件エラーが発生します。

f:id:tyoshikawa1106:20131005102334p:plain

リーダーでログイン

リーダーでログインすると下位ロールにいる第一、第二チームのユーザのレコードのみ編集、削除することができます。同じ階層、自分より上のシステム管理者とマネージャーユーザのレコードは編集、削除することができません。

f:id:tyoshikawa1106:20131005102835p:plain

第一チームでログイン

第一チームでログインすると下位ロールが存在しないので自分が所有しているレコードのみ編集、削除できます。同じ階層の第二チームのユーザのレコードと自分より上のシステム管理者とマネージャーユーザーのレコードは編集、削除できません。

f:id:tyoshikawa1106:20131005105426p:plain

第二チームでログイン

第一チームと同じ理由で自分が所有しているレコードのみ編集、削除できます。

f:id:tyoshikawa1106:20131005105705p:plain


共通して権限がないレコードを編集しようとすると次の画面が表示されます。

f:id:tyoshikawa1106:20131005105939p:plain


編集はできませんが、参照権限があれば子レコードを作成するのは可能です。例えば取引先の場合は取引先責任者を作成することができます。

f:id:tyoshikawa1106:20131005110231p:plain

公開/参照・更新可能

基本的にどのユーザのレコードでも参照でき、更に編集、削除も実行できます。

f:id:tyoshikawa1106:20131005111016p:plain


例えば第二チームのユーザが上位ロールのマネージャーのレコードに対して編集、削除が可能になります。

f:id:tyoshikawa1106:20131005111333p:plain

非公開

非公開に設定すると対象のユーザ以外はレコードを参照することができなくなります。不特定多数のユーザに公開したくない場合はこちらを利用します。ポータルユーザなど外部のユーザが存在する場合は非公開設定にしておかないと参照されてはいけないレコードにアクセスできてしまいます。

f:id:tyoshikawa1106:20131005123903p:plain

マネージャーでログイン

自分が所有するレコードと下位ロールのレコードのみ参照権限があるので同じ階層のシステム管理者のレコードは参照できなくなります。下位ロールユーザのレコードに対しての編集、削除は可能です。

f:id:tyoshikawa1106:20131005124837p:plain

リーダーでログイン

上位ロールのシステム管理者とマネージャーのレコードは参照できなくなります。

f:id:tyoshikawa1106:20131005125324p:plain

第一チームでログイン

下位ロールは存在しないので参照できるのは自分が所有するレコードのみになります。

f:id:tyoshikawa1106:20131005130318p:plain

第二チームでログイン

第一チームと同じで下位ロールが存在しないので参照できるのは自分が所有するレコードのみになります。

f:id:tyoshikawa1106:20131005130853p:plain


非公開に設定すると上記のようにアクセス件が厳しく制限されるようになります。
続いて少し特殊なケースについて検証してみます。

最近つかったデータの扱い

Salseforceには最近アクセスしたデータが表示される仕組みがあります。今まで参照権限があって途中から非公開になった場合について検証してみます。


最近使ったデータは非公開のレコードでも表示されます。

f:id:tyoshikawa1106:20131005131459p:plain


ただし、アクセスしようとするとアクセスエラーとなり参照できません。

f:id:tyoshikawa1106:20131005131730p:plain

URL直接指定によるアクセス

URL直接指定によるアクセスはあまりやることがないと思いますが、こういうアクセス方法もあります。またレポートのメール送信機能を使用しているとこれと同じ原理でアクセスされます。

この方法でも非公開に設定されているとアクセスエラーとなり参照することができなくなります。

非公開レコードに紐付く自分が所有する子レコードが存在する場合

非公開の取引先に自分が所有者の取引先責任者が存在しているケースです。所有者の変更などで発生する可能性があります。

例えばこんな感じのレコードです。

f:id:tyoshikawa1106:20131005132543p:plain


この場合は非公開になっている取引先を参照することができるようになります。所有権は除外したり取引先責任者を削除するとまたアクセスできなくなります。

f:id:tyoshikawa1106:20131005132852p:plain

別ロールに移動

第一チームのユーザが第二チームのロールに変更されたときのようなケースです。

f:id:tyoshikawa1106:20131005134421p:plain


ロールが変更されても所有者は自動では変更されないので自分が所有しているレコードは今まで同様参照可能です。ちなみに非公開の場合は同階層のユーザのレコードも参照できないので第二チームのロールに移動しても第二チームユーザのレコードは参照できません。

f:id:tyoshikawa1106:20131005134639p:plain

共有ルールの扱い

同じロールのユーザと自分の所有するレコードを共有したい場合は共有ルールを設定します。これで同じロールになった第一チームユーザも第二チームユーザのレコードを参照できるようになります。

f:id:tyoshikawa1106:20131005135244p:plain


こんな感じで参照できるようになっています。
f:id:tyoshikawa1106:20131005135454p:plain


このように共有ルールを設定することで同じロール内のユーザの情報なら共有できるようになります。では、この第一チームのユーザロールを元に戻した場合について確認してみたいと思います。

共有ルールの条件から外れるので第二チームロールのユーザの情報にはアクセスできなくなりました。

f:id:tyoshikawa1106:20131005140131p:plain


ロールについては大体こんな感じでした。