カテゴリ:

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

INVOKER_ROLE

クエリを実行するオブジェクトのアカウントレベルのロール名を返します。ロール名がデータベースロールの場合は NULL を返します。

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

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

このトピックの内容:

構文

INVOKER_ROLE()
Copy

引数

なし。

使用上の注意

  • マスキングポリシー で INVOKER_ROLE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。

  • 以下のテーブルは、クエリコンテキストと関数が評価するロール間の関係をまとめたものです。

    コンテキスト

    評価されるロール

    ユーザー

    CURRENT_ROLE

    テーブル

    CURRENT_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 を返します。

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE NULL
END;
Copy

権限のないユーザーに対して静的なマスク値を返します。

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN INVOKER_ROLE() IN ('ANALYST') THEN val
  ELSE '********'
END;
Copy

権限のないユーザーに対して 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;
Copy