カテゴリ:

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

INVOKER_ROLE

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

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

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

このトピックの内容:

構文

INVOKER_ROLE()

引数

なし。

使用上の注意

  • 列レベルのセキュリティ で INVOKER_ROLE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。

  • 次のテーブルは、クエリとマスキングポリシー 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;