是否可以通过Powershell访问Azure中安全中心建议的严重性



我想写一个powershell scrip,向我显示我的Azure帐户中的所有安全中心建议及其严重级别(例如,低、中或高(我想我可以使用Az.安全模块来获得建议。。(AzSecurityTasks(但我不知道如何访问严重性,因为模块没有为我列出它们,我只认为我可以通过Azure Cli中的az安全任务列表访问严重性。但这对我自己的powershell脚本没有帮助。有人有主意吗?也许是通过Azure门户的HTTP请求?提前谢谢。

有几个选项。

  1. 您可以尝试在PowerShell脚本中使用API

当使用PowerShell与RESTAPI一起工作时,您最终会遇到两个命令:InvokeWebRequestInvokeRestMethod

这两个命令都向各种HTTP端点发送HTTP数据,并从中接收HTTP数据,可用于与RESTAPI交互。

看看这个文档中的示例:使用PS调用Rest方法

若要获取安全评估,请在API方法中调用此HTTP get请求。

GET https://management.azure.com/{scope}/providers/Microsoft.Security/assessments?api-version=2020-01-01

请浏览此文档以获取样本响应和参数的详细信息:评估清单

  1. 此外,您是否尝试过使用Powershell获取AzSecurityAssessment cmd。它很可能也会给你带来严重性。Get-AzSecurityAssessment的文档参考

但如果没有,请注意安全cmdlet正在预览中(而不是GA(,这可能是您没有找到任何文档的原因。预览模块不随Az一起发货,需要单独安装:

安装模块-名称Az.Security

我希望这些信息能有所帮助。

严重性是评估元数据资源的一部分,可通过API获得。使用它而不是"任务"API。

GEThttps://management.azure.com/{scope}/providers/Microsoft。安全/评估?api版本=2020-01-01

它只返回1000条记录。然后,您需要使用nextLink列来继续下一个1000条记录,等等。

获取AzSecurityAssessment返回显示名称,但不返回statusCode(健康、不健康、不适用(。

这有点旧,但以防有人仍然需要它。这也可以帮助您提取状态代码:

$Subscriptions = Get-AzSubscription
$Report = @()
$i = 1
$total = $Subscriptions.count
foreach ($Subscription in $Subscriptions)
{
Set-AzContext -SubscriptionId $($subscription.id)
Write-Host "($i out of $total) Processing subscription $($subscription.name)"
$SecurityAssessments = $null
$SecurityAssessments = Get-AzSecurityAssessment
foreach ($SecurityAssessment in $SecurityAssessments)
{
$TempEntry = $null
$TempEntry = $SecurityAssessment | Select-Object Name,DisplayName,Id,
@{Name="SubscriptionName"; Expression={$($subscription.name)}},
@{Name="StatusCause"; Expression={$($_.status.cause)}},
@{Name="StatusCode"; Expression={$($_.status.code)}},
@{Name="StatusDescription"; Expression={$($_.status.description)}},
@{Name="ResourceDetailsId"; Expression={$($_.ResourceDetails.Id)}},
@{Name="ResourceDetailsSource"; Expression={$($_.ResourceDetails.Source)}}
$Report += $TempEntry
}
$i++
}
$Report

最新更新