カテゴリ:

Information Schemaテーブル関数

POLICY_REFERENCES

オブジェクトに指定されたポリシーが割り当てられている各オブジェクトの行を返します。 または は、指定されたオブジェクトに割り当てられている各ポリシーの行を返します。

次もご参照ください。 POLICY_REFERENCES ビュー (Account Usageビュー)

構文

ネットワークポリシーオブジェクト限定:

POLICY_REFERENCES(
      POLICY_NAME => '<string>' ,
      POLICY_KIND => 'NETWORK_POLICY'
      )
Copy

その他のポリシーオブジェクト用:

POLICY_REFERENCES(
      POLICY_NAME => '<string>'
      )
Copy

すべてのポリシーオブジェクト用:

POLICY_REFERENCES(
    REF_ENTITY_NAME => '<string>' ,
    REF_ENTITY_DOMAIN => '<string>'
    )
Copy

引数

POLICY_NAME => 'string'

ポリシー名を指定します。

  • ポリシー名全体を一重引用符で囲む必要があります。

  • ポリシー名で大文字と小文字が区別されるか、特殊文字やスペースが含まれる場合、大文字と小文字の処理には二重引用符が必要です。二重引用符は、一重引用符で囲む必要があります(つまり、 '"<ポリシー名>"')。

現在、ポリシー名を引数として指定する場合、Snowflakeは次のポリシーをサポートしています。

POLICY_KIND => 'NETWORK_POLICY'

この引数は POLICY_NAME 値がネットワークポリシーの場合にのみ使用します。他の種類のポリシー名を指定する場合は、この引数を使用しないでください。

REF_ENTITY_NAME => 'string'

テーブル名、ビュー名、外部テーブル名、ユーザー名など、ポリシーを設定するオブジェクトの名前。

  • オブジェクト名全体を一重引用符で囲む必要があります。

  • オブジェクト名で大文字と小文字が区別されるか、特殊文字やスペースが含まれる場合、大文字と小文字の処理には二重引用符が必要です。二重引用符は、一重引用符で囲む必要があります(例: '"<テーブル名>"')。

REF_ENTITY_DOMAIN => 'string'

ポリシーが設定されているオブジェクト型。

オブジェクトが外部テーブルの場合は、引数値として 'TABLE' を使用します。

オブジェクトがマテリアライズドビューの場合は、引数値として 'VIEW' を使用します。

サポートされているドメインは次のとおりです。

  • 'ACCOUNT'

  • 'INTEGRATION'

  • 'TABLE'

  • 'TAG'

  • 'USER'

  • 'VIEW'

戻り値

この関数は、次の列を返します。

データ型

説明

POLICY_DB

VARCHAR

ポリシーが設定されているデータベース。

POLICY_SCHEMA

VARCHAR

ポリシーが設定されているスキーマ。

POLICY_NAME

VARCHAR

ポリシーの名前。

POLICY_KIND

VARCHAR(17)

Snowflake内のポリシーのタイプ。

REF_DATABASE_NAME

VARCHAR

クエリされたオブジェクトが参照するオブジェクトを含むデータベースの名前。

REF_SCHEMA_NAME

VARCHAR

クエリされたオブジェクトが参照するオブジェクトを含むスキーマの名前。

REF_ENTITY_NAME

VARCHAR

ポリシーが設定されているオブジェクトの名前(つまり、テーブル名、ビュー名、外部テーブル名)。

REF_ENTITY_DOMAIN

VARCHAR

ポリシーが設定されているオブジェクト型(つまり、テーブル、ビュー)。

REF_COLUMN_NAME

VARCHAR

ポリシーが設定されている列名。

REF_ARG_COLUMN_NAMES

VARCHAR

マスキングポリシーが設定されているクエリ結果の行に対して NULL を返します。

TAG_DATABASE

VARCHAR

ポリシーがタグに割り当てられているタグを含むデータベースの名前。ポリシーがタグに割り当てられていない場合は NULL です。

TAG_SCHEMA

VARCHAR

