我在 Snowflake 上有一个调用存储过程的任务。该存储过程已被定义为由调用者执行。反过来,运行存储过程的任务是使用角色“A”创建的,但也有一些角色被授予了该任务的所有权。
问题:当任务运行并调用存储过程时,如果有多个角色拥有该任务的所有权,那么哪个角色实际上在调用存储过程?
如果存储过程已定义为
EXECUTE AS CALLER
,则它使用任务的角色,该角色对应于拥有该任务的角色。
不存在“拥有任务所有权的多个角色”,因为每个对象只能有一个所有者。
“Snowflake 以任务所有者的权限运行任务(即对任务具有 OWNERSHIP 权限的角色)”
https://docs.snowflake.com/en/user-guide/tasks-intro#understanding-the-system-service
“每个安全对象都由一个角色拥有,默认情况下是用于创建对象的角色”
https://docs.snowflake.com/en/user-guide/security-access-control-overview
“调用者权限存储过程以调用该存储过程的角色的数据库权限运行”