【Salesforce】アクセス制御のポイント
今回はSalesforceのアクセス制御のポイントについて、わたしが感じていることを記載してみます。
1.まずSalesforceとは?
まずはじめに「Salesforceとは?」を簡単に記載します!
Salesforceはクラウド上で稼働する営業支援ツールです。
以前のブログでも簡単に紹介させていただいたので、そちらもご覧いただけたら幸いです。
2.適切なアクセス制御設定
「まずSalesforceとは?」で記載した通り、Salesforceは下記2点を強みとしています。
※下記以外にもありますが、根幹としては下記2点になると思います。
・統一したプラットフォームを提供する
・情報共有が手軽にできる
反対に、適切なアクセス制御を設定しないと、不用意な情報・見せてはいけない情報が共有されてしまう危険性があります。
<例>
・採用部門以外に求職者の個人情報がみえてしまう。
・他支店の顧客の口座情報がみえてしまう。
なので、Salesforceを導入・開発する場合は、この「適切なアクセス制御の設定」が必要不可欠になります。
次章からアクセス制御設定について記載しますが、前提として下記の基本用語を使用しますので、ここで整理したいと思います。
・オブジェクト : 情報の塊を定義した箱
・項目 : 具体的な値の定義
・レコード : オブジェクトに含まれる1つ(1行)の情報
エクセルの表で表すと下記のような関係になります。
また、今回は考え方を記載する予定です。
それぞれの細かい設定方法は記載しない予定ですのでご了承ください。
3.オブジェクトへの制御
まずはオブジェクトへの制御です。
これを制御することによって、箱(エクセルでいう表)そのものを見せる/見せないが制御できます。
オブジェクトの制御は、ユーザのプロファイル設定で設定可能です。
Salesforceには標準でたくさんのオブジェクトがありますが、それらもすべてプロファイルで制御できます。
プロファイルの設定画面に「標準オブジェクト権限」という欄があるので、
ここから各オブジェクトごとに各項目の設定が可能です。
※カスタムオブジェクトを作成した場合も、プロファイルから設定可能です。
下の画像がSalesforceプロファイル設定画面のサンプルです。
「API異常イベントストア」などがオブジェクト名です。
※上記画面の出し方
Salesforceにログイン
⇒ 右上のギアアイコンから「設定」を選択
⇒ 設定ホームから「ユーザ > プロファイル」を選択
各オブジェクトごとに、「参照」「作成」「編集」「削除」の権限を設定できます。
ここで作成した「プロファイル」を各「ユーザ」に割り当てることで、『誰がどのオブジェクトを使用できる/できないのか』を制御することができます。
4.項目への制御
オブジェクトの制御ができたら、次は項目の制御になります。
これを制御することによって、特定の項目をユーザによって使用できる/できないが制御できます。
<例>
営業担当者はすべての項目が参照・編集可能
アシスタントはシークレット項目(口座番号など)を参照不可
こちらも「ユーザ ≒ プロファイル」で制御します。
プロファイルの設定画面に「項目レベルセキュリティ」という欄があるので、
ここから各オブジェクトごとに項目の制御設定が可能です。
5.レコードへの制御
最後にレコードへの制御を行います。
これを行うことにより、1つのオブジェクト内で人によって参照・編集可能なデータ(レコード)の出しわけが可能になります。
<例>
ほかの支店が管轄する「取引先」のレコードは参照できない
レコードへの制御を実現するには4つのステップがあります。
①>②>③>④の順に、柔軟な設定ができるようになります。
①共有設定
②ロール設定
③共有ルール
④ 個別共有
それぞれについて、みていきましょう!!
①共有設定
オブジェクト単位に、レコードの共有方法を規定します。
レコードへの制御について、組織の基本方針を設定することになります。
<例>
取引先 : 公開/参照・更新可能
商談 : 非公開
⇒「取引先」は、組織に所属する全員が参照・更新可能
「商談」は、レコードの所有者(≒作成者)のみ参照・更新可能
主に割り当てられる権限は、以下です。
1)非公開
レコードの所有者(≒作成者)のみが参照・更新可能
2)公開/参照のみ
組織に所属する全員が参照可能
更新はレコードの所有者(≒作成者)のみが可能
3)公開/参照・更新可能
組織に所属する全員が参照・更新可能
②ロール設定
組織階層(=ロール)をSalesforceに設定することで、階層を意識したレコードの制御ができます。
<例>
営業本部
|ー東京営業部
|ー関西営業部
上記<例>のように設定すると、
・「東京営業部」のレコード
⇒「営業本部」、「東京営業部」のユーザが参照可能
・「関西営業部」のレコード
⇒「営業本部」、「関西営業部」のユーザが参照可能
③共有ルールの設定
上記①②で設定できないような例外を「共有ルールの設定」で回避できます。たとえば「兼務」などがあった際に対応できます。
<例>
営業本部
|ー東京営業部
|ー第1部(部長:佐藤さん (2部兼務))
|ー第2部(部長:佐藤さん (1部兼務))
|ー第3部(部長:田中さん)
上記の場合、佐藤さんは1部/2部両方のデータを参照する必要があります。
しかしロール設定だけではそれが満足にできません。
※Salesforceのロールは、1ユーザに1ロールしか割り当てできません。
そこで「共有ルール」を作ってあげることで、
佐藤さんが1部/2部両方のデータを見るようにすることができます。
④個別の共有設定
こちらは1レコードごとに個別に共有設定をするものです。
対象のレコードにアクセスできるユーザが、レコード詳細画面から手動で共有を設定できます。
共有の設定についてはTrailhead(Salesforceの学習ができるオフィシャルサイト)が参考になります。
レコードへのアクセスの制御 単元 | Salesforce Trailhead
6.まとめ
いかがでしたでしょうか。
やや複雑な話になってしまった気がしますが、簡単にまとめると以下のようになります。
(1)オブジェクトへの制御を決める
⇒プロファイルから設定
(2)項目への制御を決める
⇒プロファイルから設定
(3)レコードへの制御を決める
⇒共有設定、ロール設定、共有ルール、個別共有で設定
また、アクセス制御の設定について、下記の順番で制限が強いものから設定していくと良いです!
・オブジェクトや項目単位でプロファイル標準の制御を作る
・共有設定で組織標準のレコード制御を作る
・ロール、共有ルール、個別設定で柔軟な共有ルールをつくる
以上、Salesforceのアクセス権限についての基本的な考え方でした。
以下はおまけです。
<<おまけ>>
「レコード単位での柔軟な制御はできるけど、オブジェクト単位はできないの?」という疑問がありますね!
<例>
営業担当者:「取引先」「商談」オブジェクトが参照可能
営業アシスタント:「取引先」オブジェクト参照可能、「商談」オブジェクト参照不可
ここで、『一部のアシスタントさんは「商談」オブジェクトを参照させたい』という要件が出てきたとします。
ここではオブジェクトの参照制御ということで、ロール設定や共有ルールなどのレコードへの制御では実現できません。
そこで、プロファイルでの制御となるのですが、プロファイルをそのまま変えてしまうと「一部のアシスタントさん」ではなく「そのプロファイルが割り当てているすべてのアシスタントさん」に参照権限を渡してしまうことになります。
解決策としては、下記2点。
▲「一部のアシスタントさん」用のプロファイルを作る
⇒似たようなプロファイルが2つできてしまうので、メンテナンス性に欠けます。
〇「権限セット」を利用する
⇒プロファイルで制御しきれないオブジェクトに対する柔軟な制御ができます。イメージとしては「共有ルール」のオブジェクト版です。
詳しくは、下記ご覧ください!!
以上です。