Snowflake授权后无法查看Schema下的表需补充哪些权限
问题描述
已为角色DEV__RO_ROLE授予Database、Warehouse及Schema相关USAGE权限,执行的授权语句如下:
grant usage on database DATA__DEV to role DEV__RO_ROLE; grant usage on all schemas DATA__DEV to role DEV__RO_ROLE; grant select on all tables in schema DATA__DEV.PITK_DEV to role DEV__RO_ROLE;
完成上述配置后,仍无法查看任意Schema下的所有表,需补充配置权限,实现用户可正常访问所有Schema,同时拥有表、视图的只读访问权限。
问题根因
原有授权存在3个核心问题:
- Schema授权语法错误:
grant usage on all schemas DATA__DEV不是标准授权语法,Snowflake无法正确识别为DATA__DEV库下的所有Schema范围,实际未生效 - 授权范围不足:仅给
DATA__DEV.PITK_DEV单个Schema下的表授予了SELECT权限,其余Schema下的表、所有视图均未授权 - 缺少未来对象权限:
all xxx类授权仅对授权时已存在的对象生效,后续新建的Schema、表、视图不会自动继承权限,会出现授权后新建对象仍无法访问的问题
补充授权语句
按顺序执行以下SQL即可满足需求:
-- 1. 修正Schema USAGE授权:授予库下所有已存在Schema的USAGE权限 grant usage on all schemas in database DATA__DEV to role DEV__RO_ROLE; -- 2. 配置未来Schema自动授权:后续在库下新建的Schema会自动给该角色授予USAGE权限 grant usage on future schemas in database DATA__DEV to role DEV__RO_ROLE; -- 3. 授予所有已存在表的只读权限 grant select on all tables in database DATA__DEV to role DEV__RO_ROLE; -- 4. 授予所有已存在视图的只读权限 grant select on all views in database DATA__DEV to role DEV__RO_ROLE; -- 5. 配置未来新建表自动授予只读权限 grant select on future tables in database DATA__DEV to role DEV__RO_ROLE; -- 6. 配置未来新建视图自动授予只读权限 grant select on future views in database DATA__DEV to role DEV__RO_ROLE;
验证说明
- 授权完成后,切换到
DEV__RO_ROLE角色即可查看所有Schema下的表、视图,且仅拥有只读权限 - 如果切换角色后仍无法看到对象,执行
show grants to user <当前访问的用户名>;确认该用户已经绑定DEV__RO_ROLE角色即可
内容的提问来源于stack exchange,提问作者Xi12
相关产品推荐
相关产品推荐

