- 类别:
上下文函数 (会话对象)
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;