配置访问控制

本文介绍如何在云器 Lakehouse 中为用户和角色配置访问控制。Lakehouse 使用两类相互独立的权限:功能权限控制用户能否进入 Studio 模块并执行页面操作,元数据权限控制用户可以访问哪些 Workspace、Schema、Table、Virtual Cluster 等对象。生产环境通常需要组合配置这两类权限。

权限类型控制内容配置方式
功能权限Studio 菜单、页面及创建、执行、运维、发布等具体操作在 Web 端的角色详情页配置
元数据权限Lakehouse 对象的查看、使用、查询、写入、修改和删除使用 SQL
GRANT
GRANT
/
REVOKE
REVOKE
,或在 Web 端配置数据权限
角色授予用户是否获得角色中包含的功能权限和元数据权限Web 端或 SQL
GRANT ROLE
GRANT ROLE
/
REVOKE ROLE
REVOKE ROLE

例如,要让开发人员在 Studio 中查询一张表,除了授予 开发 → 查看、执行 功能权限,还需要授予一个 Virtual Cluster 的

USE
USE
权限及目标表的
READ METADATA
READ METADATA
和
SELECT
SELECT
权限。只配置其中一类权限,无法完成完整操作。

服务实例级管理

为服务实例(instance)指定额外的管理员用户

在云器Lakehouse中,创建服务实例的用户默认拥有“实例管理员”(instance_admin)角色。为确保至少有一名用户可执行实例层面的管理任务(如创建工作空间、管理实例级角色),当你移除被授予“实例管理员”(instance_admin)角色的用户时至少需要保留一名用户,否则会收到报错提示。建议至少再指定一名用户为实例管理员,以避免因用户不可用或其他特殊情况造成的影响。

授予实例级别角色

服务实例级别的角色仅支持通过Web端方式授予。仅具备“服务实例管理员”(instance_admin)角色的用户可进行此操作。

在服务实例中,依次打开 管理 → 安全 → 角色。

点击需要授予的服务实例角色,进入该角色的详情页面,点击“用户授予”:

在弹窗中勾选需要授予的用户,点击“授权”按钮,即可完成实例角色的授予。

工作空间级管理

指定工作空间(workspace)管理员

创建工作空间(workspace)的用户默认拥有该工作空间的"工作空间管理员(workspace_admin)"角色,该角色具备管理工作空间内的所有权限。每个工作空间内至少需要有一名用户被授予工作空间管理员角色,可以有多个用户被同时授予。

管理工作空间内角色和成员

每个工作空间内的角色和成员是与其他工作空间独立的,需要单独授予。仅一个工作空间的工作空间管理员(workspace_admin)角色,可以管理该工作空间内的角色授予、创建、删除,以及空间内成员的添加、移除。

管理空间成员

一个用户若要在指定工作空间内使用计算集群(Vcluster)和执行SQL,其前提条件是加入该工作空间。工作空间管理员可以通过以下两种方式将指定用户加入工作空间中:

Web端操作

进入服务实例后,依次打开 管理 → 工作空间,进入工作空间列表。点击工作空间名称,进入需要添加成员的工作空间详情。

在工作空间详情页点击“+ 添加用户” 按钮,在弹窗中选择需要添加的用户。只有服务实例中已存在且当前未加入此工作空间的用户才会在列表中显示。勾选一到多名用户,随后点击“添加用户”或“添加用户并授予角色”按钮,将已选择用户添加进入工作空间。成功添加后,可在工作空间的“用户”列表中找到新添加的用户。

在工作空间的“用户”列表中,点击某一用户右侧操作列的“...”,选择“移除用户”,将从工作空间中移除该用户。被移除的用户将立即失去被授予的空间角色,并失去使用工作空间内计算集群(Vcluster)和在该工作空间内执行SQL的权限。

请注意,从工作空间移除的用户,仍将具备被直接授予给用户的数据权限,即可以在其他工作空间行使被授予的数据权限,对数据进行查询或变更。因此,推荐通过授予角色的方式来管理权限,以降低此类场景带来的权限管理难度。

SQL操作

通过JDBC连接工作空间,为工作空间添加用户时执行以下语句:

CREATE USER <user_name>;

