是否可禁用Snowflake用户查看其他用户或角色的所有元数据?
针对Snowflake多用户组隔离需求的实现方案
你提到的两项配置均可通过Snowflake原生的权限控制和可见性参数实现,无需使用organisations功能,具体操作如下:
1. 禁止普通用户执行SHOW ROLES、隐藏Snowsight UI的ROLES标签页
- 首先撤销PUBLIC角色默认的
MONITOR ROLES全局权限,仅给管理员角色单独授予该权限:REVOKE MONITOR ROLES ON ACCOUNT FROM ROLE PUBLIC; GRANT MONITOR ROLES ON ACCOUNT TO ROLE ACCOUNTADMIN; -- 按需给其他管理员角色授权 - 若需要保留部分角色的可见性,可通过角色可见性参数控制:将不希望被普通用户看到的角色设置为不可见,未被授予该角色的用户在
SHOW ROLES结果、Snowsight角色列表中都无法看到对应角色:ALTER ROLE <非公开角色名> SET IS_VISIBLE = FALSE; - 完成上述配置后,普通用户没有权限执行
SHOW ROLES命令,Snowsight的ROLES标签页会自动隐藏,或打开后无可见内容。
2. 禁止普通用户在查询历史页面查看完整用户列表
- 先撤销PUBLIC角色默认的全局监控类权限,仅保留用户查看自身查询历史的权限:
REVOKE MONITOR EXECUTION ON ACCOUNT FROM ROLE PUBLIC; REVOKE MONITOR USAGE ON ACCOUNT FROM ROLE PUBLIC; - 开启账户级用户可见性强制开关,默认所有用户仅对拥有对应管理权限的账号、以及同权限组的用户可见,也可单独调整指定用户的可见性:
ALTER ACCOUNT SET ENFORCE_USER_VISIBILITY = TRUE; -- 单独设置用户不可见的命令:ALTER USER <目标用户名> SET IS_VISIBLE = FALSE; - 配置完成后,普通用户的查询历史页面用户下拉列表仅会显示自己的账号,无法查看其他用户信息。
注意事项
- 所有权限调整建议先在测试环境验证,避免影响管理员或现有业务的正常使用
- 建议梳理所有自定义角色的权限边界,不同用户组的角色、用户均设置为对其他组不可见,可完全实现跨组用户无感知的隔离需求
- 目前无公开的绕过该配置的安全漏洞,配置正确的前提下不会出现用户、角色信息泄露的风险
内容的提问来源于stack exchange,提问作者Rogier Werschkull
相关产品推荐
相关产品推荐

