分配 RBAC 角色
注意
可用于
本主题将介绍如何使用角色选择器、配置和 HTTP API 为用户和团队分配固定和自定义角色。
使用角色选择器在 UI 中分配固定角色
本节介绍如何:
- 作为组织管理员,为用户、团队或服务账号分配固定角色。
- 作为服务器管理员,为用户分配固定角色。这种方法使您无需切换组织即可为用户在多个组织中分配固定角色。
在两种情况下,分配都仅应用于受影响组织内的用户、团队或服务账号,而不应用于其他组织。例如,如果您在“**主要**”组织中授予用户“**数据源编辑者**”角色,则该用户可以在“**主要**”组织中编辑数据源,但在其他组织中不能。
开始之前
确定要分配给用户、团队或服务账号的固定角色。
有关可用固定角色的更多信息,请参阅RBAC 角色定义。
确保您的用户账号具有正确的权限
- 如果您要在组织内为用户、团队或服务账号分配权限,则必须具有组织管理员或服务器管理员权限。
- 如果您要为属于多个组织的用户分配权限,则必须具有服务器管理员权限。
- 如果您的 Grafana 用户账号具有分配给您为其分配 RBAC 的同一组织的
fixed:roles:writer
固定角色,或者具有users.roles:add
和users.roles:remove
权限的自定义角色,则也可以分配固定角色。 - 您的用户账号必须拥有您正在授予的角色。例如,如果您想授予团队
fixed:users:writer
角色,您自己必须拥有该角色。
为用户、团队或服务账号分配固定角色
登录 Grafana。
切换到包含该用户、团队或服务账号的组织。
有关切换组织的更多信息,请参阅切换组织。
在左侧菜单中,点击“**管理**”、“**用户与访问**”,然后点击“**用户**”、“**团队**”或“**服务账号**”。
在“**角色**”列中,选择要分配给用户、团队或服务账号的固定角色。
点击“**更新**”。
作为服务器管理员分配固定角色
- 以服务器管理员身份登录 Grafana。
- 在左侧菜单中点击“**管理**”、“**用户与访问**”,然后点击“**用户**”。
- 点击一个用户。
- 在“组织”部分,点击“**更改角色**”。
- 选择要分配给用户在某个组织中的角色。
- 点击“**保存**”。
使用 HTTP API 分配固定或自定义角色
本节介绍如何:
- 作为组织管理员,为用户、团队或服务账号分配固定角色。
开始之前
确定要分配给用户、团队或服务账号的固定角色。
有关可用固定角色的更多信息,请参阅RBAC 角色定义。
确保您的用户账号具有正确的权限
- 如果您要在组织内为用户、团队或服务账号分配权限,则必须具有组织管理员或服务器管理员权限。
- 如果您要为属于多个组织的用户分配权限,则必须具有服务器管理员权限。
- 如果您的 Grafana 用户账号具有分配给您为其分配 RBAC 的同一组织的
fixed:roles:writer
固定角色,或者具有users.roles:add
和users.roles:remove
权限的自定义角色,则也可以分配固定角色。 - 您的用户账号必须拥有您正在授予的角色。例如,如果您想授予团队
fixed:users:writer
角色,您自己必须拥有该角色。
为用户或服务账号分配固定角色
服务账号 ID 可以用来代替用户 ID。
为团队分配固定角色
使用配置向团队分配固定或自定义角色
除了使用 Grafana 角色选择器外,您还可以使用基于文件的配置来为团队分配固定角色。如果您有大量团队,配置可以提供一种更简单的方法来分配和管理角色分配。
开始之前
为团队分配角色
打开 YAML 配置文件。
请参考下表添加属性和值。
属性 描述 roles
输入您要创建/更新的自定义角色或多个自定义角色。 roles > name
输入自定义角色的名称。 roles > version
输入自定义角色的版本号。角色分配与角色版本号无关。 roles > global
输入 true
。否则可以指定orgId
。roles > permissions
输入权限的 action
和scope
值。有关权限操作和范围的更多信息,请参阅RBAC 权限、操作和范围teams
输入要向其添加自定义角色或多个自定义角色的团队。 teams > orgId
由于团队属于组织,您必须添加 orgId
值。teams > name
输入团队的名称。 teams > roles
输入您要授予团队的自定义或固定角色或多个角色。 teams > roles > name
输入角色的名称。 teams > roles > global
输入 true
,或指定您要分配给团队的角色的orgId
。固定角色是全局的。有关管理自定义角色的更多信息,请参阅使用配置创建自定义角色。
重新加载配置配置文件。
有关在运行时重新加载配置配置的更多信息,请参阅重新加载配置配置。
以下示例创建了 custom:users:writer
角色,并将其以及 fixed:users:writer
角色分配给 user writers
和 user admins
团队
以下示例:
- 创建
custom:users:writer
角色。 - 将
custom:users:writer
角色和fixed:users:writer
角色分配给user admins
和user writers
团队。
# 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:writer
和fixed:users:writer
分配,则将其移除。
# 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
注意:角色不必在配置配置文件中定义即可撤销。如果角色存在于数据库中,则可以撤销。