SHOW ROW ACCESS POLICIES¶
アクセス権限がある行アクセスポリシーをリストします。作成日、データベースとスキーマの名前、所有者、利用可能なコメントなどの情報を返します。
- こちらもご参照ください。
構文¶
SHOW ROW ACCESS POLICIES [ LIKE '<pattern>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
[ IN
{
ACCOUNT |
DATABASE |
DATABASE <database_name> |
SCHEMA |
SCHEMA <schema_name> |
<schema_name>
APPLICATION <application_name> |
APPLICATION PACKAGE <application_package_name> |
}
]
パラメーター¶
LIKE 'pattern'オプションで、オブジェクト名でコマンド出力をフィルタリングします。フィルターは、 SQL ワイルドカード文字(
%および_)をサポートする、 大文字と小文字を区別しない パターンマッチングを使用します。たとえば、次のパターンは 同じ 結果を返します。
... LIKE '%testing%' ...... LIKE '%TESTING%' .... デフォルト: 値なし(フィルタリングは出力に非適用)。
LIMIT rows [ FROM 'name_string' ]オプションで、返される行の最大数を制限すると同時に、結果の「ページネーション」を有効にします。実際に返される行数は、指定された制限より少ない場合があります。例えば、既存のオブジェクトの数が指定された制限より少ないなどです。
オプションの
FROM 'name_string'サブ句は、結果の「カーソル」として効果的に機能します。これにより、指定された文字列と一致するオブジェクト名を持つ最初の行に続く指定された行数を取得できます。文字列は一重引用符で囲む必要があり、 大文字と小文字を区別します。
文字列に完全なオブジェクト名を含める必要はありません。部分的な名前がサポートされています。
デフォルト:値なし(出力に制限は適用されない)
注釈
FROM 'name_string'句とSTARTS WITH 'name_string'句の両方をサポートする SHOW コマンドの場合、同じステートメントでこれらの両方の句を組み合わせることができます。ただし、両方の条件を満たしている必要があります。そうでない場合、互いにキャンセルされ、結果が返されません。さらに、オブジェクトは名前の辞書式順序で返されるため、
FROM 'name_string'は、STARTS WITH 'name_string'によって返される行よりも辞書式の値が大きい行のみを返します。例:
... STARTS WITH 'A' LIMIT ... FROM 'B'は結果を返しません。... STARTS WITH 'B' LIMIT ... FROM 'A'は結果を返しません。... STARTS WITH 'A' LIMIT ... FROM 'AB'は結果を返します(入力文字列に一致する行がある場合)。
[ IN ... ]オプションで、コマンドのスコープを指定します。次のいずれかを指定します。
ACCOUNTアカウント全体の記録を返します。
DATABASE、 .DATABASE db_name現在使用中のデータベースまたは指定されたデータベース(
db_name)の記録を返します。db_nameなしでDATABASEを指定し、かつデータベースが使用されていない場合、キーワードは出力に影響しません。注釈
データベースコンテキストで
IN句を指定せずに SHOW コマンドを使用すると、予想よりも少ない結果になる可能性があります。IN句を使用しない場合、同じ名前のオブジェクトは一度だけ表示されます。例えば、schema1にテーブルt1、そしてschema2にテーブルt1があり、両方とも指定したデータベースコンテキストのスコープ内にある場合(つまり、選択したデータベースがschema1とschema2の親である場合)の場合、 SHOW TABLES はt1テーブルの1つのみを表示します。SCHEMA、 .SCHEMA schema_name現在使用中のスキーマまたは指定されたスキーマ(
schema_name)の記録を返します。データベースが使用中の場合、または完全修飾
schema_name(例:db.schema) を指定する場合、SCHEMAはオプションです。データベースが使用されていない場合は、
SCHEMAを指定しても出力には影響しません。
APPLICATION application_name、 .APPLICATION PACKAGE application_package_name名前付き Snowflake Native App またはアプリケーションパッケージの記録を返します。
IN ...を省略した場合、コマンドのスコープは、セッションで現在使用中のデータベースがあるかどうかによって異なります。データベースが現在使用中の場合、コマンドはデータベースで表示する権限を持つオブジェクトを返します。これは、
IN DATABASEを指定するのと同じ効果があります。データベースが現在使用中でない場合、コマンドはアカウントで表示する権限を持つオブジェクトを返します。これは、
IN ACCOUNTを指定するのと同じ効果があります。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、 最低 1 つ の次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
APPLY ROW ACCESS POLICY |
アカウント |
|
APPLY |
行アクセスポリシー |
|
OWNERSHIP |
行アクセスポリシー |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
行アクセスポリシー DDL と権限の詳細については、 行アクセスポリシーを管理する をご参照ください。
使用上の注意¶
このコマンドの実行には、稼働中のウェアハウスは必要ありません。
このコマンドは、現在のユーザーの現在のロールに少なくとも1つのアクセス権限が付与されているオブジェクトのみを返します。
MANAGE GRANTS アクセス権限により、所有者はアカウント内のすべてのオブジェクトを暗黙的に参照できます。デフォルトでは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)とセキュリティ管理者( SECURITYADMIN ロールを持つユーザー)のみが MANAGE GRANTS 権限を持っています。
このコマンドの出力を後処理するには、 パイプ演算子 (
->>)または RESULT_SCAN 関数。どちらのコンストラクトも、出力を クエリできる結果セットとして扱います。このコマンドの出力列名は小文字で生成されます。パイプ演算子または でこのコマンドの結果セットを消費する場合 RESULT_SCAN 関数の場合は、を使用します 二重引用符で囲まれた識別子 クエリの列名に を使用し、スキャンされた出力の列名と一致するようにします。たとえば、出力列の名前が次の場合
type``次に を指定します ``"type"識別子用。
LIMIT rowsの値は10000を超えることはできません。LIMIT rowsを省略した場合、結果セットが1万行を超えるとコマンドはエラーになります。1万件を超える記録が存在する結果を表示するには、
LIMIT rowsを含めるか、 Snowflake Information Schema の対応するビューをクエリします。
例¶
次の例は、クエリを実行する ACCOUNTADMIN ロールを持つユーザーを表しています。
SHOW ROW ACCESS POLICIES;---------------------------------+------+---------------+-------------+-------------------+--------------+---------+---------+-----------------+ created_on | name | database_name | schema_name | kind | owner | comment | options | owner_role_type | ---------------------------------+------+---------------+-------------+-------------------+--------------+---------+---------+-----------------+ Fri, 23 Jun 1967 00:00:00 -0700 | P1 | RLS_AUTHZ_DB | S_D_1 | ROW_ACCESS_POLICY | ACCOUNTADMIN | | "" | ROLE | Fri, 23 Jun 1967 00:00:00 -0700 | P2 | RLS_AUTHZ_DB | S_D_2 | ROW_ACCESS_POLICY | ACCOUNTADMIN | | "" | ROLE | ---------------------------------+------+---------------+-------------+-------------------+--------------+---------+---------+-----------------+
次は、行アクセスポリシーが存在する親スキーマに USAGE がなく、ACCOUNTADMIN ロールではないロールの代表例です。
SHOW ROW ACCESS POLICIES; ---------------------------------+------+---------------+-------------+-------------------+--------------+---------+---------+-----------------+ created_on | name | database_name | schema_name | kind | owner | comment | options | owner_role_type | ---------------------------------+------+---------------+-------------+-------------------+--------------+---------+---------+-----------------+