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

How to grant access to PROCEDURE_DEFINITION in Snowflake from ADMIN role to another role?

我使用角色“ADMIN_ROLE”在“ADMIN”架构中创建了一个存储过程'XYZ',并已将“ADMIN”帐户的“USAGE”权限授予另一个角色,即“ABC_ROLE”。

使用的语句:

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' 

returns NULL or DESCRIBE PROCEDURE XYZ() returns body as blank.

我应该提供哪些额外权限才能授予对“ADMIN_ROLE”中“ABC_ROLE”的 body/procedure 定义的访问权限?

如果存储过程作为调用者执行,那么具有使用权限的角色可以看到它的主体。

测试:

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);

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

注意程序权限只有'usage'和'ownership':