IS_GRANTED_TO_INVOKER_ROLE 函数:对输出的变更¶
IS_GRANTED_TO_INVOKER_ROLE 函数的行为如下:
- 之前:
当实参对应于以下上下文中的角色时,该函数的计算结果为 FALSE:
单独调用函数:活动主要角色的角色层次结构,即 CURRENT_ROLE()。
存储过程调用方的权限。
存储过程所有者的权限。
任务所有者。
如果该函数用于保护表的掩码策略,则该函数将评估策略所有者的角色层次结构。如果函数实参中的角色位于拥有策略的角色的角色层次结构中,则该函数的计算结果为 TRUE。否则,该函数的计算结果为 FALSE。
- 现在:
函数评估在以下上下文中使用会话的主要角色层次结构:
自行调用函数。
表
拥有调用方权限的存储过程
如果在拥有所有者权限的存储过程中使用该函数,则该函数将计算拥有具有所有者权限的存储过程的角色的角色层次结构。
同样,如果该函数与任务一起使用,则该函数将评估拥有该任务的角色的角色层次结构。
要识别使用 IS_GRANTED_TO_INVOKER_ROLE 函数的掩码策略,请执行以下语句:
USE ROLE ACCOUNTADMIN;
SELECT *
FROM snowflake.account_usage.masking_policies
WHERE policy_body ilike '%is_granted_to_invoker_role%';
参考:984