Получение задач Центра безопасности 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