Snowflake角色权限问题:移入SCHEMA1的表无SELECT权限
Snowflake跨Schema移表后权限缺失问题解决
问题原因
你执行的 GRANT SELECT ON ALL TABLES IN SCHEMA DB1.SCHEMA1 TO test_role; 仅对执行该授权时SCHEMA1内已存在的3张表生效。通过ALTER TABLE ... RENAME TO从SCHEMA2移入SCHEMA1的table4,不会自动继承目标schema的现有权限——这类跨schema移动操作不会触发已有的ALL TABLES授权自动应用到新移入的对象上。
直接在SCHEMA1内创建的表能正常获权,大概率是因为你之前配置了未来表权限,或者创建表的角色具备给test_role授权的权限(比如创建者是admin类角色,默认同步了权限)。
解决方案
- 给已移入的table4补加权限:
手动执行授权语句:
GRANT SELECT ON TABLE DB1.SCHEMA1.table4 TO test_role;
- 配置未来自动授权(核心解决方法):
为SCHEMA1设置未来表的SELECT权限,这样后续不管是直接在SCHEMA1创建的表,还是从其他schema移入的表,都会自动给test_role加上SELECT权限:
GRANT SELECT ON FUTURE TABLES IN SCHEMA DB1.SCHEMA1 TO test_role;
关键说明
Snowflake的对象权限分两种生效范围:
ALL TABLES:仅覆盖授权时刻已存在的对象FUTURE TABLES:覆盖授权之后在该schema下新增(包括移入)的所有对象
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

