You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何撤销Snowflake角色的数据库所有权限?是否需细化至Schema/表层级?

Snowflake权限撤销:数据库级REVOKE是否覆盖Schema/表权限?

结论很明确:执行REVOKE ALL PRIVILEGES ON DATABASE x FROM ROLE y无法清除该角色在Schema和表层级的权限,必须细化到Schema和表层级单独撤销。

原因说明

Snowflake的权限体系是分层独立的,数据库、Schema、表属于不同层级的对象,权限的授予与撤销仅对当前层级生效:

  • 数据库级的ALL PRIVILEGES仅包含数据库自身的权限(比如CREATE SCHEMA、数据库级USAGE等),不会向下级联影响子对象(Schema、表)上已授予的权限。
  • 你提到的Schema级USAGE、表级SELECT权限,属于Schema和表对象本身的权限,数据库级的撤销命令触达不到这些层级。

正确的权限清理步骤

如果要彻底清除该角色在目标数据库及所有子对象上的权限,需要执行以下命令:

  1. 撤销数据库级权限(若需清理):
    REVOKE ALL PRIVILEGES ON DATABASE x FROM ROLE y;
    
  2. 撤销现有Schema上的所有权限:
    REVOKE ALL PRIVILEGES ON ALL SCHEMAS IN DATABASE x FROM ROLE y;
    
    如果之前给过该角色未来创建Schema的权限,还要补充:
    REVOKE ALL PRIVILEGES ON FUTURE SCHEMAS IN DATABASE x FROM ROLE y;
    
  3. 撤销现有表上的所有权限:
    REVOKE ALL PRIVILEGES ON ALL TABLES IN ALL SCHEMAS IN DATABASE x FROM ROLE y;
    
    同理,若有未来创建表的权限,补充:
    REVOKE ALL PRIVILEGES ON FUTURE TABLES IN ALL SCHEMAS IN DATABASE x FROM ROLE y;
    

验证权限是否清理完成

可以通过以下命令确认权限状态:

  • 查看角色的所有权限:SHOW GRANTS TO ROLE y;
  • 查看角色在目标数据库上的权限:SHOW GRANTS ON DATABASE x TO ROLE y;
  • 查看角色在目标数据库所有Schema上的权限:SHOW GRANTS ON SCHEMA x.* TO ROLE y;

内容的提问来源于stack exchange,提问作者Mike Coffey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 11:32:39