规划您的 IAM 集成策略
本节介绍了使用身份和访问管理 (IAM) 提供程序管理 Grafana 访问时应做出的决策。IAM 可确保用户安全地访问敏感数据和其他资源,从而简化用户管理和认证。
与 IAM 提供程序集成的优势
与 IAM 提供程序集成提供以下优势
用户管理:通过让 Grafana 访问您当前的用户管理系统,您可以消除复制用户信息的开销,实现集中化的用户管理,用于管理用户对 Grafana 资源的角色和权限。
安全性:许多 IAM 解决方案提供高级安全功能,例如多重身份认证、RBAC 和审计跟踪,有助于提高 Grafana 安装的安全性。
SSO:正确地将 Grafana 与您当前的 IAM 解决方案集成,使用户可以使用与其他应用程序相同的凭据访问 Grafana。
可伸缩性:用户数据库中的用户添加和更新会立即反映在 Grafana 中。
为了规划与 Grafana 的集成,请评估您组织的当前需求、要求以及任何正在使用的现有 IAM 解决方案。这包括考虑如何将角色和权限映射到 Grafana 中的用户,以及如何将用户分组以访问共享资源。
内部用户与外部用户
首先,确定您希望如何管理将访问 Grafana 的用户。
您是否已使用身份提供程序来管理用户?如果是,Grafana 可能能够通过我们的 IdP 集成之一与您的身份提供程序集成。有关支持的提供程序列表,请参阅配置认证文档。
如果您不希望设置外部身份提供程序,但仍想限制对 Grafana 实例的访问,请考虑使用 Grafana 的基本认证。
最后,如果您希望您的 Grafana 实例对所有人开放访问,您可以启用 Grafana 的匿名访问。有关详细信息,请参阅匿名认证文档。
组织用户的方式
将用户组织成对组织有意义的子组。例如
- 安全性:不同用户组或客户应仅能访问他们被授权的资源。
- 简便性:减少仪表盘和可用资源的范围。
- 成本归属:跟踪成本并向个人客户、部门或科室收费。
- 定制化:每个用户组都可以拥有个性化体验,例如不同的仪表盘或主题颜色。
Grafana 团队中的用户
您可以将用户组织到团队中,并为其分配反映当前组织的角色和权限。例如,您可以创建一个包含这五个用户的团队,并将仪表盘权限分配给该团队,而不是为每个用户分配对同一仪表盘的访问权限。
用户可以属于多个团队,并可以是特定团队的成员或管理员。团队成员继承团队的权限,但不能编辑团队本身。团队管理员可以向团队添加成员并更新其设置,例如团队名称、团队成员、分配的角色和 UI 偏好设置。
团队是处理用户子集的理想解决方案。团队可以与其他团队共享资源。
Grafana 组织中的用户
Grafana 组织允许完全隔离资源,例如仪表盘和数据源。用户可以是单个或多个组织的成员,并且只能访问他们所属组织中的资源。
在单个 Grafana 实例中拥有多个组织,使您可以在一处管理用户,同时完全隔离资源。
组织在 Grafana 内部提供比团队更高程度的隔离,在某些场景下很有帮助。但是,由于组织缺乏团队和文件夹的可伸缩性和灵活性,我们不建议将其作为用户和资源分组的默认方式。
请注意,Grafana Cloud 不支持每个实例拥有超过 1 个组织。
在团队和组织之间选择
Grafana 团队和 Grafana 组织在 Grafana 平台中服务于类似的目的。两者都旨在帮助用户分组以及管理和控制对资源的访问。
团队提供了更大的灵活性,因为资源可以被多个团队访问,并且团队的创建和管理很简单。
相比之下,组织比团队提供更多隔离,因为资源不能在组织之间共享。它们比团队更难管理,因为您必须单独为每个组织创建和更新资源。组织更适合有复杂访问需求的大型公司或用户,这些用户需要完全隔离资源。
访问外部系统
考虑机器到机器 (M2M) 通信的需求。如果一个系统需要与 Grafana 交互,请确保它拥有适当的访问权限。
考虑以下场景
定时生成报告:通过报告 API 从 Grafana 定期生成报告,并将其发送到不同的通信渠道,如电子邮件、即时通讯,或将其保存在共享存储中。
定义告警:定义告警规则,当满足特定条件时触发。根据您组织的需要,将告警通知路由到不同的团队。
置备文件:置备文件可用于自动化创建仪表盘、数据源和其他资源。
这些只是 Grafana 在 M2M 场景中应用的几个示例。该平台非常灵活,可用于各种 M2M 应用程序,使其成为寻求系统和设备洞察的组织的强大工具。
服务账号
您可以使用服务账号在 Grafana 中运行自动化工作负载,例如仪表盘置备、配置或报告生成。创建服务账号和服务账号令牌,用于应用程序(如 Terraform)与 Grafana API 的认证。
注意
服务账号最终将取代API 密钥,成为与 Grafana 交互的应用程序的主要认证方式。有关详细信息,请参阅Grafana 服务账号。
创建服务账号的一个常见用例是对自动化或触发的任务执行操作。您可以使用服务账号来
- 安排特定仪表盘的报告,按日/周/月频率发送
- 在您的系统中定义要在 Grafana 中使用的告警
- 设置外部 SAML 认证提供程序
- 无需以用户身份登录即可与 Grafana 交互
在Grafana Enterprise 中,您还可以将服务账号与基于角色的访问控制结合使用,以便为与 Grafana 交互的应用程序授予非常具体的权限。
注意
服务账号只能在其创建的组织中操作。如果您需要在多个组织中执行相同的任务,我们建议在每个组织中创建服务账号。
以下视频展示了如何从 API 密钥迁移到服务账号。
这里应该有一个视频,但由于某些原因无法显示。可能是我们输入了错误的 ID(糟糕!),或者 Vimeo 服务出现了问题。如果是后者,我们预计他们会很快恢复正常。在此期间,您可以访问我们的博客!
服务账号令牌
要通过 Grafana 的 HTTP API 进行认证,可以使用一个称为服务账号令牌的随机生成字符串作为密码的替代品。
创建服务账号后,可以将其关联到多个访问令牌。这些服务访问令牌可以像 API 密钥一样使用,提供了一种以编程方式访问 Grafana HTTP API 的方法。
您可以为同一个服务账号创建多个令牌。如果您有以下情况,可能需要这样做:
- 多个应用程序使用相同的权限,但您希望分别审计或管理它们的行为。
- 您需要轮换或替换一个已泄露的令牌。
注意
在 Grafana 的审计日志中,它仍然会显示为同一个服务账号。
服务账号访问令牌继承服务账号的权限。
API 密钥
注意
Grafana 建议使用服务账号代替 API 密钥。API 密钥将在不久的将来被弃用。有关详细信息,请参阅Grafana 服务账号。
您可以使用 Grafana API 密钥通过 HTTP API 与数据源交互。
如何使用角色?
Grafana 角色控制用户和服务账号对特定资源的访问,并确定其授权的操作。
您可以通过用户界面或 API 分配角色,通过 Terraform 建立角色,或通过外部 IAM 提供程序自动同步角色。
什么是角色?
在组织内部,Grafana 建立了三个主要的组织角色——组织管理员、编辑者和查看者——它们决定了用户的访问级别和权限,包括编辑数据源或创建团队的能力。Grafana 还有一个空角色,您可以从它开始,并逐渐添加自定义权限。要成为任何组织的成员,每个用户都必须被分配一个角色。
此外,Grafana 提供服务器管理员角色,该角色允许访问和操作影响整个实例的资源,包括组织、用户和服务器范围的设置。此特定角色仅限自托管 Grafana 实例的用户访问。这是一个重要的角色,旨在供 Grafana 实例的管理员使用。
什么是权限?
每个角色包含一组权限,用于确定用户可以在系统中执行的任务。例如,Admin 角色包含允许管理员创建和删除用户的权限。
Grafana 允许对仪表盘和文件夹进行精确的权限设置,使您能够控制哪些用户和团队可以查看、编辑和管理它们。例如,您可能希望某个查看者能够编辑一个仪表盘。尽管该用户可以看到所有仪表盘,但您可以授予他们仅更新其中一个仪表盘的权限。
在Grafana Enterprise 中,您还可以为数据源授予细粒度权限,以控制谁可以查询和编辑它们。
仪表盘、文件夹和数据源权限可以通过 UI 或 API 设置,或通过 Terraform 进行置备。
基于角色的访问控制
注意
如果您认为基本的组织角色和服务器管理员角色限制过多,使用基于角色的访问控制 (RBAC) 可能会有所帮助。RBAC 是一种灵活的方法,用于管理用户对 Grafana 资源(包括用户、数据源和报告)的访问。它允许轻松授予、更改和撤销用户的读写访问权限。
RBAC 提供预定义的角色,例如数据源写入者,允许更新、读取或查询所有数据源。您可以将这些角色分配给用户、团队和服务账号。
此外,RBAC 使您能够生成个性化角色,并修改标准 Grafana 角色授权的权限。
Grafana 与身份提供程序之间的用户同步
将 Grafana 连接到身份提供程序时,不仅要考虑初始认证设置,还要考虑用户基础和角色的维护。使用 Grafana 的团队和角色同步功能可确保您在身份提供程序中对用户进行的更新会反映在他们在 Grafana 中的角色分配和团队成员身份中。
团队同步
团队同步是一项功能,允许您将身份提供程序中的团队或组与 Grafana 中的团队同步。这意味着 LDAP、OAuth 或 SAML 中特定团队或组的用户将自动添加或移除为 Grafana 中相应团队的成员。每当用户登录时,Grafana 将检查身份提供程序中团队或组的任何更改,并相应地更新用户在 Grafana 中的团队。这使得跨多个系统管理用户权限变得容易。
注意
注意
团队同步仅在用户登录时发生。但是,如果您使用 LDAP,可以启用活动后台同步。这允许持续同步团队。
角色同步
Grafana 可以通过将身份提供程序中的属性映射到 Grafana 中的用户角色来同步基本的角色。这意味着在 LDAP、OAuth 或 SAML 中具有特定属性(如角色、团队或组成员身份)的用户将被自动分配 Grafana 中的相应角色。每当用户登录时,Grafana 将检查从身份提供程序检索到的用户信息中的任何更改,并相应地更新用户在 Grafana 中的角色。
组织同步
组织同步是在 Grafana 中绑定组织所有用户的过程。这会将用户管理的角色委托给身份提供程序。这样一来,就无需从 Grafana 管理用户访问权限,因为每当新用户尝试登录时,都会查询身份提供程序。
通过组织同步,身份提供程序组中的用户可以分配到相应的 Grafana 组织。此功能类似于角色同步,但增加了指定特定身份提供程序组用户所属组织的好处。请注意,此功能仅适用于自托管 Grafana 实例,因为 Cloud Grafana 实例限制为单个组织。
注意
组织同步目前仅支持 SAML 和 LDAP。
注意
在使用组织同步时,无需通过 Grafana 邀请用户。
注意
目前,只能通过组织同步映射基本角色。