カスタム権限って何?権限セットとの違いは?

今回はカスタム権限について、設定や使い方の備忘記事となります。
Winter’22から制限ルールというものがリリースされており、設定をする上でカスタム権限が使用されるとのことなので、まずは制限ルール手前の準備段階として押さえておいてください。

スポンサーリンク

カスタム権限とは

Salesforceにおける権限といえば、プロファイルや権限セットからオブジェクトやアプリケーション、レコードタイプやオブジェクト項目レベルセキュリティなど様々な権限を組み合わせて利用されています。

今回ご紹介するカスタム権限については、元々あるプロファイルや権限セットで付与できる権限以外のものをカバーする補助的に使用される権限となります。カスタムと付いているだけあって、システム管理者や開発者が柔軟に組み込みができる権限となっています。カスタム権限はそれら適用外のアクセスチェックに対して制限をかけることができます。

カスタム権限の作成

カスタム権限の管理は「カスタム権限を管理」に権限が付与されている必要があります。システム管理者などのレベルであれば基本付いています。
カスタム権限の管理

カスタム権限の作成は至ってシンプルです。
[設定]→[カスタム権限]でカスタム権限の管理ができます。
カスタム権限の作成は「新規」から実施することができます。
カスタム権限の新規作成

作成自体はシンプルで名前を定義するだけです。
任意で使用可能な接続アプリケーションを指定することも可能です。
カスタム権限の作成画面

また、カスタム権限は階層設定で構築することができます。
「必須カスタム権限」の関連リストの「編集」から必須カスタム権限の設定ができます。
必須カスタム権限の付与
親のカスタム権限が子に引き継がれるのではなく、親のカスタム権限が子のカスタム権限を自動的に所有している形になります

権限セットであれば、名前をつけた後は細かい機能(オブジェクト、項目、アプリケーションなど)の権限を設定していくんですが、カスタム権限にはそれがありません
あくまでユーザ単位で権限を持っているか否かで判断され、細かい制御についてはApexや制限ルールに委ねられます。

カスタム権限の付与

カスタム権限はユーザに直接付与することはできませんが、プロファイル・権限セットに対してカスタム権限を付与します。
プロファイル・権限セットに属するユーザにカスタム権限が付与されます。

プロファイルに対して有効化

プロファイル参照画面の関連リストに「有効になっているカスタム権限」がありますので、[編集]ボタンからプロファイルに付与したいカスタム権限を有効化指定します。
プロファイルからカスタム権限の付与
プロファイルに属するユーザに対して有効化したカスタム権限が付与されます。

権限セットに対して有効化

こちらもプロファイルと同様にカスタム権限の参照画面から「カスタム権限」のリンクでカスタム権限を付与することができます。
権限セットからカスタム権限の付与
カスタム権限に割り当てられたユーザにカスタム権限が付与されます。

カスタム権限にライセンスが付与されていると「カスタム権限」のリンクが表示されないようなので注意しましょう。
ライセンスが付与された権限セットはカスタム権限設置不可

カスタム権限の使い道

カスタム権限はあくまでプロファイルや権限セットで適用外のものに対して制限をかけます。

Apexコード内での処理分岐に使用

Apexのコード内でFeatureManagementクラスのcheckPermission関数でカスタム権限が付与されているかどうかを確認することができます。

FeatureManagement.checkPermission('カスタム権限API名')

実行者ユーザが該当のカスタム権限付与の有無をBoolean型で返却します(権限が付与されていればTrue)。

if(FeatureManagement.checkPermission('カスタム権限API名')){
    // カスタム権限が付与されているときの処理
}
else{
    // カスタム権限が付与されていないときの処理
}

コード内でカスタム権限の有無を判定することができるため、処理や画面の出しわけが可能です。

制限ルールから使用

Apex以外からだと、制限ルールという機能からカスタム権限所持によるレコードのアクセスルールを判断することができます。
こちらはまた別途制限ルールから作成する必要があるため、次回詳しくお伝えしたいと思います。

コメント