-2

我正在尝试编写一个后端程序,该程序将获得所有 Azure 安全中心任务(推荐),而不涉及浏览器授权。据我所知,Graph API 没有安全任务的端点,我能找到的唯一端点是https://docs.microsoft.com/en-us/rest/api/securitycenter/tasks/list支持只有隐式流授权。有没有办法在不使用浏览器中的同意窗口的情况下获得授权,或者通过不同的端点获取任务?

4

2 回答 2

1

您可以使用以下使用 REST API 的 Powershell 脚本来获取所有任务:

$subscriptionId = "yoursubid"
$context = Get-AzContext
$profile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($profile)
$token = $profileClient.AcquireAccessToken($context.Subscription.TenantId)
$authHeader = @{
    'Content-Type'  = 'application/json'
    'Authorization' = 'Bearer ' + $token.AccessToken
}

$uri = "https://management.azure.com/subscriptions/$subscriptionId/providers/Microsoft.Security/tasks?api-version=2015-06-01-preview"

$response = Invoke-RestMethod -Uri $uri `
                              -Method Get `
                              -Headers $authHeader
$response.value | ConvertTo-Json

或者

可以直接使用Azure CLI直接获取 .

Command:
az security task list

参考:

az 安全任务 | 微软文档

使用 PowerShellGet 安装 Azure Az PowerShell 模块 | 微软文档

上述 powershell 脚本的输出:

在此处输入图像描述

于 2021-08-13T08:21:21.700 回答
0

对于那些将来需要它的人来说,这是可能的。它对我不起作用,因为我从错误的地址请求了不记名令牌,请使用以下 url 进行不记名令牌请求:

https://login.microsoftonline.com/{tenantId}/oauth2/token

并不是:

https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token (这是 azure AD 典型不记名令牌请求 url)

于 2021-08-17T09:26:21.833 回答