クエリー ACL
クエリー ACL を使用すると、データをクエリーできるユーザーを明示的に定義することで、より詳細なアクセス制御を定義できます。
クエリー ACL とは
クエリー ACL の操作は、query_range または query_match に設定されています。クエリー ACL を使用すると、ユーザークエリーをより細かく制御でき、 セットアップに基づいてアクセスを制限または有効化できます。クエリー ACL は、ブラインドクエリー攻撃 (データの値が見えていなくても、攻撃者がクエリーを盲目的に実行し、結果から情報を抽出する攻撃) に対抗する強力なツールです。
クエリー ACL を使用する状況
列に機密情報の値が含まれていて、データへの部分的/条件付きアクセスが許可されている場合は、データの機密性に基づいて、クエリー ACL の使用を検討し、必要に応じて実装する必要があります。テーブル内の行とその列への部分的/条件付きアクセスがある場合、特にそのアクセスがデータフィルターによって強制されていない場合は、データの機密性に基づいて、必要に応じてクエリー ACL を実装する必要があります。
給与クエリーの制御
給与テーブルには、ユーザー自身の給与が含まれている行がありますが、給与が 2 つの境界内に含まれているユーザーをクエリーする範囲クエリーをユーザーが発行することはできません。給与に対してquery_range ACL を設定すると、ユーザーはそのようなクエリーを発行できなくなります。HR クエリーの制御
ユーザーは、すべての hr_profiles を表示できますが、SSN は自身のものしか表示できません。ユーザーが SSN をクエリーする必要性はありません。クエリーACL を使用することで、ユーザーが他人の HR プロファイルの SSN に対してクエリーを実行して SSN マッピングを抽出できないようにする必要があります。
クエリー 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 が定義されている場合は、デフォルトの動作が上書きされます。