如何从管理员角色将Snowflake中的PROCEDURE_DEFINITION访问权限授予给另一个角色?

3
我已经在“ADMIN”架构中使用“ADMIN_ROLE”创建了一个名为“XYZ”的存储过程,并授予了“ADMIN”帐户对另一个角��“ABC_ROLE”的“USAGE”权限。
所用语句:
GRANT USAGE 
ON ALL PROCEDURES IN SCHEMA "DATABASE_TEST"."ADMIN" 
TO ROLE "ABC_ROLE";

然而,如果我使用ABC_ROLE,我看不到PROCEDURE_DEFINITION

SELECT PROCEDURE_DEFINITION  
FROM INFORMATION_SCHEMA.procedures 
WHERE procedure_name = 'XYZ' 

返回结果为NULLDESCRIBE PROCEDURE XYZ()返回空白的内容。

我应该提供什么额外的权限,以授权"ABC_ROLE"从"ADMIN_ROLE"访问主体/过程定义?

1个回答

1
如果存储过程以调用者身份执行,则具有使用权限的角色可以查看其主体。
测试:
create or replace procedure test_view(x string)
returns string 
language javascript
execute as caller
as $$
return "hi"
$$;

describe procedure test_view(string);

grant usage on procedure test_view(string) to role public;

use role public;

call test_view('');

describe procedure test_view(string);

但是如果该过程以所有者身份执行,则所有者可以看到它的主体。

请注意,过程特权只有“使用”和“所有权”:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接