gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:51:55 28 4
gpt4 key购买 nike

我使用角色“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'

返回 NULLDESCRIBE PROCEDURE XYZ() 返回 body 为空白。

我应该提供什么额外的权限来授予“ADMIN_ROLE”对“ABC_ROLE”的主体/过程定义的访问权限?

最佳答案

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

测试:

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

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

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

关于sql - 如何将 Snowflake 中的 PROCEDURE_DEFINITION 访问权限从 ADMIN 角色授予另一个角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70299256/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com