菜单
企业版 开源 Grafana Cloud RSS

服务账号

您可以使用服务账号在 Grafana 中运行自动化工作负载,例如仪表盘配置、设置或报告生成。创建服务账号和令牌来验证应用程序(例如 Terraform)与 Grafana API 的交互。

服务账号与 Grafana 用户不同。服务账号的主要作用是使用 Grafana API 自动化工作。

注意

服务账号取代了API 密钥,成为验证与 Grafana 交互的应用程序的主要方式。

创建服务账号的一个常见用例是对自动化或触发的任务执行操作。您可以使用服务账号来

  • 安排特定仪表盘的报告按日/周/月发送
  • 在您的系统中定义要在 Grafana 中使用的告警
  • 设置外部 SAML 身份验证提供商
  • 无需以用户身份登录即可与 Grafana 交互

Grafana Enterprise 中,您还可以结合使用服务账号和基于角色的访问控制,为与 Grafana 交互的应用程序授予非常具体的权限。

注意

服务账号只能在其被创建的组织中操作。如果多个组织需要相同的任务,我们建议在每个组织中创建服务账号。

服务账号不能用于实例范围的操作,例如全局用户管理和组织管理。对于这些任务,您需要使用具有以下权限的用户

Grafana 服务器管理员权限.

视频展示的是 Grafana v9.1 中的服务账号。请参阅在 Grafana 中创建服务账号以获取当前说明。

服务账号令牌

服务账号令牌是一个生成的随机字符串,在通过 Grafana 的 HTTP API 进行身份验证时可作为密码的替代方案。

创建服务账号时,您可以为其关联一个或多个访问令牌。您可以像使用 API 密钥一样使用服务访问令牌,例如通过编程方式访问 Grafana HTTP API。

您可以为同一个服务账号创建多个令牌。您可能希望这样做,如果

  • 多个应用程序使用相同的权限,但您希望单独审计或管理它们的操作。
  • 您需要轮换或替换一个被泄露的令牌。

服务账号访问令牌继承了服务账号的权限。

服务账号优势

服务账号相对于 API 密钥的额外优势包括

  • 服务账号类似于 Grafana 用户,可以启用/禁用,授予特定权限,并且在被删除或禁用之前一直保持活动状态。API 密钥仅在其到期日期之前有效。
  • 一个服务账号可以关联多个令牌。
  • 与 API 密钥不同,服务账号令牌不与特定用户关联,这意味着即使 Grafana 用户被删除,应用程序仍然可以进行身份验证。
  • 您可以通过利用基于角色的访问控制来为服务账号授予更精细的权限。有关权限的更多信息,请参阅关于用户和权限

在 Grafana 中创建服务账号

服务账号可用于在 Grafana 中运行自动化工作负载,例如仪表盘配置、设置或报告生成。有关如何使用服务账号的更多信息,请参阅关于服务账号

有关通过 API 创建服务账号的更多信息,请参阅在 HTTP API 中创建服务账号

请注意,创建服务账号的用户也能够读取、更新和删除他们创建的服务账号,以及与该服务账号相关的权限。

开始之前

  • 确保您有创建和编辑服务账号的权限。默认情况下,创建和编辑服务账号需要组织管理员角色。有关用户权限的更多信息,请参阅关于用户和权限

创建服务账号的步骤

  1. 登录 Grafana 并单击左侧菜单中的管理
  2. 单击用户和访问
  3. 单击服务账号
  4. 单击添加服务账号
  5. 输入显示名称
  6. 显示名称必须唯一,因为它决定了与服务账号关联的 ID。
    • 我们建议您在命名服务账号时使用一致的命名约定。一致的命名约定可以帮助您在将来扩展和维护服务账号。
    • 您可以随时更改显示名称。
  7. 单击创建

在 Grafana 中为服务账号添加令牌

服务账号令牌是一个生成的随机字符串,在通过 Grafana 的 HTTP API 进行身份验证时可作为密码的替代方案。有关服务账号的更多信息,请参阅关于 Grafana 中的服务账号

您可以使用 Grafana UI 或通过 API 创建服务账号令牌。有关通过 API 创建服务账号令牌的更多信息,请参阅使用 HTTP API 创建服务账号令牌

开始之前

  • 确保您有创建和编辑服务账号的权限。默认情况下,创建和编辑服务账号需要组织管理员角色。有关用户权限的更多信息,请参阅关于用户和权限

服务账号令牌到期日期

默认情况下,服务账号令牌没有到期日期,这意味着它们永远不会到期。但是,如果 token_expiration_day_limit 设置为大于 0 的值,Grafana 会将新令牌的生命周期限制为配置的天数。

为服务账号添加令牌的步骤

  1. 登录 Grafana 并单击左侧菜单中的管理
  2. 单击用户和访问
  3. 单击服务账号
  4. 单击要为其添加令牌的服务账号。
  5. 单击添加服务账号令牌
  6. 输入令牌的名称。
  7. (推荐)选择设置到期日期并输入令牌的到期日期。
    • 到期日期指定了您希望密钥保持有效的时长。
    • 如果您不确定到期日期,我们建议您将令牌设置为在较短时间后到期,例如几小时或更短。这限制了长期有效令牌相关的风险。
  8. 单击生成令牌

