本文介绍如何获取用于 Azure 托管 Grafana 数据平面 API 的 Microsoft Entra ID 访问令牌,以便以编程方式调用 Grafana API。
使用 Azure 托管 Grafana 受众值 6f2d169c-08f3-4a4c-a982-bcaf2d038c45 通过 Microsoft Entra ID 对 Azure 托管 Grafana 数据平面 API 进行身份验证。
根据方案选择一种令牌获取方法。
先决条件
- 拥有有效订阅的 Azure 帐户。
- Azure 托管 Grafana 工作区。 如果你还没有,请创建 Azure 托管 Grafana 工作区。
- 已分配 Azure 托管 Grafana 角色的用户、服务主体或托管身份,例如 Grafana Viewer、Grafana Editor 或 Grafana Admin。若要分配角色,请参阅 管理用户和标识的访问和权限。
选择令牌获取方法
选项 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 问题。