ポリシーがタグに割り当てられているタグを含むスキーマの名前。ポリシーがタグに割り当てられていない場合は NULL です。

TAG_NAME

VARCHAR

ポリシーが割り当てられているタグの名前。ポリシーがタグに割り当てられていない場合は NULL です。

POLICY_STATUS

VARCHAR

ポリシーのステータスを指定します。これは、 ACTIVEMULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMNCOLUMN_IS_MISSING_FOR_SECONDARY_ARG、または COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG という4つの可能な値のいずれかになります。

POLICY_STATUS 列については次の点に注意してください。

ACTIVE

列(つまり、 REF_COLUMN_NAME)が、タグによって単一のポリシーにのみ関連付けられることを指定します。

MULTIPLE_MASKING_POLICY_ASSIGNED_TO_THE_COLUMN

複数のマスキングポリシーが同じ列に割り当てられることを指定します。

COLUMN_IS_MISSING_FOR_SECONDARY_ARG

ポリシー(つまり、 POLICY_NAME)が条件付きマスキングポリシーであり、テーブル(つまり、 REF_ENTITY_NAME)に同じ名前の列がないことを指定します。

COLUMN_DATATYPE_MISMATCH_FOR_SECONDARY_ARG

ポリシーが条件付きマスキングポリシーであり、テーブルに同じ名前の列がありますが、マスキングポリシー署名のデータ型とは異なるデータ型であることを指定します。

使用上の注意

  • 結果は、クエリを実行するロールに付与された権限に基づいて返されます。

    • ロールに APPLY MASKING POLICY グローバル権限がある場合、Snowflakeは、クエリ結果ですべてのマスキングポリシーの関連付けを返します。

    • ロールに APPLY ROW ACCESS POLICY グローバル権限がある場合、Snowflakeは、クエリ結果ですべての行アクセスポリシーの関連付けを返します。

    • ロールが特定のポリシーに対して APPLY 権限を持っている場合(例: MASKING POLICY に対する APPLY)、Snowflakeは、クエリを実行するロールが所有するオブジェクトに対してのみ、そのポリシーの関連付けを返します。

    • ロールがポリシーに対する APPLY グローバル権限または OWNERSHIP 権限のいずれかを持っているが、テーブルまたはビューの OWNERSHIP を持っていない場合(例: テーブルに対する SELECT)、Snowflakeはクエリ結果にポリシーの関連付けを表示しません。

    • ロールにはポリシー権限がないが、テーブルに対する OWNERSHIP 権限がある場合、Snowflakeはエラーメッセージを返し、ポリシーの関連付けを表示しません。

  • Information Schemaテーブル関数を呼び出す場合は、セッションに使用中の INFORMATION_SCHEMA スキーマがある、 または 関数に完全修飾のオブジェクト名を使用する必要があります。詳細については、 Snowflake Information Schema をご参照ください。

  • 構文バリエーションを1つ選択して、クエリを実行します。引数を混在させると、エラーとクエリの失敗が発生します。

    引数 ref_entity_nameref_entity_domain を一緒に含める必要があります。そうしないと、クエリに失敗します。

  • 指定されたオブジェクト名が存在しない場合、またはクエリ演算子がオブジェクトのポリシーを表示する権限を持っていない場合、Snowflakeはエラーを返します。演算子がポリシー関連付けのサブセットを表示することを許可されている場合、Snowflakeはポリシー関連付けの結果セットを返すことができます。 ref_entity_domain としてリストされている、サポートされていないオブジェクト型(例: 'stream')もエラーを返します。

  • ポリシーに対する APPLY または OWNERSHIP 権限がクエリ演算子にない場合、Snowflakeは結果セットを返しません。

列に ssn_mask という名前のマスキングポリシーが設定されている各オブジェクト(テーブルやビューなど)の行を返します。

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(policy_name => 'my_db.my_schema.ssn_mask'));
Copy

my_table という名前のテーブルに割り当てられた各ポリシーの行を返します。

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));
Copy