- カテゴリ:
POLICY_REFERENCES¶
オブジェクトに指定されたポリシーが割り当てられている各オブジェクトの行を返します。 または は、指定されたオブジェクトに割り当てられている各ポリシーの行を返します。
次もご参照ください。 POLICY_REFERENCES ビュー (Account Usageビュー)
構文¶
ネットワークポリシーオブジェクト限定:
POLICY_REFERENCES( POLICY_NAME => '<string>' , POLICY_KIND => 'NETWORK_POLICY' )
その他のポリシーオブジェクト用:
POLICY_REFERENCES( POLICY_NAME => '<string>' )
すべてのポリシーオブジェクト用:
POLICY_REFERENCES( REF_ENTITY_NAME => '<string>' , REF_ENTITY_DOMAIN => '<string>' )
引数¶
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 |
ポリシーのステータスを指定します。これは、 |
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_name
とref_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'));
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'));