在 Grafana 中为服务账号分配角色

您可以为 Grafana 服务账号分配组织角色(ViewerEditorAdmin)以控制关联服务账号令牌的访问权限。您可以使用 Grafana UI 或通过 API 为服务账号分配组织角色。有关通过 API 为服务账号分配角色的更多信息,请参阅使用 HTTP API 更新服务账号

Grafana Enterprise 中,您还可以分配 RBAC 角色,为与 Grafana 交互的应用程序授予非常具体的权限。

注意

自 Grafana 10.2.0 起,组织用户或服务账号可以使用 No Basic Role。此角色没有任何权限。权限可以通过 RBAC 授予。

开始之前

  • 确保您有更新服务账号角色的权限。默认情况下,更新服务账号权限需要组织管理员角色。有关用户权限的更多信息,请参阅关于用户和权限

为服务账号分配角色的步骤

  1. 登录 Grafana 并单击左侧菜单中的管理
  2. 单击用户和访问
  3. 单击服务账号
  4. 单击要为其分配角色的服务账号。或者,您可以在列表视图中找到该服务账号。
  5. 使用角色选择器分配或更新角色。

在 Grafana 中管理服务账号的用户和团队权限

为了控制谁可以使用服务账号以及可以做什么,您可以直接为用户和团队分配权限。您可以使用 Grafana UI 分配权限。

开始之前

  • 确保您有更新服务账号用户和团队权限的权限。默认情况下,更新服务账号用户和团队权限需要组织管理员角色。有关用户权限的更多信息,请参阅关于用户和权限
  • 确保您有读取团队的权限。

服务账号的用户和团队权限

您可以为特定用户或团队分配以下权限之一

  1. 编辑:拥有此权限的用户或团队可以查看、编辑、启用和禁用服务账号,以及添加或删除服务账号令牌。
  2. 管理员:拥有此权限的用户或团队可以执行编辑权限下的所有操作,以及管理服务账号的用户和团队权限。

更新服务账号团队权限的步骤

  1. 登录 Grafana 并单击左侧菜单中的管理
  2. 单击用户和访问
  3. 单击服务账号
  4. 单击要更新团队权限的服务账号。
  5. 在底部的“权限”部分,单击添加权限
  6. 在下拉菜单中选择团队,然后选择您想要的团队。
  7. 在下拉菜单中选择查看编辑管理员角色,然后单击保存

更新服务账号用户权限的步骤

  1. 登录 Grafana 并单击左侧菜单中的管理
  2. 单击用户和访问
  3. 单击服务账号
  4. 单击要更新团队权限的服务账号。
  5. 在底部的“权限”部分,单击添加权限
  6. 在下拉菜单中选择用户,然后选择您想要的用户。
  7. 在下拉菜单中选择查看编辑管理员角色,然后单击保存

调试服务账号令牌的权限

本节解释了如何了解服务账号令牌附加了哪些 RBAC 权限。这可以帮助您诊断与令牌授权相关的权限问题。

开始之前

这些端点提供了服务账号令牌的详细信息。如果您还没有为服务账号添加令牌,请在继续之前添加。详情请参阅为服务账号添加令牌

列出服务账号令牌的权限

要列出您的令牌的权限,请使用 /api/access-control/user/permissions 端点。

示例

注意

以下命令输出已缩短,仅显示相关内容。使用您要检查权限的令牌授权您的请求。

bash
curl -H "Authorization: Bearer glsa_HOruNAb7SOiCdshU9algkrq7FDsNSLAa_54e2f8be" -X GET '<grafana_url>/api/access-control/user/permissions' | jq

输出列出了令牌的权限

json
{
  "dashboards:read": ["dashboards:uid:70KrY6IVz"],
  "dashboards:write": ["dashboards:uid:70KrY6IVz"],
  "datasources.id:read": ["datasources:*"],
  "datasources:read": ["datasources:*"],
  "datasources:explore": [""],
  "datasources:query": ["datasources:uid:grafana"],
  "datasources:read": ["datasources:uid:grafana"],
  "orgs:read": [""]
}

检查令牌允许查看哪些仪表盘

要列出令牌可以查看哪些仪表盘,您可以过滤 /api/access-control/user/permissions 端点响应中的 dashboards:read 权限键。

示例

bash
curl -H "Authorization: Bearer glsa_HOruNAb7SOiCdshU9algkrq7FDsNSLAa_54e2f8be" -X GET '<grafana_url>/api/access-control/user/permissions' | jq '."dashboards:read"'

输出列出了令牌可以查看的仪表盘以及令牌可以从哪些文件夹查看仪表盘,按其唯一标识符(uid)显示

json
[
  "dashboards:uid:70KrY6IVz",
  "dashboards:uid:d61be733D",
  "folders:uid:dBS87Axw2",
],