
【考察】Salesforceの権限セットの設計
おはようございます、いつきです。
今日は、権限セットの設計についての考察記事です。
テラスカイ様の記事にもあるように、今後プロファイルからオブジェクト権限などの管理がはがれる可能性があります。
それ以外にもプロファイルを中心とした運用は無理があります。
Sandboxが複数ある場合:プロファイルの先祖返りが発生してしまう
プロファイルの数が膨大になっている場合:各プロファイルの権限が把握しにくい
現在、チームで業務領域を分けてSalesforceの開発をしています。いままではプロファイル中心の運用をしており、更新するプロファイルが同一の場合が多くあったため、本番にあげてからアップデートするようにしていました。
現在は随時権限セットを利用する運用に移行しており、業務領域で分けられるので、上記のような懸念はなくなってきました。
しかしながら、実際にやってみると権限セットをどういった基準で作成するべきか試行錯誤しました。
業務領域+ロールベースの権限セット運用
現時点では、業務領域+ロールの権限セットを作成する方針で運用しています。
わかりやすく標準オブジェクトの範囲に絞って紹介します。
たとえば、キャンペーンを使ったリード獲得(マーケ)、リードから取引の開始(インサイドセールス)、商談(フィールドセールス)という3つの業務領域があるとします。

このとき、全業務領域共通の権限と、各領域ごとに権限セットを作成します。
共通
マーケ権限(一般)、マーケ権限(管理者)
インサイドセールス(一般)、インサイドセールス(管理)
フィールドセールス(一般)、フィールドセールス(管理)
標準オブジェクトだと共通に関わる権限セットが多くなりますが、各業務専用で利用するカスタムオブジェクトだとこの分け方が最もしっくりきています。共通をアップデートする場合は開発チーム全体で共有して、手動で本番を書き換えるか、Sandboxからアップデートするかは要相談。
共通、一般、管理者の設計
共通、業務領域ごとの一般・管理者の設計について軽く触れておきます。
たとえば、商談に関しては、以下のような設定をしていきます。

基本的には下位の権限を上書きしていく設計をしています。
そのため、たとえば、「IS管理者」には、商談の金額に関する設定はしていません。
逆に上書きしない設計をすることも可能ですが、運用コストがあがる可能性があります。たとえば、金額は「IS一般」では編集できるが、「IS管理者」では参照のみにするといったケースも考えられます。
この場合、ロールベースで設計している権限セットの構成では、ロール階層が増えるほど設定箇所が増えるため、設定ミスが発生する可能性があがります。
権限セットグループの運用
この上で、権限セットグループを作成します。
たとえば、IS(インサイドセールス)の担当、ISの管理者、IS・FSを統括する営業部の責任者の場合は以下のような権限セットグループを用意します。

権限セットの割当は、「ユーザー」レコードや「公開グループ」の情報を元にフローを起動させ自動的に割り当てをおこないます。
【参考】権限セットでやらないこと
権限セットではオブジェクトに関する「すべて表示」「すべて変更」は設定せず、共有ルールで管理するようにしています。
これは、事業展開で業務領域ごとに持つ権限の範囲が変わった場合を主に想定しています。
運用のベストプラクティスが欲しい
さて、ということで、今回は権限セットの設計について考察した内容を紹介しました。
この運用だと、権限セットが膨大になることは目に見えています。権限セットが膨大になることより、プロファイルをそのまま運用する方がリスクが大きいと判断しているとはいえ、これ以外に現状良い方法が思い当たらない状況です。
引き続きどのように運用していくのが良いか模索していきたいと思います。
それではまた来週!