Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

管理自定义角色

本指南适用于在 ClickHouse Cloud 中拥有 Admin 角色的用户。

ClickHouse Cloud 客户可以选择预定义的系统角色,也可以创建自定义角色并分配给用户。有关系统角色及其对应权限的更多信息,请参阅控制台角色和权限。本指南将详细介绍如何管理自定义角色。

创建自定义角色

自定义角色可以包含组织、服务和数据库权限的任意组合。权限可应用于全部或部分服务和数据库。

进入组织设置并选择 Users and roles

在 services 页面中,选择你的组织名称。然后在弹出菜单中选择 Users and roles 菜单项。

[object Object]

在屏幕顶部中间选择 Roles 选项卡。

[object Object]

点击屏幕右上角的 Create new role 按钮。

为角色命名

输入一个便于识别的角色名称。这将是在为用户和 API 密钥 分配角色时显示的名称。

[object Object]

点击 Allow 按钮,然后从 Organization、Service 和/或 Database 权限中进行选择。有关所有权限的说明,请参阅控制台角色和权限

检查新角色

完成之前,请检查分配给新角色的权限。确认无误后,点击 Create role

管理数据库角色 (Beta)

Beta 版功能

除控制台权限外,自定义角色还可包含数据权限,以控制对所选服务中数据库的访问。这样,您可以在一个位置管理控制台和数据库访问权限,无需在每个数据库中分别维护角色。

向自定义角色添加数据权限时,ClickHouse Cloud 会在每个所选服务中创建一个对应的角色,并添加 cloud: 前缀。例如,名为 readonly 的自定义角色会在数据库中显示为 cloud:readonly。自定义角色的成员通过 SQL 控制台的免密码身份验证连接到服务时,将获得这些数据库权限。

前置条件

服务上的自定义数据库角色依赖于 JWT 身份验证,禁用时不会生效。在向角色添加数据权限之前,请进入相应服务,打开 Settings,然后在 Security 部分找到 JWT authentication 卡片。确保已启用 SQL 控制台 切换开关。

已启用 SQL 控制台 切换开关的 JWT 身份验证卡片

向角色添加数据权限

创建自定义角色,或编辑现有角色。在角色对话框中,单击 Allow permissions 按钮并选择 Data

选择服务

选择要应用权限的服务。添加更多服务即可在多个服务中应用相同的 Read-onlyAdmin 权限。

选择访问级别

选择 Read-onlyAdminCustom 访问级别。选择 Custom 时,可通过 ClickHouse GRANT 语句定义具体的数据访问权限。仅当权限针对单个服务时才能选择 Custom 访问;若要为多个服务定义自定义权限,请为每个服务单独添加一项 Data 权限。

新建角色对话框,其中的数据权限由自定义授权语句定义

创建角色

单击 Create role。系统将在所选服务中创建数据库角色。角色最多可能需要 10 分钟才能同步到服务,但被分配该角色的用户在查询服务时会立即获得其权限。

验证数据库角色

通过控制台管理的角色会在数据库中创建,其名称带有 cloud: 前缀,存储类型为 cloud,创建后最多可能需要 10 分钟才会显示。要列出这些角色,请查询服务中的 system.roles 表:

SELECT * FROM system.roles;
┌─name───────────┬─id───────────────────────────────────┬─storage─┐
│ cloud:readonly │ 9a4910f4-abcf-4904-466a-717c8c75ac42 │ cloud   │
└────────────────┴──────────────────────────────────────┴─────────┘

更新自定义角色

自定义角色创建后可以更新。用户会失去从该角色中移除的所有权限,并获得新增的所有权限。

  1. 进入组织设置,然后选择 Users and roles
  2. 选择 Roles 选项卡
  3. 选择要更新的角色旁边的三个点
  4. 选择 Edit
  5. 修改权限
  6. 选择 Edit role

删除自定义角色

自定义角色可随时删除。

  1. 进入组织设置并选择 Users and roles
  2. 选择 Roles 选项卡
  3. 选择要删除的角色旁边的三个点
  4. 查看删除该角色后将失去访问权限的用户和 API 密钥,并按需调整分配。
  5. 选择 Delete role 完成删除
Navigation