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

rfbsl7qr  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(140)

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

92vpleto

92vpleto1#

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

$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脚本的输出:

q0qdq0h2

q0qdq0h22#

对于那些将来需要这个的人来说,这是可能的。它对我不起作用,因为我从错误的地址请求了不记名令牌,请使用以下URL请求不记名令牌:
https://login.microsoftonline.com/{tenantId}/oauth2/token
而非:
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token(这是Azure AD典型不记名令牌请求URL)

flvlnr44

flvlnr443#

如果您不想在获取不记名令牌方面浪费时间(并且您想走powershell路线),也可以使用Invoke-AzRestMethod

# Capture everything MDC can do from a REST API
$Capabilities = (Invoke-AzRestMethod -ApiVersion "2022-09-01" -ResourceProviderName 'Microsoft.Security').Content | ConvertFrom-Json
$Capabilities.resourceTypes

相关问题