REVOKE
功能概述
回收角色或用户已被授予的权限。通过 REVOKE 语句,可以对工作空间、工作空间对象、Schema 和 Schema 对象等各级别的权限进行回收。
Workspace 用户和角色权限管理语法
REVOKE workspacePrivileges ON WORKSPACE workspace_name
| workspaceObjectPrivileges ON { ROLE | SCHEMA | VCLUSTER | DATALAKE | FUNCTION } workspace_object_name
| schemaPrivileges ON SCHEMA schema_name
| schemaObjectPrivileges ON { TABLE | VIEW | MATERIALIZED VIEW } schema_object_name
FROM { ROLE role_name | USER user_name };
权限类型说明
| 权限类型 | 说明 | 示例 |
|---|
workspacePrivileges
workspacePrivileges | 在工作空间下创建对象的权限 | CREATE SCHEMA
CREATE SCHEMA 、CREATE VCLUSTER
CREATE VCLUSTER |
workspaceObjectPrivileges
workspaceObjectPrivileges | 对工作空间下对象的修改和查看元数据等权限 | ALTER
ALTER 、DROP
DROP 、READ METADATA
READ METADATA 、ALL [PRIVILEGES]
ALL [PRIVILEGES] |
schemaPrivileges
schemaPrivileges | 在 Schema 下创建对象的权限 | CREATE TABLE
CREATE TABLE 、CREATE VIEW
CREATE VIEW 、CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW |
schemaObjectPrivileges
schemaObjectPrivileges | 对 Schema 下对象的修改、删除、查询等权限 | ALTER
ALTER 、DROP
DROP 、SELECT
SELECT 、INSERT
INSERT 、READ METADATA
READ METADATA 、ALL
ALL |
使用示例
-
回收角色
simple_role
simple_role
在工作空间下创建 VCLUSTER 的权限:
REVOKE CREATE VCLUSTER ON WORKSPACE lakehouse_public FROM ROLE simple_role;
-
回收角色
simple_role
simple_role
在名为 default
default
的 VCLUSTER 上的 ALTER
ALTER
权限:
REVOKE ALTER VCLUSTER ON VCLUSTER default FROM ROLE simple_role;
-
回收角色
uat_demo
uat_demo
在 public
public
Schema 下创建表和视图的权限:
REVOKE CREATE VIEW, CREATE TABLE ON SCHEMA public FROM ROLE uat_demo;
-
回收角色
reporting_role
reporting_role
在名为 sales_data
sales_data
的 DATALAKE 上的 READ METADATA
READ METADATA
权限:
REVOKE READ METADATA ON DATALAKE sales_data FROM ROLE reporting_role;
-
回收角色
admin_role
admin_role
在名为 order_summary
order_summary
的 FUNCTION 上的 ALTER
ALTER
和 DROP
DROP
权限:
REVOKE ALTER, DROP ON FUNCTION order_summary FROM ROLE admin_role;
-
回收角色
analyst_role
analyst_role
在 public
public
Schema 下名为 customer_orders
customer_orders
的表上的 SELECT
SELECT
和 INSERT
INSERT
权限:
REVOKE SELECT, INSERT ON TABLE public.customer_orders FROM ROLE analyst_role;
-
回收用户
tester
tester
的角色 test_readonly_role
test_readonly_role
:
REVOKE ROLE test_readonly_role FROM USER tester;
注意事项
- 执行此命令需要具备
workspace_admin
workspace_admin
或 security_admin
security_admin
角色。
- 回收权限后,被回收方将立即失去对应资源的访问能力。
- 可通过
SHOW GRANTS TO ROLE role_name
SHOW GRANTS TO ROLE role_name
或 SHOW GRANTS TO USER user_name
SHOW GRANTS TO USER user_name
验证回收结果。
Instance Role 权限管理
LakeHouse 支持对 Instance Role 的跨工作空间权限进行细粒度回收,确保权限管控的灵活性和安全性。
语法说明
-- 回收 Instance Role 对工作空间的权限
REVOKE <privilege> ON WORKSPACE <workspace_name> FROM INSTANCE ROLE <role_name>;
-- 回收 Instance Role 对表的权限
REVOKE <privilege> ON TABLE <workspace>.<schema>.<table> FROM INSTANCE ROLE <role_name>;
-- 回收 Instance Role 对 Schema 的权限
REVOKE <privilege> ON DATABASE <workspace>.<schema> FROM INSTANCE ROLE <role_name>;
-- 移除用户的 Instance Role 归属
REVOKE INSTANCE ROLE <role_name> FROM USER <user_name>;
示例
-- 回收工作空间全部权限
REVOKE ALL ON WORKSPACE ws1 FROM INSTANCE ROLE inst_role;
-- 验证回收结果(预期无 ALL 权限)
SHOW GRANTS TO INSTANCE ROLE inst_role;
-- 回收单表权限
REVOKE ALL ON TABLE ws1.public.sales FROM INSTANCE ROLE inst_role;
-- 移除用户的 Instance Role
REVOKE INSTANCE ROLE inst_role FROM USER lh_engine_test_01;