- カテゴリ:
コンテキスト関数 (セッションオブジェクト)
INVOKER_ROLE¶
クエリを実行するオブジェクトのアカウントレベルのロール名を返します。ロール名がデータベースロールの場合は NULL を返します。
- こちらもご参照ください。
このトピックの内容:
構文¶
INVOKER_ROLE()
引数¶
なし。
使用上の注意¶
マスキングポリシー で INVOKER_ROLE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。
次のテーブルは、クエリとマスキングポリシー SQL 式の INVOKER_ROLE 値の関係をまとめたものです。
マスキングポリシーが適用されるクエリ
INVOKER_ROLEが返す値
ビュー
所有者のロールを表示します。
UDF
UDF 所有者のロール。
呼び出し元権限を持つストアドプロシージャ
所有者権限を持つストアドプロシージャ
ストアドプロシージャ所有者のロール。
タスク
タスク所有者のロール。
ストリーム
指定された ストリーム をクエリするロール。
次の図は、クエリ実行者、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 を返します。
case when invoker_role() IN ('ANALYST') then val else NULL end;
権限のないユーザーに対して静的なマスク値を返します。
case when invoker_role() in ('ANALYST') then val else '********' end;
権限のないユーザーに対して SHA2、 SHA2_HEX を使用してハッシュ値を返します。
case when invoker_role() in ('ANALYST') then val else sha2(val) -- return hash of the column value end;