Получение задач Центра безопасности Azure через API
Я пытаюсь написать серверную программу, которая будет выполнять все задачи Центра безопасности Azure (рекомендация) без авторизации браузера. Насколько я понял, у Graph API нет конечной точки для задач безопасности, и единственная конечная точка, которую я смог найти, - это https://docs.microsoft.com/en-us/rest/api/securitycenter/tasks/list, который поддерживает только неявная авторизация потока. Есть ли способ получить авторизацию без использования окна согласия в браузере или получить задачи через другую конечную точку?
3 ответа
Для тех, кому это понадобится в будущем, это возможно. У меня это не сработало, потому что я запросил токен-носитель с неправильного адреса, используйте следующий URL-адрес для запроса токена-носителя:
https://login.microsoftonline.com/{tenantId}/oauth2/token
И нет:
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token(это типичный URL-адрес запроса токена-носителя в Azure AD)
Вы можете использовать приведенный ниже сценарий 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
Справка:
аз задача безопасности | Документы Microsoft
Установите модуль AzureAz PowerShell с помощью PowerShellGet | Документы Microsoft
Вывод для приведенного выше сценария PowerShell:
Если вы не хотите возиться с получением токена носителя (и вы хотите пойти по маршруту 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