オブジェクトマネージャーにひっそりと存在するRestriction RulesとScoping Rules。これらの機能を実際に自分で設定して調査してみました。
使い方によっては効果を発揮しそう・そしてこれからSalesforceとして機能強化していきそうな領域なので、ぜひチェックしてみてください。
Salesforceの制限ルール(Restriction Rules)と範囲設定ルール(Scoping Rules)とは?
いつしかオブジェクトマネージャーにRestriction Rules、そしてScoping Rulesが表示されていることに気づいていましたでしょうか。
制限ルール(Restriction Rules)と範囲設定ルール(Scoping Rules)は、Salesforceのレコードごとのアクセスを制限したり、適切なアクセス範囲を細かく定義するための機能です。

従来、Salesforceにはレコードのアクセス制御をおこなうために大きく分けて2つの方法がありました。
- 共有設定
- レコードの所有者以外が当該レコードにアクセスできるかどうかを定義する機能。
- 共有ルールを使用して「所有者が○○だったら」or「対象レコードの項目が○○だったら」アクセス権を広げることが可能。
- プロファイルのオブジェクト権限
- プロファイルのオブジェクト権限にて参照・編集などにチェックがついているオブジェクトしかアクセスできない。
- プロファイル×オブジェクトで丸ごとアクセス制限をするのでレコードベースの権限ではない。
- プロファイルに権限セットを重ねがけしても制限を強化は出来ない。権限セットで出来るのは緩和だけ。
制限ルール(Restriction Rules)と範囲設定ルール(Scoping Rules)は、上記2種類のアクセス権限制御機能がベースとしてあるうえで、それに加えて、後付けでさらに細かくレコードの表示を制御する機能です。
ここで「レコードの表示」と記載したのは、制限ルールはアクセス権、範囲設定ルールは絞り込み条件に該当するもので、微妙に役割が違うため、抽象化してお伝えするしかなかったためです。続いて具体的にそれぞれの役割と、違いについて解説します。
制限ルール(Restriction Rules)の特徴
制限ルールは、プロファイルやロール、部署などユーザーに属する情報をもとにして、どんなレコードにアクセスできるのかを定義する機能です。逆に言えば、定義したレコード以外へのアクセス権を制限するという考え方になります。

制限ルールはカスタムオブジェクト、外部オブジェクト、契約、todo、行動でのみ使用できます。(Helpより)
Enterprise エディションと Developer エディションではオブジェクトごとに最大 2 つの制限ルールを作成でき、Performance エディションと Unlimited エディションではオブジェクトごとに最大 5 つの制限ルールを作成できます。
範囲設定ルール(Scoping Rules)の特徴
範囲設定ルールは、ユーザーに属する情報をもとにして、どんなレコードを絞り込むのかを定義する機能です。
リストビューやレポートなどで「すべての取引先」とか、「私の取引先」で、レコードをフィルタリングすることがあると思います。範囲設定ルールはそのイメージに近く、あくまでも絞り込み範囲を定義するだけであって、ルールの対象外となっているレコードへのアクセス権がはく奪されるわけでなありません。

範囲設定ルールは、リストビュー、レポート、SOQLで使用できます。(Helpより)

範囲設定ルールは、カスタムオブジェクトと、取引先、ケース、取引先責任者、todo、行動、リード、商談で使用できます。
エディションごとの作成個数については制限ルールと同様です。
制限ルールと範囲設定ルールの違い
ここまでお読みいただければもうお分かりかと思いますが、制限ルールと範囲設定ルールは全く違う機能です。
制限ルールがレコードへのアクセスを制限する機能であることに対し、範囲設定ルールは飽くまでも絞り込み条件を提供する機能であり、対象外のレコードへのアクセス権は保持します。
制限ルール(Restriction Rules)と範囲ルール(Scoping Rules)の設定方法
一方で、制限ルールと範囲設定ルールの「設定方法」に関しては差異はありません。本記事では制限ルールの画面をもとにして設定していきますが、選択できる項目や演算子などは同一になります。
オブジェクトマネージャーを開き、サイドメニューからRestriction Rulesを選択します。下図の画面になりますので、新規ルールを作成ボタンをクリックします。

次に下図の画面に切り替わりますので、項目ごとに見ていきます。

- ルール名:表示ラベルにあたります。
- 氏名:API参照名にあたります。
- 有効:有効無効がありますので、忘れずにチェックしましょう。
さらに同じ画面で、下にスクロールしていきます。

- 条件種別:触ってみると分かりますが事実上、ユーザー条件しか選べません。
- 項目:ユーザーID、マネージャーID、プロファイルIDなどユーザー系の項目を使用できます。
- 演算子:一致条件のみ選べます。
- 種別:文字列と現在のユーザー、日付など限定された種別を選べます。
- 値:ここはIDなどを入れます。
さらに下にスクロールします。

項目を選択すると、下図のような馴染みのある選択画面が出てきます。

演算子や種別、値に関して入力していき、保存すれば完了です。
ただし、下図のように日付で何月以降の~など、やりたくなりますが、演算子に不等号が使えないです。活用シーンとしてはIDや文字列をメインとして、固定で指定していくやり方になるのかなと思います。

公式のシナリオがあるようなのでご参考までに。
まとめ
本記事では制限ルールと範囲設定ルールの概要、違い、そして設定方法を詳細に解説しました。
制限ルールはアクセスを制御し、レコードにアクセスできなくなるが、範囲設定ルールは検索条件であり、レコードへのアクセスは可能、というのが大きな違いでした。
また設定面では、両者の設定方法はほとんど同じで、選択できる演算子には制限がある点が注意点でした。
今後も機能追加されていきそう・かつもっと便利にできそうな気がする機能なので、今後も目が離せないですね。