;政府;角色和权限;基于角色的访问控制(RBAC);计划您的Grafana RBAC推出策略

计划您的RBAC部署策略

注意:可以在Grafana企业而且Grafana云高级

RBAC推出策略可以帮助您确定如何您希望在将RBAC角色分配给用户和团队之前实现RBAC。

您的推出策略应该帮助您回答以下问题:

  • 我应该为用户分配基本角色,还是为用户分配固定角色或自定义角色?
  • 何时创建自定义角色?
  • 我应该对哪些实体应用固定角色和自定义角色?我是否应该将它们应用于用户和团队?我应该修改基本角色权限吗?
  • 如何以易于管理的方式推出权限?
  • 在分配角色时应该使用哪种方法?我应该使用Grafana UI、配置还是API?

回顾基本角色和固定角色定义

作为确定权限推出策略的第一步,我们建议您熟悉基本角色和固定角色定义。除了将固定角色分配给任何用户和团队外,您还可以修改基本角色权限,这将更改查看器、编辑器或管理员的权限。这种灵活性意味着您可以考虑多种角色分配组合。如果您有大量的Grafana用户和团队,我们建议您列出您可能想要使用的固定角色。

要了解更多关于基本角色和固定角色的信息,请参考以下文档:

用户和团队的考虑

RBAC是一个灵活而强大的特性,具有许多可能的权限分配组合。在为用户和团队分配权限时,请考虑以下指导方针。

  • 为用户分配角色当您有一个一次性场景(少量用户需要访问某个资源),或者当您希望分配临时访问权限时。如果您有大量的用户,当您扩展对Grafana的使用时,这种方法可能很难管理。例如,IT部门的一名成员可能需要固定:许可:读者而且固定:许可:作家角色,以便他们可以管理您的Grafana企业许可证。

  • 为团队分配角色当您有一个与您的组织结构一致的用户子集,并且您希望团队的所有成员具有相同级别的访问权限时。例如,特定工程团队的所有成员都可能需要固定:报告:读者而且固定:报告:作家角色,以便能够管理报表。

    当您为团队分配额外的用户时,系统将自动为这些用户分配权限。

身份验证提供者注意事项

您可以利用当前的身份验证提供程序来管理Grafana中的用户和团队权限。当您将用户和团队映射到SAML和LDAP组时,您可以将这些分配与Grafana同步。

例如:

  1. 将SAML、LDAP或Oauth角色映射到Grafana的基本角色(查看器、编辑器或管理员)。

  2. 使用Grafana企业团队同步特性将SAML、LDAP或Oauth提供者的团队同步到Grafana。有关团队同步的更多信息,请参阅团队同步

  3. 在Grafana中,将RBAC权限分配给用户和团队。

何时修改基本角色或创建自定义角色

在确定是否应该修改基本角色或创建自定义角色时,请考虑以下指导原则。

  • 修改基本角色当Grafana对查看者、编辑者和管理员所能做的定义与您对这些角色的定义不匹配时。您可以从任何基本角色中添加或删除权限。

    注意:对基本角色所做的更改将影响所有角色的定义组织在Grafana案例中。例如,当您添加固定:用户:作家角色对查看者基本角色的权限,Grafana实例中任何组织中的所有查看者都可以在该组织中创建用户。

  • 创建自定义角色当固定的角色定义不能满足您的权限需求时。例如,固定:仪表板:作家角色允许用户删除仪表盘。如果您希望某些用户或团队能够创建和更新仪表板,但不能删除仪表板,则可以使用如下名称创建自定义角色自定义仪表板:创造者它缺乏仪表板:删除许可。

如何分配RBAC角色

使用以下任何一种方法将RBAC角色分配给用户和团队。

  • Grafana界面:当您希望将有限数量的RBAC角色分配给用户和团队时,请使用Grafana UI。UI包含一个角色选择器,您可以使用它来选择角色。
  • Grafana HTTP API:如果您想自动化角色分配,请使用Grafana HTTP API。
  • 起程拓殖:如果使用Terraform进行配置,则使用Terraform分配和管理用户和团队角色分配。
  • Grafana配置:Grafana配置为分配、删除和删除角色提供了一种健壮的方法。在单个YAML文件中,您可以包含多个角色分配和删除条目。

权限的场景

我们根据当前的Grafana实现编译了以下权限推出场景。

注意:如果你有想要分享的用例,请随意在这个文档页面上发表你的观点。我们很乐意听到你的消息!

为内部查看器员工提供使用Explore的能力,但防止外部查看器承包商使用Explore

  1. 在《Grafana》中,用这个名字创建一个团队内部员工
  2. 分配固定:数据源:查询器的角色内部员工团队。
  3. 将内部员工添加到内部员工或者从SAML、LDAP或Oauth团队中映射它们团队同步
  4. 将查看者角色分配给内部员工和承包商。

限制查看器、编辑器或管理权限

  1. 查看与基本角色关联的权限列表。
  2. 修改基本角色的权限

只允许一个团队的成员管理警报

  1. 创建一个提醒经理,并为该团队分配所有适用的警报固定角色。
  2. 添加用户到提醒经理团队。
  3. 删除所有操作前缀为的权限警报。查看器、编辑器和管理基本角色。

