Snowflake权限配置:测试角色继承管理员权限,仅操作指定Schema并保留对象所有权
问题解决方案
失败原因分析
- 直接撤销用户
tester1的权限无效,因为tester1的权限继承自testerrole,而testerrole已被授予adminrole(DEMODB所有Schema的所有者),testerrole会自动继承adminrole的所有权限,包括访问PRDSCHM、QASSCHM的权限。 - 权限操作应针对角色而非直接用户,同时需要处理角色继承带来的权限覆盖问题。
修正后的完整脚本
-- 确保adminrole的所有者权限(保留原设置) grant usage on database DEMODB to role adminrole; grant all on database DEMODB to role adminrole; -- 配置testerrole的核心权限:DEVSCHM的读写+创建对象权限 grant usage on database DEMODB to role testerrole; grant select,insert,update,delete,create on schema "DEMODB"."DEVSCHM" to role testerrole; -- 将testerrole加入adminrole,确保新创建对象归属adminrole grant role adminrole to testerrole; -- 显式撤销testerrole对其他Schema的所有权限(覆盖继承的adminrole权限) revoke all privileges on schema "DEMODB"."PRDSCHM" from role testerrole; revoke all privileges on schema "DEMODB"."QASSCHM" from role testerrole; -- 将testerrole授予用户tester1 grant role testerrole to user tester1;
关键说明
- 权限顺序调整:先配置
testerrole的DEVSCHM权限,再加入adminrole,避免继承的权限覆盖自定义设置。 - 针对角色撤销权限:直接对
testerrole执行撤销操作,而非用户tester1,因为用户的权限完全来自角色继承。 - 添加create权限:在DEVSCHM的授权中加入
create,满足“可创建对象”的需求。 - 使用
all privileges撤销:确保彻底移除testerrole对目标Schema的所有继承权限,包括usage、读写等。
内容的提问来源于stack exchange,提问作者bigbang
相关产品推荐
相关产品推荐

