REVOKE
功能概述
回收角色或用户已被授予的权限。通过 REVOKE 语句,可以对工作空间、工作空间对象、Schema 和 Schema 对象等各级别的权限进行回收。
Workspace 用户和角色权限管理语法
REVOKE workspacePrivileges ON WORKSPACE workspace_name
| workspaceObjectPrivileges ON { ROLE | SCHEMA | VCLUSTER } workspace_object_name
| schemaPrivileges ON SCHEMA schema_name
| schemaObjectPrivileges ON { TABLE | VIEW | MATERIALIZED VIEW } schema_object_name
| dynamicTablePrivileges ON DYNAMIC TABLE schema_object_name
| semanticViewPrivileges ON SEMANTIC VIEW schema_object_name
| functionPrivileges ON FUNCTION schema_object_name
| volumePrivileges ON VOLUME 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 FUNCTION
CREATE FUNCTION 、CREATE VOLUME
CREATE VOLUME 、CREATE SEMANTIC VIEW
CREATE SEMANTIC VIEW 、CREATE DYNAMIC TABLE
CREATE DYNAMIC TABLE |
schemaObjectPrivileges
schemaObjectPrivileges | 对 Schema 下对象的修改、删除、查询等权限 | ALTER
ALTER 、DROP
DROP 、SELECT
SELECT 、INSERT
INSERT 、READ METADATA
READ METADATA 、ALL
ALL |
dynamicTablePrivileges
dynamicTablePrivileges | 对动态表的查询、修改、删除等权限 | SELECT DYNAMIC TABLE
SELECT DYNAMIC TABLE 、ALTER DYNAMIC TABLE
ALTER DYNAMIC TABLE 、DROP DYNAMIC TABLE
DROP DYNAMIC TABLE 、UNDROP DYNAMIC TABLE
UNDROP DYNAMIC TABLE 、RESTORE DYNAMIC TABLE
RESTORE DYNAMIC TABLE 、INSERT
INSERT 、UPDATE
UPDATE 、DELETE
DELETE 、TRUNCATE
TRUNCATE 、READ METADATA
READ METADATA 、ALL PRIVILEGES
ALL PRIVILEGES |
semanticViewPrivileges
semanticViewPrivileges | 对语义视图的查询、修改和删除权限 | SELECT
SELECT 、ALTER
ALTER 、DROP
DROP 、ALL PRIVILEGES
ALL PRIVILEGES |
functionPrivileges
functionPrivileges | 对 Function 的使用、修改和删除权限 | USE FUNCTION
USE FUNCTION 、ALTER FUNCTION
ALTER FUNCTION 、DROP FUNCTION
DROP FUNCTION 、READ METADATA
READ METADATA 、ALL PRIVILEGES
ALL PRIVILEGES |
volumePrivileges
volumePrivileges | 对 Volume 的读写、修改和删除权限 | READ VOLUME
READ VOLUME 、WRITE VOLUME
WRITE VOLUME 、ALTER VOLUME
ALTER VOLUME 、DROP VOLUME
DROP VOLUME 、READ METADATA
READ METADATA 、ALL PRIVILEGES
ALL PRIVILEGES |
Function 和 Volume 都是 Schema 子对象。
CREATE FUNCTION
CREATE FUNCTION
和
CREATE VOLUME
CREATE VOLUME
从父 Schema 回收,其余权限从具体对象回收。
使用示例
-
回收角色
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
在 Volume public.sales_data
public.sales_data
上的读取权限:
REVOKE READ VOLUME ON VOLUME public.sales_data FROM ROLE reporting_role;
-
回收角色
admin_role
admin_role
在 Function public.order_summary
public.order_summary
上的修改和删除权限:
REVOKE ALTER FUNCTION ON FUNCTION public.order_summary FROM ROLE admin_role;
REVOKE DROP FUNCTION ON FUNCTION public.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;
-
回收角色
my_role
my_role
对指定语义视图的查询权限:
REVOKE SELECT ON SEMANTIC VIEW public.my_semantic_view FROM ROLE my_role;
-
批量回收角色
my_role
my_role
查询 Schema public
public
下所有语义视图的权限:
REVOKE SELECT ON ALL SEMANTIC VIEWS IN SCHEMA public FROM ROLE my_role;
-
回收角色
my_role
my_role
对指定动态表的查询权限:
REVOKE SELECT ON DYNAMIC TABLE public.my_dynamic_table FROM ROLE my_role;
-
回收角色
my_role
my_role
在 public
public
Schema 下创建动态表的权限:
REVOKE CREATE DYNAMIC TABLE ON SCHEMA public FROM ROLE my_role;
-
批量回收角色
my_role
my_role
查询 Schema public
public
下所有动态表的权限:
REVOKE SELECT ON ALL DYNAMIC TABLES IN SCHEMA public FROM ROLE my_role;
注意事项
- 执行此命令需要具备
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;