GRANT
功能概述
将指定权限授予角色或用户,实现对工作空间资源的细粒度访问控制。
Workspace 用户和角色权限管理语法
GRANT 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
TO { ROLE role_name | USER user_name } [WITH GRANT OPTION];
权限类型说明
-- 工作空间级别:创建对象
workspacePrivileges ::=
CREATE { SCHEMA | VCLUSTER }
-- 工作空间下对象权限
workspaceObjectPrivileges ::=
ALTER | DROP | READ METADATA | ALL [PRIVILEGES]
-- Schema 级别:创建对象
schemaPrivileges ::=
CREATE { TABLE | VIEW | MATERIALIZED VIEW } | ALL
-- Schema 下对象权限
schemaObjectPrivileges ::=
ALTER | DROP | SELECT | INSERT | READ METADATA | ALL
参数说明
| 参数 | 必填 | 说明 |
|---|
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 权限时) | Schema 级别权限,例如 CREATE TABLE
CREATE TABLE 、CREATE VIEW
CREATE VIEW 、CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW 、ALL
ALL |
schemaObjectPrivileges
schemaObjectPrivileges | 是(授予 Schema 对象权限时) | Schema 下对象权限,例如 ALTER
ALTER 、DROP
DROP 、SELECT
SELECT 、INSERT
INSERT 、READ METADATA
READ METADATA 、ALL
ALL |
workspace_name
workspace_name | 是(授予工作空间权限时) | 工作空间名称 |
workspace_object_name
workspace_object_name | 是(授予工作空间对象权限时) | 工作空间下对象名称(Schema、VCluster、Function 等) |
schema_name
schema_name | 是(授予 Schema 权限时) | Schema 名称 |
schema_object_name
schema_object_name | 是(授予 Schema 对象权限时) | 对象完整名称,格式为 schema_name.object_name
schema_name.object_name |
role_name
role_name | 是(授予角色时) | 被授权的角色名称 |
user_name
user_name | 是(授予用户时) | 被授权的用户名称 |
WITH GRANT OPTION
WITH GRANT OPTION | 否 | 允许被授权方将该权限再转授给其他用户 |
使用示例
-
授予角色
simple_role
simple_role
在工作空间下创建 VCLUSTER 的权限:
GRANT CREATE VCLUSTER ON WORKSPACE lakehouse_public TO ROLE simple_role;
-
授予角色
simple_role
simple_role
修改名为 default
default
的 VCLUSTER 的权限:
GRANT ALTER VCLUSTER ON VCLUSTER default TO ROLE simple_role;
-
授予角色
simple_role
simple_role
在 public
public
Schema 下创建表和视图的权限:
GRANT CREATE VIEW, CREATE TABLE ON SCHEMA public TO ROLE simple_role;
-
授予角色
my_role
my_role
对指定表的查询和修改权限:
GRANT SELECT, ALTER ON TABLE public.my_table TO ROLE my_role;
-
授予角色
my_role
my_role
对指定视图的查询权限:
GRANT SELECT ON VIEW public.my_view TO ROLE my_role;
-
授予角色
my_role
my_role
对指定物化视图的查询权限:
GRANT SELECT ON MATERIALIZED VIEW public.my_materialized_view TO ROLE my_role;
-
授予用户
tester
tester
角色 test_readonly_role
test_readonly_role
:
GRANT ROLE test_readonly_role TO USER tester;
-
授予用户
tester
tester
查询指定表的权限,并允许其转授:
GRANT SELECT ON TABLE public.my_table TO USER tester WITH GRANT OPTION;
执行成功后返回空结果集,无错误信息即表示授权成功。可通过
SHOW GRANTS TO ROLE role_name
SHOW GRANTS TO ROLE role_name
或
SHOW GRANTS TO USER user_name
SHOW GRANTS TO USER user_name
验证授权结果。
注意事项
- 执行此命令需要具备
workspace_admin
workspace_admin
或 security_admin
security_admin
角色,或者对目标对象拥有 WITH GRANT OPTION
WITH GRANT OPTION
权限。
- 推荐通过角色(
GRANT ROLE
GRANT ROLE
)管理权限,便于批量授权和统一回收。
- 遵循最小权限原则,仅授予完成工作所需的最低权限。
- 使用
WITH GRANT OPTION
WITH GRANT OPTION
时需谨慎,被授权方可能将权限扩散给其他用户。
Instance Role 授权
通过 Instance Role 可授予跨工作空间的全局权限,授权对象包括用户或其他角色。
语法说明
-- 将 Instance Role 授予用户
GRANT INSTANCE ROLE <role_name> TO USER <user_name>;
-- 授予 Instance Role 工作空间权限
GRANT <privilege> ON WORKSPACE <workspace_name> TO INSTANCE ROLE <role_name>;
-- 授予 Instance Role 表级权限
GRANT <privilege> ON TABLE <workspace>.<schema>.<table> TO INSTANCE ROLE <role_name>;
-- 查看 Instance Role 权限
SHOW GRANTS TO INSTANCE ROLE <role_name>;
示例
-- 授予用户 Instance Role
GRANT INSTANCE ROLE inst_role TO USER lh_engine_test_01;
-- 授予工作空间全部权限
GRANT ALL ON WORKSPACE ws1 TO INSTANCE ROLE inst_role;
-- 授予单表权限
GRANT ALL ON TABLE ws1.schema.table TO INSTANCE ROLE inst_role;
-- 查看权限(预期含跨空间授权记录)
SHOW GRANTS TO INSTANCE ROLE inst_role;
-- 回收工作空间权限
REVOKE ALL ON WORKSPACE ws1 FROM INSTANCE ROLE inst_role;