向两个或多个地理位置的用户提供仪表板

  1. 为每个地理区域创建一个文件夹,例如,创建一个我们文件夹和欧盟文件夹中。
  2. 向每个文件夹添加仪表板。
  3. 使用文件夹权限将总部位于美国的用户作为编辑器添加到我们文件夹并将基于欧盟的用户分配为编辑器欧盟文件夹中。

创建自定义角色以访问特定文件夹中的警报

要在Grafana中查看警报规则,用户必须具有对存储警报规则的文件夹的读访问权,在文件夹中读取警报的权限,以及查询规则使用的所有数据源的权限。

本例中API命令的使用原理如下:

  • 一个测试文件夹与ID92
  • 两个数据来源:DS1的在UID_oAfGYUnk,DS2在UIDYYcBGYUnk
  • 中存储的警报规则测试文件夹并查询这两个数据源。

下面的请求创建一个自定义角色,该角色包含访问告警规则的权限:

curl——location——request POST '/api/access-control/roles/' \——header '授权:Basic YWRtaW46cGFzc3dvcmQ=' \——header '内容类型:应用程序/json' \——data-raw '{"version": 1, "name": "custom:alerts.reader.in.folder。”:“123”、“displayName只读访问警报测试文件夹在文件夹”、“描述”:“让用户查询DS1和DS2、和阅读警报测试文件夹在文件夹”、“集团”:“自定义”、“全球”:真的,“权限”:[{“行动”:“文件夹:阅读”、“范围”:“文件夹:uid: YEcBGYU22 "},{"行动”:“alert.rules:阅读”,“范围”:“文件夹:uid: YEcBGYU22”},{“行动”:“数据源:查询”、“范围”:“数据源:uid: _oAfGYUnk "},{"行动”:“数据源:查询”、“范围”:“数据源:uid: YYcBGYUnk”}]}’

允许编辑器创建自定义角色

默认情况下,只有Grafana Server Admin可以创建和管理自定义角色。如果你想要编辑器为了做到这一点,更新编辑器基本角色权限.有两种方法可以做到这一点:

  • 添加固定:角色:作家的角色权限。基本的:编辑器使用角色> from配置文件列表:
apiVersion: 2个角色:- name: 'basic:editor' global: true版本:3 from: - name: 'basic:editor' global: true - name: 'fixed:roles:writer' global: true
  • 或将以下权限添加到基本的:编辑器角色,使用配置或Rbac HTTP API
行动 范围
角色:读 角色:*
角色:写 权限:类型:委托
角色:删除 权限:类型:委托

注意:任何具有修改角色能力的用户或服务帐户只能使用已授予的权限创建、更新或删除角色。属性的用户编辑器角色只能使用其拥有的权限或其中的一个子集创建和管理角色。

允许查看器创建报告

如果你想要观众要创建报告,更新查看器基本角色权限.有两种方法可以做到这一点:

  • 添加固定:报告:作家的角色权限。基本:查看器使用角色> from配置文件列表:
apiVersion: 2个角色:-名称:'基本:查看器'全局:真实版本:3从:-名称:'基本:查看器'全局:真实-名称:'固定:报告:作者'全局:真实

注意:固定:报告:作家角色分配更多的权限,而不仅仅是创建报表。有关固定角色权限分配的更多信息,请参见固定角色定义

  • 控件中添加以下权限基本:查看器角色,使用配置或Rbac HTTP API
行动 范围
报告:创建 N/A
报告:写 报告:*
报告:id: *
报告:读 报告:*
报告:发送 报告:*

阻止Grafana管理员创建和邀请用户

为了防止Grafana管理员创建用户并邀请他们加入组织,您必须更新基本角色权限.需要删除的权限为:

行动 范围
用户:创建
org.users:添加 用户:*

有两种方法可以做到这一点:

  • 使用角色> from列表和权限>状态配置文件选项:
apiVersion: 2个角色:-名称:'基本:编辑器'全局:真实版本:3从:-名称:'基本:编辑器'全局:真实权限:-动作:'用户:创建'状态:'缺席' -动作:'org。用户:添加' scope: '用户:*'状态:'absent'

阻止查看器访问应用程序插件

默认情况下,查看器,编辑器和管理员可以访问他们的组织角色允许他们访问的所有应用程序插件。要更改此默认行为并阻止查看器访问App插件,必须更新基本角色的权限

在本例中,已经安装并启用了三个App插件:

的名字 ID 组织角色
随叫随到 grafana-oncall-app 查看器
肯提克连接专业版 kentik-connect-app 查看器
企业日志 grafana-enterprise-logs-app 管理

默认情况下,观看者将因此能够同时看到Call和Kentik Connect Pro应用程序插件。如果你想撤销他们对On Call App插件的访问权限,你需要:

  1. 删除访问所有应用程序插件的权限:
    行动 范围
    plugins.app:访问 插件:*
  2. 授权访问Kentik Connect Pro App插件:
    行动 范围
    plugins.app:访问 插件:id: kentik-connect-app

这里有两种方法可以实现这一点:

  • 使用角色> from列表和权限>状态配置文件选项:
——apiVersion: 2个角色:- name: 'basic:viewer' version: 8 global: true from: - name: 'basic:viewer' global: true permissions: - action: '插件。应用程序:访问'范围:'插件:*'状态:'缺席' -操作:'插件。App:access' scope: '插件:id:kentik-connect-app'状态:'present'