カテゴリ:

コンテキスト関数 (セッションオブジェクト)

INVOKER_ROLE

クエリを実行するオブジェクトのロール名を返します。

列レベルのセキュリティ マスキングポリシー SQL 式で INVOKER_ROLE 関数を使用します。

こちらもご参照ください。

高度な列レベルのセキュリティトピック

このトピックの内容:

構文

INVOKER_ROLE()

引数

なし。

使用上の注意

次のテーブルは、クエリとマスキングポリシー SQL 式の INVOKER_ROLE 値の関係をまとめたものです。

マスキングポリシーが適用されるクエリ

INVOKER_ROLEが返す値

ビュー

所有者のロールを表示します。

UDF

UDF 所有者のロール。

呼び出し元権限を持つストアドプロシージャ

CURRENT_ROLE.

所有者権限を持つストアドプロシージャ

ストアドプロシージャ所有者のロール。

タスク

タスク所有者のロール。

ストリーム

指定された ストリーム をクエリするロール。

次の図は、クエリ実行者、Snowflakeでのロール、テーブルまたはビューのマスキングポリシーの関係を示しています。

Invoker Role Many Views

条件:

  • 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;