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