セキュリティデータフィルター
セキュリティデータフィルターは、ロール、またはセキュリティ属性関連のアサーションに基づいてレコードへのアクセスを制限します。
セキュリティデータフィルターの概要
セキュリティデータフィルターを使用すると、ユーザーのロール、またはその他のセキュリティ属性関連のアサーションに基づいて、レコードへのアクセスを制限できます。セキュリティデータフィルターにより、データへのアクセス方法に関係なく、許可されたユーザーのみがレコードを表示できるようになります。セキュリティデータフィルターは、クエリが実行される前に適用されます。
セキュリティデータフィルターの機能
セキュリティデータフィルターの主な機能は次のとおりです。
- セキュリティデータフィルターはクエリ内で適用されます。
- セキュリティデータフィルター条件を、ターゲットテーブルのクエリに対して、および相互に AND にします。
- セキュリティデータフィルターは
canReadによりチェックされません。詳細については、「セキュリティデータフィルターの使用」を参照してください。 - データフィルターのスコーピングルールはテーブルのスコープに基づいており、データフィルターは ScopeMaster または sys_scope スコープルールに従っていません。
セキュリティデータフィルターの適用と実行
一般に、セキュリティデータフィルターは、絶対 ACL (テーブルレベルの ACL とも呼ばれます) の後、行 ACL の前に適用されます。セキュリティデータフィルターはデフォルトで適用され、慎重に使用しないとシステムの動作に影響を与えます。デフォルトのセキュリティデータフィルターのリストについては、「デフォルトのセキュリティフィルターの場所」を参照してください。
セキュリティデータフィルターは、デフォルトでは GlideRecordSecure、GlideRecordSandbox、および GlideAggregateSandbox クエリにのみ適用されます。2 つの新しい GlideRecord API
enableSecurityFeature と disableSecurityFeature があり、これらを Java スクリプトとサーバー側スクリプトの両方で使用して、特定のクエリのデータフィルターを有効または無効にすることができます。 重要:
GlideRecordSecure を使用していないユーザー向けクエリーのデータフィルターを明示的に有効にする必要があります。
セキュリティデータフィルターの使用
セキュリティデータフィルターは、次の場合に最適です。
- 機密データがデータベースから流出するのを防ぐ
- 「セキュリティにより非表示になっている行 (rows hidden by security)」メッセージを抑制する
- レポートを介した機密データの漏洩を防ぐ
セキュリティデータフィルターを使用する場合は、次の点に注意してください。
- 可視化コントロールとして
- フィルター条件が多数ある場合
- インデックスのない列で
セキュリティデータフィルターの動作
AND でオペランドを組み合わせるように、評価のために複数のセキュリティデータフィルターを組み合わせます。たとえば、次の 3 つのセキュリティデータフィルターがあるとします。- フィルター 1:`active=true
- フィルター 2:
priority=1 - フィルター 3:
state=open
SELECT * FROM task WHERE state != closed AND active = true AND
priority = 1最後のクエリは次のとおりです。SELECT * FROM task WHERE state != closed
AND active = true AND priority = 1 AND state = openセキュリティデータフィルターと ACL の適用方法における重要な違いの 1 つは、親テーブルからデータが照会されるときに、子テーブルのデータフィルターが親テーブルに適用されないことです。子テーブルと親テーブルの両方にデータフィルターを追加して、親テーブルのレコードへのアクセスを制限します。
注:
これに対する一般的なソリューションは、親テーブルの子レコードを完全に非表示にするデータフィルターを親に追加することです。
セキュリティデータフィルター パフォーマンスに関する考慮事項
セキュリティデータフィルターは、慎重に使用しないと、システムパフォーマンスに影響を与え、クエリとページのロード時間を遅らせる可能性があります。クエリの実行には、次の 3 つの主要な要因があります。
- 適用されたフィルターの数
- ユーザークエリの複雑さ
- 条件付きで適用されるフィルターの複雑さ
計算コストを増加させる使用例を次に示します。
- インデックスのない列のクエリ
- contains 演算子の使用
- フルテーブルスキャン
セキュリティデータフィルターを作成するときは、 セキュリティデータフィルターパフォーマンス分析ツール を使用してパフォーマンスへの影響を評価し、責任を持ってセキュリティデータフィルターを適用していることを確認してください。