この記事では、 Salesforce の プロファイル と 権限セット の適切な定義方針について紹介します。
一般的に、 Salesforce を導入する際には複数のプロファイルを定義しがちですが、それによって後々のメンテナンス性を損ねてしまう恐れがあるので、本記事が参考になれば幸いです。
Salesforce の プロファイル とは
ユーザに対して必ず設定しなければならない権限です。
幅広い用途があるので、詳細は公式サイトをご確認ください。
本ページに辿り着いている人は特徴は知っている前提で進めます。
ご容赦ください。
簡単に図にまとめました。
プロファイルでは、そのユーザがどのオブジェクトや項目にアクセスできるかを中心とし、様々な権限が管理できます。
Salesforce の 権限セット とは
権限セットは、さまざまなツールと機能へのアクセス権をユーザーに付与する設定と権限のコレクションです。権限セットは、ユーザーのプロファイルを変更することなくユーザーの機能アクセス権を拡張するもので、ユーザーの権限を管理するために推奨される方法です。
と、公式サイトで記載されています。
特徴をまとめると、プロファイルの権限に加え、様々な権限を柔軟に拡張できる点が大きな違いといえます。
設定画面では、同じような設定を行う UI となっているので、使い分けに悩む方もいるかもしれません。
Salesforce の権限の考え方
Salesforce では、原則として 「小さく権限を与え」「拡張する」 が一般的な考え方です。
なぜなら、 Salesforce では権限を付与することはできても、権限を剥奪することは想定していないからです。
※ミュート権限など、特殊な設定はありますが、原則の考え方からは外れます。
そのため、 プロファイル で過剰な権限を設定してしまうと、後から権限が大きすぎて苦労する場面が出てきてしまうかもしれません。
プロファイル は最小限の権限設定にし、 権限セット で追加の権限を与える方法が普通(ベストプラクティス?)だと思います。
具体的な プロファイル や 権限セット の定義の仕方
ここまで述べたように、本来はプロファイルは最小限の権限設定にする必要がありますよね。
以下は私の見解ですが、IP制限や特殊なポリシーの制約、営業時間など、プロファイル単位で資源すべき特殊な要件がない限りは、 「標準ユーザ」 とか 「一般ユーザ」 と言った汎用的なプロファイルを定義し、基本的にはそのプロファイルを定義するようにすべきだと思っています。
運用面でも複雑さがかなりなくなる上に、メンテナンス対象のメタデータも最小限で済むからです。
そして、営業担当なら 「営業ユーザ」、上司なら 「上司ユーザ」 のような、追加の権限セットを定義しておけば、つけ外しだけで済むのです。
これがプロファイルレベルで管理されていたら、リリース作業のたびに絶望することになりますよ。
※この絶望的なプロファイルのメタデータ管理のお話はいずれ・・・。
じゃあレイアウト分けはどうするのさ
プロファイルレベルで管理する必要がある機能の代表格が、 Lightning レコードページだと思います。
正直、よっぽどの要件がない限りはアプリケーションで統一した方がいいと思うのですが、稀に、細かく分けないといけない面倒な場合があります。
そういう場合でもいくつか回避方法があります。
動的フォームの使用
最近リリースされた機能ですね。 Lightning レコードページで動的フォームを活用し、ユーザーの役割や権限に基づいて表示するフィールドを動的に制御できます。
これで、レイアウトを条件によって出し分けるためにプロファイルを分けなくて済みます。
条件付きコンポーネントの利用
Lightning レコードページ上で、コンポーネントの表示条件を設定できます。
レコードの項目値だったり、ユーザの情報であったり。
特定の条件(ユーザーの役割や権限など)に基づいて表示・非表示を制御できるなら、カスタム権限を定義して、その権限セットの有無で管理すればいいだけです。
わざわざプロファイルを分ける必要もありませんよね。
おわりに
このように、工夫次第でなんとでもなるのです。
適当にプロファイルを分ける提案をしてしまうのは簡単ですが、メンテナンス性も考慮して、それが本当に最適の提案になっているかは確認してほしいものです。
こういうところが腕の見せ所です。
私は少なくとも最善を尽くす提案をするよう心がけています。
カスタマーサクセスが結局自分のためになるので。
コメント