<user_name>替换为需要加入工作空间的用户名。仅支持添加服务实例中已存在且当前没有加入此工作空间的用户。

从工作空间移除用户执行以下语句:

DROP USER <user_name>;

<user_name>替换为需要移除工作空间的用户名。该操作不会删除此用户身份,只会从当前工作空间中移除此用户。

使用工作空间级别角色

在工作空间内进行开发

在工作空间中进行开发需要:具备在工作空间中执行SQL的权限(成为工作空间成员后获得);具备使用工作空间中计算资源的权限;具备需要操作的数据对象的权限。

在每个工作空间中预置了以下角色默认具备以上的一种或多种权限,可将以下角色授予用户,以快速开始数据开发。

工作空间开发者(workspace_dev)角色

workspace_dev角色默认具备工作空间内所有数据对象(table、view、dynamic table等,详见'元数据对象')的读写权限,默认具备工作空间内所有计算集群的使用权限。

用户被授予workspace_dev角色后,可直接在Web页面的"开发"功能内或使用JDBC协议进行数据开发。

注意,workspace_dev角色默认具备的数据对象读写权限并不支持其将权限二次授权。如需授予其他角色数据对象的读或写权限,请使用具备工作空间管理员(workspace_admin)角色的用户进行操作。

数据分析师(workspace_analyst)角色

workspace_analyst角色默认具备工作空间内所有计算集群的使用权限,默认具备工作空间内所有数据对象(table、view、dynamic table等)的read metadata(元数据查看)权限,但是不具备数据对象的select权限,即不能对任何的表或视图执行select查询。使用workspace_analyst角色进行数据查询分析时,需要授予workspace_analyst角色要查询数据对象的select权限,以执行数据查询操作。

对workspace_analyst角色的数据授权操作,请参考“GRANT”语句操作文档。

使用自定义角色或用户

自定义角色和用户通过授权,也可在工作空间中执行 SQL 进行开发或数据查询分析。要让自定义角色使用 Web 端的 开发、任务运维、Notebook 或 发布中心等功能,还需要在角色详情页为其配置相应的功能权限。对自定义角色和用户的授权需要具备

workspace_admin
workspace_admin
角色的用户进行操作。元数据权限授权可参考以下语句:

--将工作空间内所有计算集群的使用和元数据查看权限授予自定义角色 GRANT USE, READ METADATA ON ALL VCLUSTERS TO ROLE <CUSTOM_ROLE_NAME>; --[可选]将指定名称的计算集群的使用和元数据查看权限授予自定义角色 GRANT USE, READ METADATA ON VCLUSTER <VCLUSTER_NAME> TO ROLE <CUSTOM_ROLE_NAME>; --将指定名称的schema下所有对象的select和元数据查询权限授予自定义角色 GRANT SELECT, READ METADATA ON ALL OBJECTS IN SCHEMA <SCHEMA_NAME> TO ROLE <CUSTOM_ROLE_NAME>; --将指定table的select和元数据查询权限授予自定义角色 GRANT SELECT, READ METADATA ON TABLE <TABLE_NAME> TO ROLE <CUSTOM_ROLE_NAME>;

对用户授权时,将上述语句中的 TO ROLE <CUSTOM_ROLE_NAME> 替换为 TO USER <USER_NAME> 即可。

配置功能权限

功能权限用于控制角色能否进入 Studio 模块,以及能否在模块中执行具体操作。功能权限只能在 Web 端配置,不支持使用 SQL

GRANT
GRANT
或
REVOKE
REVOKE
授权。

只有工作空间管理员(

workspace_admin
workspace_admin
)可以管理当前工作空间内角色的功能权限。配置步骤如下:

  1. 打开 管理 → 安全 → 角色。
  2. 选择目标工作空间,并点击需要配置的自定义角色。
  3. 在角色详情页打开 权限页签,切换到 功能。
  4. 点击 授权功能,展开功能域和功能对象。
  5. 勾选需要授予的原子操作,并点击 确定。

角色详情页会按功能对象展示已授予的 READ 和 WRITE 操作。需要调整权限时,点击对象右侧的 编辑;需要回收整个功能对象的权限时,点击 移出。

功能权限按“功能域 → 功能对象 → READ/WRITE → 原子操作”组织。完整的功能对象和权限点说明参见功能对象及权限点。

