如何为自定义角色授予存储过程体查看权限且无需授予sysadmin权限
存储过程可见性权限配置方案
默认情况下,只有存储过程的所有者角色、ACCOUNTADMIN等高权限角色才有权限查看非自身创建的存储过程定义,仅授予USAGE权限仅支持角色执行存储过程,不包含查看存储过程主体的权限。你可以通过以下两种最小权限方案解决问题,无需授予SYSADMIN权限:
方案1:指定存储过程粒度授权(最小权限推荐)
仅开放单个目标存储过程的定义查看权限给New_role,适合权限管控要求严格的场景。
使用存储过程的所有者角色(此处为SYSADMIN)执行以下授权语句:
GRANT VIEW DEFINITION ON PROCEDURE <你的存储过程名>(<参数类型列表>) TO ROLE New_role;
注意:存储过程名称后必须附带参数类型列表,Snowflake支持同名不同参的存储过程,需要通过参数列表唯一指定目标对象。
授权完成后,持有New_role的用户即可正常执行GET_DDL或DESCRIBE PROCEDURE查看存储过程主体:
-- 验证方式1 SELECT GET_DDL('PROCEDURE', '<你的存储过程名>(<参数类型列表>)'); -- 验证方式2 DESCRIBE PROCEDURE <你的存储过程名>(<参数类型列表>);
方案2:Schema粒度授权
如果需要New_role可查看指定Schema下所有存储过程(以及其他对象)的定义,可直接授予Schema级别的VIEW DEFINITION权限,无需为单个存储过程重复授权:
GRANT VIEW DEFINITION ON SCHEMA <数据库名>.<Schema名> TO ROLE New_role;
该权限会自动覆盖对应Schema下已存在、以及后续新建的所有存储过程、函数、表等对象的定义查看权限,适合权限管控粒度较松的场景。
内容的提问来源于stack exchange,提问作者Nofariko
相关产品推荐
相关产品推荐

