制限ルールの考慮事項
制限ルールを使用している場合は、次の考慮事項と制限に注意してください。
必要なエディション
| 使用可能なインターフェース: Lightning Experience |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、Developer Edition |
使用可能なオブジェクト
- 制限ルールを作成する前に、組織の Salesforce Classic を無効にすることをお勧めします。Salesforce Classic 環境のエンドユーザーに対しては、制限ルールが意図したとおりに機能することを保証できません。
- 制限ルールは、カスタムオブジェクト、外部オブジェクト、契約、行動、ToDo、タイムシート、タイムシートエントリで使用できます。
- カレンダーで [詳細の表示] アクセスレベルが選択されている場合、ユーザーは作成された制限ルールに関係なく、すべての行動の件名を参照できます。詳細は、Salesforce ヘルプの「Lightning Experience での自分のカレンダーの共有」を参照してください。
適用可能な機能
- 制限ルールは、次の Salesforce 機能に適用されます。
- リンク
- リストビュー
- ルックアップ
- Records
- 関連リスト
- レポート
- 検索
- SOQL
- SOSL
- 制限ルールでは、レコード条件とユーザー条件でカスタム選択リスト値がサポートされます。制限ルールで使用されるカスタム選択リスト値を削除すると、ルールは意図したとおりに機能しなくなります。
- 制限ルールのレコード条件で参照項目が使用されており、関連レコードが存在しない場合、アクセス権は付与されません。
- [活動予定] や [活動履歴] などの活動関連リストの代わりに活動タイムラインを使用します。ToDo および行動で作成された制限ルールのうち、OpenActivity および ActivityHistory オブジェクトに存在しない項目を含むものは、活動関連リストでは機能しません。この動作は、リストが参照オブジェクト、関連オブジェクト、その他のコンテキストのいずれにあるかに関係なく適用されます。
- [活動予定] 関連リストと [活動履歴] 関連リストを使用している場合、制限ルールを適用すると、ユーザーがアクセスできる活動の数が 50 件以上であっても、表示されるレコード数が 50 件未満になることがあります。この動作は、これらのリストに表示されるレコード数が最大 50 件であり、制限ルールが後から適用されるために起こります。この動作は、既知の問題である「Limit of Fifty Records Visible in Related List View (関連リストビューに表示される 50 件のレコードの制限)」に関連しています。
- 制限ルールが適用された後でも、ユーザーはグローバル検索ボックスのショートカットで以前にアクセス権を持っていたレコードを表示できます。ユーザーがレコード名をクリックしてもレコードにはアクセスできず、エラーが表示されます。
- ユーザーは有効な制限ルールを適用している場合でも、カレンダーで部下の行動を参照できます。
- ユーザーが Chatter パブリッシャーを使用して行動または ToDo レコードを作成すると、関連する Chatter 投稿にレコード名が表示されます。制限ルールでは、これらのレコード名の表示は制限されません。
- ユーザーは、制限ルールのために参照できないレコードへのルックアップがあるレコードをコピーできません。たとえば、ユーザーが特定の契約レコードを参照できないようにする制限ルールがあり、そのユーザーが契約レコードへのルックアップがある注文レコードをコピーしようとしたとします。ユーザーにはエラーが表示され、コピー操作を続行できなくなります。
- 制限ルールは、システムモードで実行されるコードには適用されません。
- 「すべてのレコードの参照」または「すべてのデータの参照」権限を持つユーザーは、制限ルールに関わらずすべてのレコードを参照できます。「すべてのレコードの編集」または「すべてのデータの編集」権限を持つユーザーは、制限ルールに関わらず、すべてのレコードを参照、編集、削除できます。
- 制限ルールが適用されているユーザーは、レコードを検索したときに、一致する可能性のあるすべての結果を見つけられない場合もあります。パフォーマンス上の理由で、検索の上限が検索結果の件数に適用されます。ユーザーが探しているレコードがこれらの制限からはみ出す場合があります。最良の結果が得られるように検索を調整する方法は、「検索の上限超過による検索結果への影響」を参照してください。
- UserRecordAccess オブジェクトでは、ユーザーのアクセスが制限ルールによってブロックされているかどうかが考慮されません。ユーザーのアクセスが可能なことをクエリ結果が示しているにもかかわらず、ユーザーのアクセスがブロックされた場合、オブジェクトの制限ルールによってユーザーのアクセスが妨げられていないかを確認してください。
- 有効な制限ルールがあるオブジェクトで関連リストまたはレポートを並び替えたりグループ化したりすると、ユーザーには参照アクセス権のあるレコードの行のみが表示されます。
制限ルールの作成
- Enterprise Edition と Developer Edition ではオブジェクトあたり最大 2 つの制限ルールを作成でき、Performance Edition と Unlimited Edition ではオブジェクトあたり最大 5 つの制限ルールを作成できます。
- ユーザーごとに、各オブジェクトで 1 つの制限ルールまたは範囲設定ルールしか作成できません。つまり、あるオブジェクトで、特定のユーザーに対して [ユーザー条件] 項目を
trueと評価できるのは 1 つの制限ルールまたは範囲設定ルールのみです。 - オブジェクトに対する制限ルールを作成しても、その子オブジェクトへのアクセスが自動的に制限されるわけではありません。たとえば、契約オブジェクトに対する制限ルールを作成しても、影響を受ける契約レコードに関連付けられたメモに対するアクセス権は変更されません。これらの子オブジェクトを保護するには、他の共有メカニズムを使用する必要があります。
- [レコード条件] 項目を使用して別のオブジェクトの項目を参照できます。例については、「制限ルールのシナリオ例」を参照してください。
- レコード条件で ID を参照する場合は、18 文字の ID ではなく 15 文字の ID を使用します。
- ルールのレコード条件で、オブジェクトの親の項目を参照することはできません。たとえば、Task オブジェクトのルールを作成する場合、レコード条件は親の活動オブジェクトの項目を参照することはできません。
- [ユーザー条件] 項目と [レコード条件] 項目では、次のデータ型がサポートされます。
- boolean
- date
- dateTime
- double
- int
- reference
- string
- time
- 単一選択リスト
メモ [レコード条件] 項目では、カンマ区切りの ID または文字列値がサポートされます。 - 制限設定ルールでは EQUALS 演算子のみがサポートされます。AND および OR 演算子は使用できません。
- 数式は使用できません。
- 行動に招待者がいるかどうかを示す Event.IsGroupEvent に対してはルールを作成しないでください。
- 変更セットまたはロック解除済みパッケージを使用して、組織間で制限ルールを移動できます。
- ロール、レコードタイプ、プロファイル ID などの一部の ID は Salesforce 組織に固有です。これらの ID を [ユーザー条件] 項目または [レコード条件] 項目に含める場合、Sandbox 間または本番組織にルールをリリースするときにこの考慮事項に留意してください。制限ルールが元々他の場所で作成されている場合、対象組織でこれらの ID を変更する必要があります。
- [所有者] 項目を参照する場合、構文でオブジェクト種別を指定する必要があります。たとえば、行動オブジェクトの [所有者] 項目にはユーザーまたはキューを含めることができますが、制限ルールではキューがサポートされていません。そのため、条件でユーザーのみを許可する場合、レコード条件構文で Owner:User と指定する必要があります。
制限ルールと外部オブジェクト
- 制限ルールは、Salesforce Connect: OData 2.0、OData 4.0、および組織間アダプターを使用して作成された外部オブジェクトでのみサポートされます。
- 組織間アダプターを使用して作成された外部オブジェクトでは、ルールがユーザーに適用された場合に検索または SOSL がサポートされません。最近参照したレコードに一致する検索結果のみが返されます。
- Salesforce Connect カスタムアダプターを使用して作成された外部オブジェクトはサポートされません。
- 外部オブジェクトレコードデータは、Salesforce 外に保存されています。システム管理者は、外部オブジェクトで作成したルールが Salesforce または外部システムのパフォーマンスに悪影響が及ばないようにする責任を負います。すべての制限ルールと同様、特にレコード条件では、インデックス付けされているオブジェクト項目のみを使用することをお勧めします。
重要- 外部オブジェクトの制限ルールを編集または削除すると、追加のデータベースコールが発生し、外部データソースがコールごとに請求した場合に追加の請求が発生する可能性があります。
- 外部オブジェクトレコードの検索が有効になっている場合、検索には毎回追加のデータベースコールが必要です。外部オブジェクトレコードの検索を無効にすることで、追加料金を回避します。
- レコード条件で外部 ID を使用することはサポートされていません。
- 外部オブジェクトの制限ルールには、組織の共有設定や共有メカニズムは含まれません。
- 外部オブジェクトはオブジェクトマネージャーには表示されません。外部オブジェクトに移動するには、[設定] で [クイック検索] ボックスに「外部データソース」と入力し、[外部データソース] を選択します。このページのリストビューから外部オブジェクトを選択します。
- 外部オブジェクトの検索を無効にすることをお勧めします。
メモ [設定] の [最後に使用] リストで外部オブジェクトを見つけることもできます。
パフォーマンス上の考慮事項
- 制限ルールは、パフォーマンスの高い方法で共有のニーズをサポートするように作成されています。データ量とアーキテクチャもルールパフォーマンスに影響する要因です。
- ルールのパフォーマンスへの影響をテストするには、選択した API クライアントにレコード条件を使用してクエリを実行します。任意のユーザーで高速に機能すれば、そのルールは効率的に実行される可能性があります。データ量が多いオブジェクトの場合、レコード検索条件のパフォーマンスに 3 ~ 5% のオーバーヘッドを加えてください。
- パフォーマンスが低い場合は、パフォーマンスを低下させている項目を分離します。項目にインデックスを付ける場合は、Salesforce カスタマーサポートをご利用ください。
この記事で問題は解決されましたか?
ご意見をお待ちしております。