组合配置功能权限和元数据权限

以下示例展示常见职责需要组合的权限。表中功能权限为建议的最小起点,实际授权应根据任务类型和组织职责调整。

职责建议功能权限需要配套的元数据权限
开发人员开发:查看、下载、复制、创建、修改、执行、提交;作业历史:查看目标 Virtual Cluster 的
USE
USE
、
READ METADATA
READ METADATA
;相关 Schema 和数据对象权限
发布人员发布:查看、发布;开发:查看目标工作空间成员身份,以及发布流程涉及对象的只读权限
工作空间运维任务、任务实例、补数任务和 PIPE 任务的查看与必要运维操作;告警事件处置;作业历史查看默认不需要业务表读写权限;排障需要查询数据时按对象单独授权
数据质量管理员数据质量规则的创建、修改、删除、执行;数据质量任务的重跑和状态处置校验对象的元数据/查询权限及执行集群的
USE
USE
权限
Notebook 分析人员Notebook:查看、创建、修改、删除、执行Virtual Cluster
USE
USE
及目标 Table/View 的
READ METADATA
READ METADATA
、
SELECT
SELECT

功能权限应在角色详情页检查。

SHOW GRANTS
SHOW GRANTS
用于查看 SQL 元数据权限和角色授予关系,不能替代功能权限检查。

提交并运维工作空间调度任务

在工作空间中提交调度任务,可以在 Web 端的 开发功能中完成。

workspace_admin
workspace_admin
(工作空间管理员)和
workspace_dev
workspace_dev
(工作空间开发者)角色默认具备提交任务的功能权限;工作空间级自定义角色也可以通过授予 开发 → 提交获得该能力。

工作空间中运维调度任务的系统角色为

workspace_sre
workspace_sre
(工作空间运维)。具备该角色的用户,可在 运维监控 → 任务运维、运维监控 → 监控告警和 数据 → 数据质量中,对其所在空间的调度任务进行管理操作。

workspace_sre
workspace_sre
角色具备该角色所在工作空间下调度任务的运维功能权限,不具备工作空间下计算资源的使用权限和数据对象查询权限。如果运维人员需要使用计算集群或查询数据以辅助排障,应按最小范围单独授予相应元数据权限。

如需对服务实例内所有工作空间的调度任务进行统一管理,可向用户授予实例级别的

instance_sre
instance_sre
(实例运维)角色。该角色的权限是服务实例内各工作空间
workspace_sre
workspace_sre
默认权限的并集。

创建自定义角色

为实践“最小权限原则”,建议根据你的组织业务职能划分创建自定义角色,并为其分配针对特定对象和操作的权限。这样,你可以精确控制用户对特定数据或对象的访问范围。

创建和使用自定义角色的一般流程:

  1. 在 Web 端创建工作空间级自定义角色,或使用
    CREATE ROLE
    CREATE ROLE
    创建角色。
  2. 在 Web 端配置角色需要的功能权限。
  3. 使用
    GRANT
    GRANT
    或 Web 端为角色配置所需的元数据权限。
  4. 使用
    GRANT ROLE
    GRANT ROLE
    或 Web 端将角色授予用户。

Web 端支持创建工作空间级自定义角色,并为其配置功能权限和数据权限;暂不支持创建实例级自定义角色。系统预置角色的默认权限由 Lakehouse 提供,不能按自定义角色的方式修改。

注意:云器Lakehouse中,角色不能被授予给其他角色,即不支持角色层次结构(Role Hierarchy)。所有角色最终直接授予给用户,避免了因角色间的层级继承关系而带来的、判断具体用户权限范围的复杂度。

授予或移除用户的角色

你可以使用Web或执行授权SQL的操作方式向用户授予或移除角色。仅具备服务实例管理员(instance_admin)或工作空间管理员(workspace_admin)角色的用户,可以为用户授予或移除角色。服务实例管理员(instance_admin)具备向服务实例内所有用户授予实例级别角色的权限;工作空间管理员(workspace_admin)具备向工作空间内成员授予空间内角色的权限。

Web端操作

在“安全”-“角色”页面,可以查看当前实例下的服务实例级别角色和工作空间级别角色。

