セキュリティデータフィルター

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:4分
  • セキュリティデータフィルターは、ロール、またはセキュリティ属性関連のアサーションに基づいてレコードへのアクセスを制限します。

    セキュリティデータフィルターの概要

    セキュリティデータフィルターを使用すると、ユーザーのロール、またはその他のセキュリティ属性関連のアサーションに基づいて、レコードへのアクセスを制限できます。セキュリティデータフィルターにより、データへのアクセス方法に関係なく、許可されたユーザーのみがレコードを表示できるようになります。セキュリティデータフィルターは、クエリが実行される前に適用されます。

    セキュリティデータフィルターの機能

    セキュリティデータフィルターの主な機能は次のとおりです。
    • セキュリティデータフィルターはクエリ内で適用されます。
    • セキュリティデータフィルター条件を、ターゲットテーブルのクエリに対して、および相互に AND にします。
    • セキュリティデータフィルターは canRead によりチェックされません。詳細については、「セキュリティデータフィルターの使用」を参照してください。
    • データフィルターのスコーピングルールはテーブルのスコープに基づいており、データフィルターは ScopeMaster または sys_scope スコープルールに従っていません。

    セキュリティデータフィルターの適用と実行

    一般に、セキュリティデータフィルターは、絶対 ACL (テーブルレベルの ACL とも呼ばれます) の後、行 ACL の前に適用されます。セキュリティデータフィルターはデフォルトで適用され、慎重に使用しないとシステムの動作に影響を与えます。デフォルトのセキュリティデータフィルターのリストについては、「デフォルトのセキュリティフィルターの場所」を参照してください。

    セキュリティデータフィルターは、デフォルトでは GlideRecordSecure、GlideRecordSandbox、および GlideAggregateSandbox クエリにのみ適用されます。2 つの新しい GlideRecord API enableSecurityFeaturedisableSecurityFeature があり、これらを 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 演算子の使用
    • フルテーブルスキャン

    セキュリティデータフィルターを作成するときは、 セキュリティデータフィルターパフォーマンス分析ツール を使用してパフォーマンスへの影響を評価し、責任を持ってセキュリティデータフィルターを適用していることを確認してください。