类别:

:doc:`/sql-reference/functions-context`(会话对象)

IS_GRANTED_TO_INVOKER_ROLE

如果 INVOKER_ROLE 函数返回的角色根据调用函数的上下文继承实参中指定角色的权限,则返回 TRUE。

INVOKER_ROLE 函数仅标识并返回执行 SQL 语句的对象的账户角色。不支持数据库角色。

语法

IS_GRANTED_TO_INVOKER_ROLE( '<string_literal>' )
Copy

实参

'string_literal'

角色的名称。

使用说明

  • 如果将 IS_GRANTED_TO_INVOKER_ROLE 函数与 掩码策略行访问策略 结合使用,请验证您的 Snowflake 账户是否为 Enterprise Edition 或更高版本。

  • 只能传递一个角色名称作为实参。

  • 下表总结了可以在其中调用函数的上下文以及 Snowflake 评估的角色层次结构。

    上下文

    评估的角色

    用户

    CURRENT_ROLE

    CURRENT_ROLE。

    视图

    查看所有者角色。

    UDF

    UDF 所有者角色。

    拥有调用方权限的存储过程

    CURRENT_ROLE。

    拥有所有者权限的存储过程

    存储过程所有者角色。

    任务

    任务所有者角色。

    查询给定 的角色。

  • 如果希望评估当前会话的角色层次结构,请改为调用 IS_ROLE_IN_SESSION

示例

直接调用该函数:

IS_GRANTED_TO_INVOKER_ROLE('ANALYST')

--------------------------------------+
IS_GRANTED_TO_INVOKER_ROLE('ANALYST') |
--------------------------------------+
                TRUE                  |
--------------------------------------+
Copy

在掩码策略正文中指定该函数:

CREATE OR REPLACE MASKING POLICY mask_string AS
(val string) RETURNS string ->
CASE
  WHEN IS_GRANTED_TO_INVOKER_ROLE('ANALYST') then val
  ELSE '*******'
END;
Copy
语言: 中文