服务实例管理员(instance_admin)角色可查看所有的实例级别角色和所有工作空间级别角色,可管理所有实例级别角色的授权;

工作空间管理员(workspace_admin)角色可查看本工作空间内的所有工作空间角色,并管理这些角色的授权。如一个用户同时具备多个工作空间的工作空间管理员(workspace_admin)角色,则可以同时管理多个工作空间内的角色授权。

对任一角色授权时,点击该角色名称,进入角色详情页,此时可以查看该角色已被授予的所有用户。点击“+ 用户授予”,在弹窗中勾选需要添加的用户,点击“授权”,即可将角色授予用户。

移除角色被授予的用户时,点击用户名右侧的"...",选择“移除用户”,即可取消该用户使用这个角色的权限。

在“管理”-“工作空间”列表进入工作空间详情页面,在“角色”页签也可以查看该空间内的角色列表,并通过上述操作将该角色授予或取消授予用户。


SQL端操作

仅工作空间级别的用户支持使用SQL操作进行授权。在工作空间内执行以下语句,可将空间内的角色授予指定用户。

Grant ROLE <ROLE_NAME> TO USER <USER_NAME>;

执行以下语句可移除角色中的指定用户;

REVOKE ROLE <ROLE_NAME> FROM USER <USER_NAME>;

示例:创建自定义角色并授予权限

你可以在 Web 端创建工作空间级自定义角色,也可以使用 SQL 创建。以下示例使用 SQL 创建角色并授予元数据权限;如需使用 Studio 页面功能,还需要按照“配置功能权限”中的步骤完成 Web 端授权。

假设你希望创建一个空间级角色r1,用于管理特定schema s1下的一张表t1。为此,需要为r1授予:

  • 对计算集群(假设名称为v1)的使用权限(USAGE)。
  • [可选] 计算集群(假设名称为 v1)的 READ METADATA 权限,以在计算集群页面或 SHOW VCLUSTERS 结果中可见这个计算集群;
  • 对表s1.t1的ALL权限,以对表执行select、insert、update、alter等操作。

创建自定义角色

CREATE ROLE r1;

为角色授予权限

-- 为r1角色授予对计算集群(假设名称为v1)的使用权限(USAGE) GRANT use ON VCLUSTER v1 TO ROLE r1; --[可选]为r1角色授予对计算集群(假设名称为v1)的read metadata权限 GRANT read metadata ON VCLUSTER v1 TO ROLE r1; --为r1角色授予对表s1.t1的所有权限 GRANT all ON table s1.t1 to ROLE r1;

将角色授予给用户

GRANT ROLE r1 TO USER u1;

示例:创建只读角色

若你需要一个角色仅能对某schema中所有表进行查询(只读访问),可按照与创建自定义角色相同的流程操作。区别在于这个场景下仅授予表的SELECT和READ METADATA权限,而不包含任何写入、修改、删除等权限。同时,这里使用

ALL TABLES IN SCHEMA s1
ALL TABLES IN SCHEMA s1
来表达 s1 下当前和未来的所有 table 对象,以简化授权表达。

例如,为read_only角色授予schema s1下所有表的SELECT和READ METADATA权限:

GRANT SELECT, READ METADATA ON ALL TABLES IN SCHEMA s1 TO ROLE read_only;

请注意,如果read_only角色没有计算集群的使用权限,此时无法使用计算资源对table执行查询。所以还需要至少授予该角色1个计算集群(vcluster)的使用权限。

例如,为read_only角色授予名称为demo_vcluster的计算集群的使用权限。

GRANT USE ON VCLUSTER demo_vcluster TO ROLE read_only;

查看已授予的权限

使用SHOW GRANTS命令可查看某对象或角色的当前权限状况。例如:

-- 查看schema d1.s1上的已授予权限 SHOW GRANTS ON SCHEMA d1.s1; -- 查看角色r1获得的权限 SHOW GRANTS TO ROLE r1; -- 查看用户smith获得的权限和角色 SHOW GRANTS TO USER smith;

SHOW GRANTS
SHOW GRANTS
显示角色授予关系和元数据权限。功能权限需要在 管理 → 安全 → 角色 → 权限 → 功能中查看。

相关文档

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