RBAC 权限、操作和作用域
注意
在 Grafana Enterprise 和 Grafana Cloud 中可用。
权限由操作和作用域组成。创建自定义角色时,请考虑用户可以执行的操作以及他们可以对其执行这些操作的资源。
要详细了解可以应用 RBAC 的 Grafana 资源,请参阅具有 RBAC 权限的资源。
- 操作:操作描述用户可以在资源上执行的任务。
- 作用域:作用域描述可以在何处执行操作,例如读取特定用户配置文件。在此示例中,权限与作用域
users:<userId>
相关联,并分配给相关角色。
操作定义
以下列表包含基于角色的访问控制操作。
操作 | 适用作用域 | 描述 |
---|---|---|
alert.instances.external:read |
| 读取支持告警的数据源中的告警和静默。 |
alert.instances.external:write |
| 管理支持告警的数据源中的告警和静默。 |
alert.instances:create | 无 | 在当前组织中创建静默。 |
alert.instances:read | 无 | 在当前组织中读取告警和静默。 |
alert.instances:write | 无 | 在当前组织中更新和过期静默。 |
alert.notifications.external:read |
| 读取支持告警的数据源中的模板、联系点、通知策略和静默时间。 |
alert.notifications.external:write |
| 管理支持告警的数据源中的模板、联系点、通知策略和静默时间。 |
alert.notifications:write | 无 | 管理当前组织中的模板、联系点、通知策略和静默时间。 |
alert.notifications:read | 无 | 读取当前组织中的所有模板、联系点、通知策略和静默时间。 |
alert.rules.external:read |
| 读取支持告警的数据源(Prometheus、Mimir 和 Loki)中的告警规则 |
alert.rules.external:write |
| 在支持告警的数据源(Mimir 和 Loki)中创建、更新和删除告警规则。 |
alert.rules:create |
| 在文件夹及其子文件夹中创建 Grafana 告警规则。将此权限与作用域中包含该文件夹的 folders:read 权限以及用户可以查询的数据源作用域中的 datasources:query 权限结合使用。 |
alert.rules:delete |
| 在文件夹及其子文件夹中删除 Grafana 告警规则。将此权限与作用域中包含该文件夹的 folders:read 权限以及用户可以查询的数据源作用域中的 datasources:query 权限结合使用。 |
alert.rules:read |
| 在文件夹及其子文件夹中读取 Grafana 告警规则。将此权限与作用域中包含该文件夹的 folders:read 权限以及用户可以查询的数据源作用域中的 datasources:query 权限结合使用。 |
alert.rules:write |
| 在文件夹及其子文件夹中更新 Grafana 告警规则。将此权限与作用域中包含该文件夹的 folders:read 权限以及用户可以查询的数据源作用域中的 datasources:query 权限结合使用。 |
alert.silences:create |
| 在文件夹及其子文件夹中创建特定规则的静默。 |
alert.silences:read |
| 读取文件夹及其子文件夹中的所有通用静默和特定规则的静默。 |
alert.silences:write |
| 在文件夹及其子文件夹中更新和过期特定规则的静默。 |
alert.provisioning:read | 无 | 通过供应 API 读取所有 Grafana 告警规则、通知策略等。不需要对文件夹和数据源的权限。 |
alert.provisioning.secrets:read | 无 | 与 alert.provisioning:read 相同,外加导出包含已解密秘密的资源的能力。 |
alert.provisioning:write | 无 | 通过供应 API 更新所有 Grafana 告警规则、通知策略等。不需要对文件夹和数据源的权限。 |
alert.provisioning.provenance:write | 无 | 设置告警资源的供应状态。不能单独使用。要求用户具有访问资源的权限。 |
annotations:create |
| 创建注解。 |
annotations:delete |
| 删除注解。 |
annotations:read |
| 读取注解和注解标签。 |
annotations:write |
| 更新注解。 |
apikeys:read |
| 读取 API 密钥。 |
apikeys:delete |
| 删除 API 密钥。 |
banners:write | 无 | 创建公告横幅。 |
dashboards:create |
| 在一个或多个文件夹及其子文件夹中创建仪表盘。 |
dashboards:delete |
| 删除一个或多个仪表盘。 |
dashboards.insights:read | 无 | 读取仪表盘洞察数据并查看存在指示器。要查看洞察,还需要该仪表盘的 dashboards:read 权限。 |
dashboards.permissions:read |
| 读取一个或多个仪表盘的权限。 |
dashboards.permissions:write |
| 更新一个或多个仪表盘的权限。 |
dashboards:read |
| 读取一个或多个仪表盘。 |
dashboards:write |
| 更新一个或多个仪表盘。 |
dashboards.public:write |
| 写入共享仪表盘配置。 |
datasources.caching:read |
| 读取数据源查询缓存设置。 |
datasources.caching:write |
| 更新数据源查询缓存设置。 |
datasources:create | 无 | 创建数据源。 |
datasources:delete |
| 删除数据源。 |
datasources:explore | 无 | 启用对Explore标签页的访问。 |
datasources.id:read |
| 读取数据源 ID。 |
datasources.insights:read | 无 | 读取数据源洞察数据。要查看洞察,还需要该数据源的 datasources:read 权限。 |
datasources.permissions:read |
| 列出数据源权限。 |
datasources.permissions:write |
| 更新数据源权限。 |
datasources:query |
| 查询数据源。 |
datasources:read |
| 列出数据源。 |
datasources:write |
| 更新数据源。 |
featuremgmt.read | 无 | 读取功能开关。 |
featuremgmt.write | 无 | 写入功能开关。 |
folders.permissions:read |
| 读取一个或多个文件夹及其子文件夹的权限。 |
folders.permissions:write |
| 更新一个或多个文件夹及其子文件夹的权限。 |
folders:create |
| 创建文件夹或子文件夹。如果授予的作用域为 folders:uid:general ,则允许创建根级文件夹。否则,允许在指定的文件夹下创建子文件夹。 |
folders:delete |
| 删除一个或多个文件夹及其子文件夹。 |
folders:read |
| 读取一个或多个文件夹及其子文件夹。 |
folders:write |
| 更新一个或多个文件夹及其子文件夹。 |
ldap.config:reload | 无 | 重新加载 LDAP 配置。 |
ldap.status:read | 无 | 验证 LDAP 服务器的可用性。 |
ldap.user:read | 无 | 通过 LDAP 读取用户。 |
ldap.user:sync | 无 | 通过 LDAP 同步用户。 |
library.panels:create |
| 在一个或多个文件夹及其子文件夹中创建库面板。 |
library.panels:read |
| 读取一个或多个库面板。 |
library.panels:write |
| 更新一个或多个库面板。 |
library.panels:delete |
| 删除一个或多个库面板。 |
licensing.reports:read | 无 | 获取自定义权限报告。 |
licensing:delete | 无 | 删除许可证令牌。 |
licensing:read | 无 | 读取许可证信息。 |
licensing:write | 无 | 更新许可证令牌。 |
migrationassistant:migrate | 无 | 通过迁移助手执行本地到云的迁移。 |
org.users:write |
| 更新用户的组织角色(None 、Viewer 、Editor 或 Admin )。 |
org.users:add |
| 向组织添加用户或邀请新用户加入组织。 |
org.users:read |
| 获取组织内的用户配置文件。 |
org.users:remove |
| 从组织中移除用户。 |
orgs.preferences:read | 无 | 读取组织偏好设置。 |
orgs.preferences:write | 无 | 更新组织偏好设置。 |
orgs.quotas:read | 无 | 读取组织配额。 |
orgs.quotas:write | 无 | 更新组织配额。 |
orgs:create | 无 | 创建组织。 |
orgs:delete | 无 | 删除一个或多个组织。 |
orgs:read | 无 | 读取一个或多个组织。 |
orgs:write | 无 | 更新一个或多个组织。 |
plugins.app:access |
| 访问一个或多个应用程序插件(仍然强制执行组织角色) |
plugins:install | 无 | 安装和卸载插件。 |
plugins:write |
| 编辑一个或多个插件的设置。 |
provisioning:reload | provisioners:* | 重新加载供应文件。要查找特定 provisioner 的精确作用域,请参阅作用域定义。 |
reports:create | 无 | 创建报告。 |
reports:write |
| 更新报告。 |
reports.settings:read | 无 | 读取报告设置。 |
reports.settings:write | 无 | 更新报告设置。 |
reports:delete |
| 删除报告。 |
reports:read |
| 列出所有可用报告或获取特定报告。 |
reports:send |
| 发送报告电子邮件。 |
roles:delete |
| 删除自定义角色。 |
roles:read |
| 列出角色并读取特定角色及其权限。 |
roles:write |
| 创建或更新自定义角色。 |
roles:write |
| 将基本角色重置为其默认权限。 |
server.stats:read | 无 | 读取 Grafana 实例统计信息。 |
server.usagestats.report:read | 无 | 查看使用统计报告。 |
serviceaccounts:write |
| 创建 Grafana 服务帐户。 |
serviceaccounts:create | 无 | 更新 Grafana 服务帐户。 |
serviceaccounts:delete |
| 删除 Grafana 服务帐户。 |
serviceaccounts:read |
| 读取 Grafana 服务帐户。 |
serviceaccounts.permissions:write |
| 更新 Grafana 服务帐户权限,以控制谁可以使用该服务帐户执行哪些操作。 |
serviceaccounts.permissions:read |
| 读取 Grafana 服务帐户权限,以查看谁可以使用该服务帐户执行哪些操作。 |
settings:read |
| 读取Grafana 配置设置 |
settings:write |
| 更新可在运行时更新的任何 Grafana 配置设置。 |
support.bundles:create | 无 | 创建支持包。 |
support.bundles:delete | 无 | 删除支持包。 |
support.bundles:read | 无 | 列出和下载支持包。 |
snapshots:create | 无 | 创建快照。 |
snapshots:delete | 无 | 删除快照。 |
snapshots:read | 无 | 列出快照。 |
status:accesscontrol |
| 获取访问控制启用状态。 |
teams.permissions:read |
| 读取团队成员和 Team Sync 设置。 |
teams.permissions:write |
| 添加、移除和更新团队成员以及管理 Team Sync 设置。 |
teams.roles:add |
| 为团队分配角色。 |
teams.roles:read |
| 列出直接分配给团队的角色。 |
teams.roles:remove |
| 解除分配团队的角色。 |
teams:create | 无 | 创建团队。 |
teams:delete |
| 删除一个或多个团队。 |
teams:read |
| 读取一个或多个团队和团队偏好设置。要在 UI 中列出团队,除了 teams:read 之外,还需要以下任一权限:teams:write 、teams.permissions:read 或 teams.permissions:write 。 |
teams:write |
| 更新一个或多个团队和团队偏好设置。 |
users.authtoken:read |
| 列出分配给用户的认证令牌。 |
users.authtoken:write |
| 更新分配给用户的认证令牌。 |
users.password:write |
| 更新用户的密码。 |
users.permissions:read |
| 列出用户的权限。 |
users.permissions:write |
| 更新用户的组织级权限。 |
users.quotas:read |
| 列出用户的配额。 |
users.quotas:write |
| 更新用户的配额。 |
users.roles:add |
| 为用户或服务帐户分配角色。 |
users.roles:read |
| 列出直接分配给用户或服务帐户的角色。 |
users.roles:remove |
| 解除分配用户或服务帐户的角色。 |
users:create | 无 | 创建用户。 |
users:delete |
| 删除用户。 |
users:disable |
| 禁用用户。 |
users:enable |
| 启用用户。 |
users:logout |
| 注销用户。 |
users:read |
| 读取或搜索用户配置文件。 |
users:write |
| 更新用户的配置文件。 |
Grafana Adaptive Metrics 操作定义
以下列表包含 Grafana Adaptive Metrics 使用的基于角色的访问控制操作。
操作 | 适用作用域 | 描述 |
---|---|---|
grafana-adaptive-metrics-app.plugin:access | 无 | 在 Grafana Cloud 中访问 Adaptive Metrics 插件。 |
grafana-adaptive-metrics-app.config:read | 无 | 读取 Adaptive Metrics 应用程序配置。 |
grafana-adaptive-metrics-app.config:write | 无 | 更新 Adaptive Metrics 应用程序配置。 |
grafana-adaptive-metrics-app.recommendations:read | 无 | 读取聚合建议。 |
grafana-adaptive-metrics-app.recommendations:apply | 无 | 应用聚合建议。 |
grafana-adaptive-metrics-app.rules:read | 无 | 读取聚合规则。 |
grafana-adaptive-metrics-app.rules:write | 无 | 创建聚合规则。 |
grafana-adaptive-metrics-app.rules:delete | 无 | 删除聚合规则。 |
grafana-adaptive-metrics-app.exemptions:read | 无 | 读取建议豁免。 |
grafana-adaptive-metrics-app.exemptions:write | 无 | 创建、更新和删除建议豁免。 |
Cloud Access Policies 操作定义
以下列表包含 Cloud Access Policies 使用的基于角色的访问控制操作。
操作 | 适用作用域 | 描述 |
---|---|---|
grafana-auth-app:write | 无 | 创建、读取、更新和删除 Grafana Cloud 的访问策略。 |
警告
授予
grafana-auth-app:write
权限等同于在 Grafana 中为用户分配 Admin 角色,因为它允许他们管理所有堆栈服务帐户。这提供了重要的权限,应谨慎分配。
有关 Cloud Access Policies 及其使用方法的更多信息,请参阅访问策略。
Grafana Alerting 通知操作定义
操作 | 适用作用域 | 描述 |
---|---|---|
alert.notifications.receivers:read | receivers:* receivers:uid:* | 读取联系点。 |
alert.notifications.receivers.secrets:read | receivers:* receivers:uid:* | 导出包含已解密秘密的联系点。 |
alert.notifications.receivers:create | 无 | 创建新联系点。创建者将自动获得对创建的联系点的完全访问权限。 |
alert.notifications.receivers:write | receivers:* receivers:uid:* | 更新现有联系点。 |
alert.notifications.receivers:delete | receivers:* receivers:uid:* | 更新和删除现有联系点。 |
alert.notifications.receivers:test | 无 | 测试联系点通知。 |
receivers.permissions:read | receivers:* receivers:uid:* | 读取联系点的权限。 |
receivers.permissions:write | receivers:* receivers:uid:* | 管理联系点的权限。 |
alert.notifications.time-intervals:read | 无 | 读取静默时间间隔。 |
alert.notifications.time-intervals:write | 无 | 创建新的或更新现有的静默时间间隔。 |
alert.notifications.time-intervals:delete | 无 | 删除现有的时间间隔。 |
alert.notifications.templates:read | 无 | 读取模板。 |
alert.notifications.templates:write | 无 | 创建新的或更新现有的模板。 |
alert.notifications.templates:delete | 无 | 删除现有的模板。 |
alert.notifications.routes:read | 无 | 读取通知策略。 |
alert.notifications.routes:write | 无 | 创建新的、更新或删除通知策略 |
作用域定义
以下列表包含基于角色的访问控制作用域。
作用域 | 描述 |
---|---|
| 将操作限制到一组注解。例如,annotations:* 匹配任何注解,annotations:type:dashboard 匹配与仪表盘关联的注解,annotations:type:organization 匹配组织注解。 |
| 将操作限制到一组 API 密钥。例如,apikeys:* 匹配任何 API 密钥,apikey:id:1 匹配 ID 为 1 的 API 密钥。 |
| 将操作限制到一组仪表盘。例如,dashboards:* 匹配任何仪表盘,dashboards:uid:1 匹配 UID 为 1 的仪表盘。 |
| 将操作限制到一组数据源。例如,datasources:* 匹配任何数据源,datasources:uid:1 匹配 UID 为 1 的数据源。 |
| 将操作限制到一组文件夹。例如,folders:* 匹配任何文件夹,folders:uid:1 匹配 UID 为 1 的文件夹。请注意,授予文件夹的权限会 cascading 到其下方的子文件夹。 |
| 将操作限制到一组全局用户。例如,global.users:* 匹配任何用户,global.users:id:1 匹配 ID 为 1 的用户。 |
| 将操作限制到一组库面板。例如,library.panels:* 匹配任何库面板,library.panel:uid:1 匹配 UID 为 1 的库面板。 |
| 将操作限制到一组组织。例如,orgs:* 匹配任何组织,orgs:id:1 匹配 ID 为 1 的组织。 |
| 此范围仅适用于与访问控制本身相关的角色,表示您只能通过创建新角色或进行分配来委派您的权限或其子集。 |
| 此范围是触发基本角色权限重置所必需的。它表示用户可能会获得他们之前没有的额外权限。 |
| 将操作限制于一组插件。例如,plugins:id:grafana-oncall-app 匹配 Grafana OnCall 插件,而 plugins:* 匹配所有插件。 |
| 将操作限制于一组提供者。例如,provisioners:* 匹配任何提供者,而 provisioners:accesscontrol 匹配基于角色的访问控制 提供者。 |
| 将操作限制于一组报告。例如,reports:* 匹配任何报告,而 reports:id:1 匹配 ID 为 1 的报告。 |
| 将操作限制于一组角色。例如,roles:* 匹配任何角色,而 roles:uid:randomuid 仅匹配 UID 为 randomuid 的角色。 |
| 将操作限制为仅针对基于角色的访问控制服务。您可以将此与 status:accesscontrol 操作结合使用。 |
| 将操作限制于组织中的一组服务账号。例如,serviceaccounts:* 匹配任何服务账号,而 serviceaccount:id:1 匹配 ID 为 1 的服务账号。 |
| 将操作限制于设置的子集。例如,settings:* 匹配所有设置,settings:auth.saml:* 匹配所有 SAML 设置,而 settings:auth.saml:enabled 匹配 SAML 设置上的 enabled 属性。 |
| 将操作限制于组织中的一组团队。例如,teams:* 匹配任何团队,而 teams:id:1 匹配 ID 为 1 的团队。 |
| 将操作限制于组织中的一组用户。例如,users:* 匹配任何用户,而 users:id:1 匹配 ID 为 1 的用户。 |
| 如果某个操作的范围指定为“无”,则该操作不需要范围。例如,teams:create 操作不需要范围,并允许用户创建团队。 |