- カテゴリ:
コンテキスト関数 (セッションオブジェクト)
INVOKER_ROLE¶
クエリを実行するオブジェクトのアカウントレベルのロール名を返します。ロール名がデータベースロールの場合は NULL を返します。
- こちらもご参照ください。
このトピックの内容:
構文¶
INVOKER_ROLE()
引数¶
なし。
使用上の注意¶
マスキングポリシー で INVOKER_ROLE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。
以下のテーブルは、クエリコンテキストと関数が評価するロール間の関係をまとめたものです。
コンテキスト
評価されるロール
ユーザー
テーブル
CURRENT_ROLE。
ビュー
所有者のロールを表示します。
UDF
UDF 所有者のロール。
呼び出し元権限を持つストアドプロシージャ
CURRENT_ROLE。
所有者権限を持つストアドプロシージャ
ストアドプロシージャ所有者のロール。
タスク
タスク所有者のロール。
ストリーム
指定された ストリーム をクエリするロール。
次の図は、クエリ実行者、Snowflakeでのロール、テーブルまたはビューのマスキングポリシーの関係を示しています。
条件:
R0, R1, R2, R3
Snowflakeのロールです。
P1, P2, P3
Snowflakeのポリシーをマスキングしています。
V1, V2
Snowflakeのビューです。
T
Snowflakeのテーブルです。
この図に基づくと、クエリの CURRENT_ROLE と INVOKER_ROLE の値は次のとおりです。
ポリシー
CURRENT_ROLE
INVOKER_ROLE
P1
R3
R1
P2
R3
R2
P3
R3
R3
例¶
次の例は、マスキングポリシー SQL 式で INVOKER_ROLE 関数を使用する方法を示しています。
権限のないユーザーの場合は NULL を返します。
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE NULL END;
権限のないユーザーに対して静的なマスク値を返します。
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE '********' END;
権限のないユーザーに対して SHA2、 SHA2_HEX を使用してハッシュ値を返します。
CREATE OR REPLACE MASKING POLICY mask_string AS (val string) RETURNS string -> CASE WHEN INVOKER_ROLE() IN ('ANALYST') THEN val ELSE SHA2(val) END;