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
| dynamicTablePrivileges ON DYNAMIC TABLE schema_object_name
TO { ROLE role_name | USER user_name } [WITH GRANT OPTION];
⚠️ 注意:动态表(Dynamic Table)授权必须使用
ON DYNAMIC TABLE
ON DYNAMIC TABLE
,不能用
ON TABLE
ON TABLE
。对普通表使用
ON DYNAMIC TABLE
ON DYNAMIC TABLE
或对动态表使用
ON TABLE
ON TABLE
均会报错
Invalid privilege ... for object type 'TABLE'
Invalid privilege ... for object type 'TABLE'
。
权限类型说明
-- 工作空间级别:创建对象
workspacePrivileges ::=
CREATE { SCHEMA | VCLUSTER }
-- 工作空间下对象权限
workspaceObjectPrivileges ::=
ALTER | DROP | READ METADATA | ALL [PRIVILEGES]
-- Schema 级别:创建对象
schemaPrivileges ::=
CREATE { TABLE | VIEW | MATERIALIZED VIEW | DYNAMIC TABLE } | ALL
-- Schema 下对象权限(普通表、视图、物化视图)
schemaObjectPrivileges ::=
ALTER | DROP | SELECT | INSERT | READ METADATA | ALL
-- 动态表权限
dynamicTablePrivileges ::=
SELECT | ALTER DYNAMIC TABLE | DROP DYNAMIC TABLE | RESTORE DYNAMIC TABLE | READ METADATA | ALL [PRIVILEGES]
参数说明
参数
必填
说明
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;
授予角色
my_role
my_role
对指定动态表的查询权限:
GRANT SELECT ON DYNAMIC TABLE public.my_dynamic_table TO ROLE my_role;
授予角色对动态表的全部权限:
GRANT ALL PRIVILEGES ON DYNAMIC TABLE public.my_dynamic_table 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;