使用 Microsoft Entra ID 对Azure 托管 Grafana数据平面 API 进行身份验证

本文介绍如何获取用于 Azure 托管 Grafana 数据平面 API 的 Microsoft Entra ID 访问令牌,以便以编程方式调用 Grafana API。

使用 Azure 托管 Grafana 受众值 6f2d169c-08f3-4a4c-a982-bcaf2d038c45 通过 Microsoft Entra ID 对 Azure 托管 Grafana 数据平面 API 进行身份验证。

根据方案选择一种令牌获取方法。

先决条件

选择令牌获取方法

选项 1:Azure CLI(交互式测试)

运行以下命令以获取Azure 托管 Grafana访问群体的访问令牌:

az account get-access-token --resource 6f2d169c-08f3-4a4c-a982-bcaf2d038c45 --query accessToken -o tsv

如果计划在本文中运行验证命令,请将令牌存储在 shell 变量中:

TOKEN=$(az account get-access-token --resource 6f2d169c-08f3-4a4c-a982-bcaf2d038c45 --query accessToken -o tsv)

选项 2:代码(应用程序和自动化方案)

在代码中使用托管标识或服务主体身份验证时,请为此范围请求令牌。

按以下Python示例所示使用DefaultAzureCredential

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
token = credential.get_token("6f2d169c-08f3-4a4c-a982-bcaf2d038c45")
print(token.token)

验证 API 访问

获取令牌后,运行快速调用以验证身份验证和权限。 将 <grafana-endpoint-URL> 替换为你的终结点 URL。

如果你使用的是代码方式,请在运行 curl 之前,先用你的令牌值设置一个 shell 变量:

TOKEN="<access-token>"
GRAFANA_ENDPOINT="<grafana-endpoint-URL>"

curl -i -H "Authorization: Bearer $TOKEN" "$GRAFANA_ENDPOINT/api/org"

预期结果:具有有效 JSON 正文的 HTTP 200 响应。 响应标头在请求之间可能有所不同。

使用相同的 Authorization: Bearer 标头格式来调用其他 Azure 托管 Grafana 数据平面 API 端点。

故障排除

如果请求失败并出现 401 授权错误:

  • 检查令牌受众是否为 6f2d169c-08f3-4a4c-a982-bcaf2d038c45
  • 确认调用方是否在 Azure 托管 Grafana 资源上具有 Grafana 角色分配。
  • 如果角色分配最近更改,请等待几分钟,然后重试。

如需更多帮助,请参阅排查常见 Azure 托管 Grafana 问题