GRANT

功能概述

将指定权限授予角色或用户,实现对工作空间资源的细粒度访问控制。

Workspace 用户和角色权限管理语法

GRANT 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 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 | DYNAMIC TABLE | FUNCTION | VOLUME | SEMANTIC VIEW} | ALL -- Schema 下对象权限(普通表、视图、物化视图) schemaObjectPrivileges ::= ALTER | DROP | SELECT | INSERT | READ METADATA | ALL -- 动态表权限 dynamicTablePrivileges ::= SELECT DYNAMIC TABLE | ALTER DYNAMIC TABLE | DROP DYNAMIC TABLE | UNDROP DYNAMIC TABLE | RESTORE DYNAMIC TABLE | INSERT | UPDATE | DELETE | TRUNCATE | READ METADATA | ALL [PRIVILEGES] -- 语义视图权限 semanticViewPrivileges ::= SELECT | ALTER | DROP | ALL [PRIVILEGES] -- Function 对象权限 functionPrivileges ::= ALTER FUNCTION | DROP FUNCTION | USE FUNCTION | READ METADATA | ALL [PRIVILEGES] -- Volume 对象权限 volumePrivileges ::= ALTER VOLUME | DROP VOLUME | READ VOLUME | WRITE VOLUME | READ METADATA | ALL [PRIVILEGES]

Function 和 Volume 都是 Schema 子对象。

CREATE FUNCTION
CREATE FUNCTION
和
CREATE VOLUME
CREATE VOLUME
授予在父 Schema 上;其余权限授予在具体对象上。Function/Volume 权限名中的对象后缀可以省略,但建议使用完整权限名;
SHOW GRANTS
SHOW GRANTS
使用完整权限名显示结果。

参数说明

参数必填说明
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 FUNCTION
CREATE FUNCTION
、
CREATE VOLUME
CREATE VOLUME
、
ALL
ALL
schemaObjectPrivileges
schemaObjectPrivileges
是(授予 Schema 对象权限时)Schema 下对象权限,例如
ALTER
ALTER
、
DROP
DROP
、
SELECT
SELECT
、
INSERT
INSERT
、
READ METADATA
READ METADATA
、
ALL
ALL
functionPrivileges
functionPrivileges
是(授予 Function 权限时)Function 对象权限,例如
USE FUNCTION
USE FUNCTION
、
ALTER FUNCTION
ALTER FUNCTION
、
DROP FUNCTION
DROP FUNCTION
volumePrivileges
volumePrivileges
是(授予 Volume 权限时)Volume 对象权限,例如
READ VOLUME
READ VOLUME
、
WRITE VOLUME
WRITE VOLUME
、
DROP VOLUME
DROP VOLUME
workspace_name
workspace_name
是(授予工作空间权限时)工作空间名称
workspace_object_name
workspace_object_name
是(授予工作空间对象权限时)工作空间下对象名称(Role、Schema、VCluster)
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
否允许被授权方将该权限再转授给其他用户

使用示例

  1. 授予角色

    simple_role
    simple_role
    在工作空间下创建 VCLUSTER 的权限:

    GRANT CREATE VCLUSTER ON WORKSPACE lakehouse_public TO ROLE simple_role;

  2. 授予角色

    simple_role
    simple_role
    修改名为
    default
    default
    的 VCLUSTER 的权限:

    GRANT ALTER VCLUSTER ON VCLUSTER DEFAULT TO ROLE simple_role;

  3. 授予角色

    simple_role
    simple_role
    在
    public
    public
    Schema 下创建表和视图的权限:

    GRANT CREATE VIEW, CREATE TABLE ON SCHEMA public TO ROLE simple_role;

  4. 授予角色

    my_role
    my_role
    对指定表的查询和修改权限:

    GRANT SELECT, ALTER ON TABLE public.my_table TO ROLE my_role;

  5. 授予角色

    my_role
    my_role
    对指定视图的查询权限:

    GRANT SELECT ON VIEW public.my_view TO ROLE my_role;

  6. 授予角色

    my_role
    my_role
    对指定物化视图的查询权限:

    GRANT SELECT ON MATERIALIZED VIEW public.my_materialized_view TO ROLE my_role;

  7. 授予角色

    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;

  8. 授予用户

    tester
    tester
    角色
    test_readonly_role
    test_readonly_role
    :

    GRANT ROLE test_readonly_role TO USER tester;

  9. 授予用户

    tester
    tester
    查询指定表的权限,并允许其转授:

    GRANT SELECT ON TABLE public.my_table TO USER tester WITH GRANT OPTION;

  10. 授予角色创建和使用 Function 所需的权限:

    GRANT CREATE FUNCTION ON SCHEMA public TO ROLE function_developer; GRANT USE FUNCTION ON FUNCTION public.image_to_text TO ROLE function_developer;

  11. 授予角色创建和读写 Volume 所需的权限:

    GRANT CREATE VOLUME ON SCHEMA public TO ROLE volume_developer; GRANT READ VOLUME ON VOLUME public.shared_files TO ROLE volume_developer; GRANT WRITE VOLUME ON VOLUME public.shared_files TO ROLE volume_developer;

  12. 授予角色

    my_role
    my_role
    对指定语义视图的查询权限:

    GRANT SELECT ON SEMANTIC VIEW public.my_semantic_view TO ROLE my_role;

  13. 批量授予角色

    my_role
    my_role
    查询 Schema
    public
    public
    下所有语义视图的权限:

    GRANT SELECT ON ALL SEMANTIC VIEWS IN SCHEMA public TO ROLE my_role;

  14. 授予角色

    my_role
    my_role
    在
    public
    public
    Schema 下创建动态表的权限:

    GRANT CREATE DYNAMIC TABLE ON SCHEMA public TO ROLE my_role;

  15. 批量授予角色

    my_role
    my_role
    查询 Schema
    public
    public
    下所有动态表的权限:

    GRANT SELECT ON ALL DYNAMIC TABLES IN SCHEMA public TO ROLE my_role;

执行成功后返回空结果集,无错误信息即表示授权成功。可通过

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;

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询