クエリー ACL

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:3分
  • クエリー ACL を使用すると、データをクエリーできるユーザーを明示的に定義することで、より詳細なアクセス制御を定義できます。

    クエリー ACL とは

    クエリー ACL の操作は、query_range または query_match に設定されています。クエリー ACL を使用すると、ユーザークエリーをより細かく制御でき、 セットアップに基づいてアクセスを制限または有効化できます。クエリー ACL は、ブラインドクエリー攻撃 (データの値が見えていなくても、攻撃者がクエリーを盲目的に実行し、結果から情報を抽出する攻撃) に対抗する強力なツールです。

    クエリー ACL を使用する状況

    列に機密情報の値が含まれていて、データへの部分的/条件付きアクセスが許可されている場合は、データの機密性に基づいて、クエリー ACL の使用を検討し、必要に応じて実装する必要があります。テーブル内の行とその列への部分的/条件付きアクセスがある場合、特にそのアクセスがデータフィルターによって強制されていない場合は、データの機密性に基づいて、必要に応じてクエリー ACL を実装する必要があります。

    注:
    一部の行または列にアクセスでき、他の行や列にはアクセスできないユーザーがいる場合は、クエリー ACL の使用を検討してください。

    給与クエリーの制御

    給与テーブルには、ユーザー自身の給与が含まれている行がありますが、給与が 2 つの境界内に含まれているユーザーをクエリーする範囲クエリーをユーザーが発行することはできません。給与に対して query_range ACL を設定すると、ユーザーはそのようなクエリーを発行できなくなります。

    HR クエリーの制御

    ユーザーは、すべての hr_profiles を表示できますが、SSN は自身のものしか表示できません。ユーザーが SSN をクエリーする必要性はありません。クエリーACL を使用することで、ユーザーが他人の HR プロファイルの SSN に対してクエリーを実行して SSN マッピングを抽出できないようにする必要があります。

    クエリー ACL の動作

    クエリー ACL は、query_match および query_range 演算子を使用することで、安全で詳細なテーブルクエリー動作を実現します。それぞれの動作を以下に説明します。
    query_match

    query_match は、EQUALS、NOT_EQUALS、IN、NOT_IN、SAMEAS、NSAMEAS、ANYTHING、ISEMPTYSTRING、ISEMPTY、ISNOTEMPTY、ISNULL、ISNOTNULL で構成されます。query_match は、「安全な演算子」で構成されており、特定のレコードを取得するように構築されているため、他のレコードを返すために悪用されることがありません。

    評価結果 結果
    合格 ユーザーは照合クエリーを送信できます。
    失敗 ユーザーは次の照合クエリーを送信できません。
    • EQUALS
    • NOT_EQUALS
    • IN
    • NOT_IN
    • SAMEAS
    • NSAMEAS
    • ANYTHING
    • ISEMPTYSTRING
    • ISEMPTY
    • ISNOTEMPTY
    • ISNULL
    • ISNOTNULL
    query_range

    query_range は、他のすべての要素 (STARTS_WITH、CONTAINS、>=、<= など) で構成されており、境界値を調整することでユーザーがより多くのレコードを照会できるため、危険性がより高くなります。

    評価結果 結果
    合格 ユーザーは範囲クエリーを送信でき、無制限にソートできます。
    失敗 ユーザーは、(STARTS_WITH、CONTAINS、>=、<=) などを使用して範囲クエリーを送信することはできません。列によるソートは制限されています。
    重要:

    クエリー ACL (query_match と query_range の両方) は、デフォルトで、読み取りアクセスを委任する star.star ACL になります。つまり、ACL がクエリーに強制される場合、クエリー ACL が作成されていない場合は、列への読み取りアクセスが評価されます。クエリー ACL が定義されている場合は、デフォルトの動作が上書きされます。