如何在 Azure Log Analytics 中配置基本日志 - 如何获取不记名令牌?

How to configure Basic Logs in Azure Log Analytics - how to get bearer token?

我有 Azure Log Analytics 和 Azure Application Insights。我想将我的 Log Analytics 中的某些表设置为“基本日志”,因为这样更便宜。首先,我只想检查这些表的设置。

我正在尝试关注这篇文章:https://docs.microsoft.com/en-us/azure/azure-monitor/logs/basic-logs-configure?tabs=api-2

文章告诉我通过关注另一篇文章获得不记名令牌:https://social.technet.microsoft.com/wiki/contents/articles/51140.azure-rest-management-api-the-quickest-way-to-get-your-bearer-token.aspx

我使用开发人员工具从 Azure 门户中提取了不记名令牌。它看起来像这样(几百个字符长):Bearer ey...A.

然后我尝试在 PowerShell 中执行此操作:

$BearerToken = "Bearer ey...A"
$uri = "https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName>/tables/<tableName>?api-version=2021-12-01-preview"
Invoke-WebRequest $uri -Headers @{Authorization = $BearerToken}

这给了我:

{"error":{"code":"InvalidAuthenticationToken","message":"The access token is invalid."}}

在我的 PowerShell session 中,我以与门户中相同的用户身份登录(使用 az login)。

可能是供股?我对 Log Analytics 工作区具有“所有者”和“贡献者”访问权限。

我需要做什么才能通过认证?我的 Invoke-WebRequest 电话还需要 headers 或选项吗?

问题可能是因为令牌的受众未设置为 management.azure.com,即您想要访问的资源。

如果你尝试这个命令:

 az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv

您最终会得到一个如下所示的令牌:

{
  "aud": "https://management.azure.com",
  "iss": "https://sts.windows.net/[guid]/",
  "iat": 1646746056,
  "nbf": 1646746056,
  "exp": 1646750582,
  "acr": "1",
  "aio": 

您可以将完整的token复制到jwt。io/jwt.ms查看所有claims的值。

此令牌用于管理 API,因此可能会起作用。

我发现我做错了什么。我正在从 Firefox 的开发人员工具复制令牌,但显示的令牌被中间的 字符截断了。那只是很难发现。

完整的令牌应该有 5000 个字符长。

在Firefox中,在Request Headers显示的地方,select Raw 然后right-click, select all and copy。这为您提供了完整的值。

或者使用 Jan_V 在他的回答中建议的命令:

az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv