MENU
Abo
某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Salesforce】Salesforceの権限設定を整理してみた

Salesforceには権限設定がたくさんあり、用途に応じて使い分けが必要なのですが、どんな時にどの設定を使用すればいいのかたまに困惑してしまいます。

備忘録もかねて、以下の権限設定あたりを私なりにまとめてみました。

目次

オブジェクトへのアクセス制御

オブジェクト権限

オブジェクト権限とは、

ユーザがアクセスできるオブジェクトと、そのオブジェクトのレコードに対してユーザが実行できるアクション(参照・作成・更新・削除)を制御するもの

です。

「設定>ユーザ>プロファイル」から、プロファイルごとに設定します。

オブジェクト権限は、Salesforceの数ある権限設定の中でも特に強い権限設定であり、オブジェクトに対する根本的なアクセス権を制御できるみたいです。

根本から遮断とは。。。
これは「最強の権限設定」ですね。

設定内容は以下のようになっています。

スクロールできます
設定権限内容ONの場合OFFの場合
参照レコードの参照権限参照可(共有設定に依存)参照不可
作成レコードの作成権限作成可作成不可
編集 レコードの編集権限 編集可(共有設定に依存) 編集不可
削除 レコードの削除権限 削除可(共有設定に依存) 削除不可
すべて表示 全レコードの参照権限 全レコード参照可共有設定に依存
すべて変更 全レコードの編集権限 全レコード編集可共有設定に依存

レコードへのアクセス制御

続いて、レコード単位でのアクセス制御です。
4つ順番に見ていきます。

組織の共有設定

組織の共有設定では、

誰がそのレコードにアクセスできるのか

を制御します。

「設定>セキュリティ>共有設定」からオブジェクトごとに設定します。

組織の共有設定では、レコードへのアクセス権を以下のように設定することができます。

スクロールできます
設定レコードの参照レコードの編集レポートの実行備考
非公開レコードの所有者と
階層内でそのロールの上位にあるユーザのみ(※)
レコードの所有者と
階層内でそのロールの上位にあるユーザのみ(※)
レコードの所有者と
階層内でそのロールの上位にあるユーザのみ(※)
※階層を使用したアクセス許可がONの場合
公開/参照のみすべてのユーザレコードの所有者と
階層内でそのロールの上位にあるユーザのみ(※)
すべてのユーザ ※階層を使用したアクセス許可がONの場合
公開/参照・更新可能すべてのユーザすべてのユーザすべてのユーザ
親レコードに連動 親レコードに依存 親レコードに依存 親レコードに依存
公開/参照・更新・所有権の移行すべてのユーザすべてのユーザすべてのユーザケース・リードのみ
公開/フルアクセス すべてのユーザ すべてのユーザ すべてのユーザ キャンペーンのみ

組織の共有設定を設定するうえで押さえておく大切なことは、
組織の共有設定では、オブジェクト権限を越えるレベルの権限をユーザに付与できない
ということです。

つまり、オブジェクト権限で「参照不可」の設定になっているオブジェクトに対し、 組織の共有設定で「公開/参照のみ」を設定したとしても、該当のプロファイルのユーザがそのレコードを参照することはできないということです。

うーん、やっぱりオブジェクト権限は最強ですね。

ロール階層

ロールは基本的に共有設定と共に設定するし、

誰がそのレコードにアクセスできるのか

を制御します。

ロールは、ツリー形式(階層)になっていて、上の階層にいくほど権限の範囲が広くなります。課長より部長のほうが、部長より社長の方が権限が強いのと同じ考えですね。

ロールの特徴としてはこんな感じです↓

  • 自分より上位のロールのユーザが所有者のデータは参照できない。
  • 自分と同じ階層、自分よりも下位の階層のユーザが所有者のデータは参照できる。

ロール階層によるアクセス権の付与を行いたい場合は、共有設定の「階層を使用したアクセス許可」をONにします。
デフォルトではONになっているそうです。

共有ルール

共有ルールは、組織の共有設定の例外みたいなものととらえるのが分かりやすいですかね。

「設定>セキュリティ>共有設定」からオブジェクトごとに設定します。 (組織の共有設定の下の方にあります)

前述したようにレコードに対するアクセス権は基本的に、組織の共有設定とロールの組み合わせによって制御されます。

しかし、レコードのアクセス権をロールの階層構造外に拡大したい!もしくは、ロールやプロファイルが異なるユーザで構成された「グループ」に付与したい!といった時には、 共有ルール を作成して、共有設定やロールに例外を作ってあげる必要があるんですね。

共有ルールは以下の要素で構成されています。

  • どのレコードを共有するか
  • どのユーザと共有するか
  • どのアクセス権を付与するか(参照のみ/参照・更新)

とてもシンプル。

組織の共有設定とロールと共有ルールを組み合わせることで、レコードへのアクセス権を細かく制御することが可能になります。

共有の直接設定

ここまで、レコードへのアクセス権制御の方法として、「組織の共有設定」、「ロール」、「共有ルール」を見てきましたが、もう一つの方法として「共有の直接設定」があります。

共有の直接設定は以下の方法で行います。

  • 「共有ボタン」による設定
  • Apexによる設定

まず、「共有ボタン」による設定ですが、レコードの詳細ページの共有ボタンを押下して、そのレコードの共有先を指定します。

「共有ボタン」がレコード詳細ページに見当たらない場合は、以下のことを確認してみてください。
・ページレイアウトに「共有ボタン」が追加されていない
・組織の共有設定で、対象のオブジェクトが「公開/参照・更新可能」になっている(共有の必要性がない)

レコード詳細の「共有ボタン」 を押下。

ここで共有先を指定します↓

続いてApexによる制御ですが、それぞれのオブジェクトに対応するshareオブジェクトを使用します。

こちらはまた別途まとめることにします。

公式のレファレンスはこちらです >> 「Apexを使用したレコードの共有

項目へのアクセス制御

項目レベルセキュリティ

さて最後は、項目のアクセス制御です。

オブジェクト権限が、ユーザのオブジェクトに対する権限を制御するのに対し、項目レベルセキュリティは、

オブジェクトの項目に対する権限(参照・編集権限)を制御

します。

「設定>ユーザ>プロファイル>」、もしくは各オブジェクトの項目から設定します。

使い方の例としては以下のような感じです。

あるプロファイルの取引先責任者のオブジェクト権限を、編集可に設定。
同プロファイルの項目レベルセキュリティで、取引先責任者の「電話」と「メール」項目を参照のみに設定。
⇒特定の項目の編集権限の制限に成功

まとめ

今回はそれぞれの権限設定の概要をざっくりとまとめてみましたが、

どのようにそれらの設定をくみ上げていけばいいのかについても今後整理していきたいと思います。

権限周りは本当にややこしいですね。。。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
新卒文系からエンジニア就職。
日々の学びをつらつらと書いています。
保有資格:Salesforce認定アドミニストレーター
     Salesforce認定Platformデベロッパー
     Salesforce認定上級Platformデベロッパー

コメント

コメントする

CAPTCHA


目次