菜单
Grafana Cloud Enterprise

分配 RBAC 角色

注意

可用于

Grafana EnterpriseGrafana Cloud

本主题将介绍如何使用角色选择器、配置和 HTTP API 为用户和团队分配固定和自定义角色。

使用角色选择器在 UI 中分配固定角色

本节介绍如何:

  • 作为组织管理员,为用户、团队或服务账号分配固定角色。
  • 作为服务器管理员,为用户分配固定角色。这种方法使您无需切换组织即可为用户在多个组织中分配固定角色。

在两种情况下,分配都仅应用于受影响组织内的用户、团队或服务账号,而不应用于其他组织。例如,如果您在“**主要**”组织中授予用户“**数据源编辑者**”角色,则该用户可以在“**主要**”组织中编辑数据源,但在其他组织中不能。

开始之前

  • 规划您的 RBAC 推行策略.

  • 确定要分配给用户、团队或服务账号的固定角色。

    有关可用固定角色的更多信息,请参阅RBAC 角色定义

  • 确保您的用户账号具有正确的权限

    • 如果您要在组织内为用户、团队或服务账号分配权限,则必须具有组织管理员或服务器管理员权限。
    • 如果您要为属于多个组织的用户分配权限,则必须具有服务器管理员权限。
    • 如果您的 Grafana 用户账号具有分配给您为其分配 RBAC 的同一组织的 fixed:roles:writer 固定角色,或者具有 users.roles:addusers.roles:remove 权限的自定义角色,则也可以分配固定角色。
    • 您的用户账号必须拥有您正在授予的角色。例如,如果您想授予团队 fixed:users:writer 角色,您自己必须拥有该角色。

为用户、团队或服务账号分配固定角色

  1. 登录 Grafana。

  2. 切换到包含该用户、团队或服务账号的组织。

    有关切换组织的更多信息,请参阅切换组织

  3. 在左侧菜单中,点击“**管理**”、“**用户与访问**”,然后点击“**用户**”、“**团队**”或“**服务账号**”。

  4. 在“**角色**”列中,选择要分配给用户、团队或服务账号的固定角色。

  5. 点击“**更新**”。

作为服务器管理员分配固定角色

  1. 以服务器管理员身份登录 Grafana。
  2. 在左侧菜单中点击“**管理**”、“**用户与访问**”,然后点击“**用户**”。
  3. 点击一个用户。
  4. 在“组织”部分,点击“**更改角色**”。
  5. 选择要分配给用户在某个组织中的角色。
  6. 点击“**保存**”。

使用 HTTP API 分配固定或自定义角色

本节介绍如何:

  • 作为组织管理员,为用户、团队或服务账号分配固定角色。

开始之前

  • 规划您的 RBAC 推行策略.

  • 确定要分配给用户、团队或服务账号的固定角色。

    有关可用固定角色的更多信息,请参阅RBAC 角色定义

  • 确保您的用户账号具有正确的权限

    • 如果您要在组织内为用户、团队或服务账号分配权限,则必须具有组织管理员或服务器管理员权限。
    • 如果您要为属于多个组织的用户分配权限,则必须具有服务器管理员权限。
    • 如果您的 Grafana 用户账号具有分配给您为其分配 RBAC 的同一组织的 fixed:roles:writer 固定角色,或者具有 users.roles:addusers.roles:remove 权限的自定义角色,则也可以分配固定角色。
    • 您的用户账号必须拥有您正在授予的角色。例如,如果您想授予团队 fixed:users:writer 角色,您自己必须拥有该角色。

为用户或服务账号分配固定角色

请参阅用于用户角色分配的 RBAC HTTP API

服务账号 ID 可以用来代替用户 ID。

为团队分配固定角色

请参阅用于团队角色分配的 RBAC HTTP API

使用配置向团队分配固定或自定义角色

除了使用 Grafana 角色选择器外,您还可以使用基于文件的配置来为团队分配固定角色。如果您有大量团队,配置可以提供一种更简单的方法来分配和管理角色分配。

开始之前

  • 请参阅角色配置
  • 确保要添加固定角色的团队存在。有关创建团队的更多信息,请参阅管理团队

为团队分配角色

  1. 打开 YAML 配置文件。

  2. 请参考下表添加属性和值。

    属性描述
    roles输入您要创建/更新的自定义角色或多个自定义角色。
    roles > name输入自定义角色的名称。
    roles > version输入自定义角色的版本号。角色分配与角色版本号无关。
    roles > global输入 true。否则可以指定 orgId
    roles > permissions输入权限的 actionscope 值。有关权限操作和范围的更多信息,请参阅RBAC 权限、操作和范围
    teams输入要向其添加自定义角色或多个自定义角色的团队。
    teams > orgId由于团队属于组织,您必须添加 orgId 值。
    teams > name输入团队的名称。
    teams > roles输入您要授予团队的自定义或固定角色或多个角色。
    teams > roles > name输入角色的名称。
    teams > roles > global输入 true,或指定您要分配给团队的角色的 orgId。固定角色是全局的。

    有关管理自定义角色的更多信息,请参阅使用配置创建自定义角色

  3. 重新加载配置配置文件。

    有关在运行时重新加载配置配置的更多信息,请参阅重新加载配置配置

以下示例创建了 custom:users:writer 角色,并将其以及 fixed:users:writer 角色分配给 user writersuser admins 团队

以下示例:

  • 创建 custom:users:writer 角色。
  • custom:users:writer 角色和 fixed:users:writer 角色分配给 user adminsuser writers 团队。
yaml
# config file version
apiVersion: 2

# Roles to insert/update in the database
roles:
  - name: 'custom:users:writer'
    description: 'List/update other users in the organization'
    version: 1
    global: true
    permissions:
      - action: 'org.users:read'
        scope: 'users:*'
      - action: 'org.users:write'
        scope: 'users:*'

# Assignments to teams
teams:
  - name: 'user writers'
    orgId: 1
    roles:
      # Custom role assignment
      - name: 'custom:users:writer'
        global: true
      # Fixed role assignment
      - name: 'fixed:users:writer'
        global: true
  - name: 'user admins'
    orgId: 1
    roles:
      - name: 'custom:users:writer'
        global: true
      - name: 'fixed:users:writer'
        global: true

注意:角色不必在配置配置文件中定义即可分配。如果角色存在于数据库中,则可以分配。

从团队移除角色分配

如果您想从团队移除某个分配,请在 teams > roles 部分添加 state: absent,然后重新加载配置文件。

以下示例:

  • 创建 custom:users:writer 角色
  • custom:users:writer 角色和 fixed:users:writer 角色分配给 user admins 团队
  • 如果 user writers 团队中存在 custom:users:writerfixed:users:writer 分配,则将其移除。
yaml
# config file version
apiVersion: 2

# Roles to insert/update in the database
roles:
  - name: 'custom:users:writer'
    description: 'List/update other users in the organization'
    version: 1
    global: true
    permissions:
      - action: 'org.users:read'
        scope: 'users:*'
      - action: 'org.users:write'
        scope: 'users:*'

# Assignments to teams
teams:
  - name: 'user writers'
    orgId: 1
    roles:
      - name: 'fixed:users:writer'
        global: true
        state: 'absent' # Remove assignment
      - name: 'custom:users:writer'
        global: true
        state: 'absent' # Remove assignment
  - name: 'user admins'
    orgId: 1
    roles:
      - name: 'fixed:users:writer'
        global: true
      - name: 'custom:users:writer'
        global: true

注意:角色不必在配置配置文件中定义即可撤销。如果角色存在于数据库中,则可以撤销。