通过 API 获取 Azure 安全中心任务

Get Azure Security Center tasks via API

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

您可以使用以下使用 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 security task | Microsoft Docs

Install the Azure Az PowerShell module with PowerShellGet | Microsoft Docs

上述 powershell 脚本的输出:

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

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

而不是:

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