使用 Azure AZ Powershell Cmdlet 列出 Azure 安全中心策略状态

Posted

技术标签:

【中文标题】使用 Azure AZ Powershell Cmdlet 列出 Azure 安全中心策略状态【英文标题】:List Azure Security Center Policies status using Azure AZ Powershell Cmdlets 【发布时间】:2020-02-17 12:46:53 【问题描述】:

请告诉我可用于列出与特定订阅相关的安全策略的命令。

我要列出的内容如下:

在导航面板中,选择安全策略以访问策略管理门户。

    在“策略管理”页面上,单击要检查的订阅名称以访问选定的订阅配置设置。

    在“安全策略”页面的“计算和应用程序”类别中,检查计算机安全配置中的漏洞应修复设置状态。如果配置设置设置为已禁用,则不会为当前订阅中可用的 Microsoft Azure 虚拟机 (VM) 启用操作系统漏洞监控。

想要使用 powershell 命令列出以上策略状态。

使用 Get-AzPolicyAssignment

检索到的政策与门户网站上列出的政策不同。

谢谢。

【问题讨论】:

【参考方案1】:

如果我没误会的话,你要检查策略[Preview]: Enable Monitoring in Azure Security CenterVulnerabilities in security configuration on your machines should be remediated参数的状态。

目前,我们可以用

$policy = Get-AzPolicyAssignment | Where-Object $_.Properties.displayName -eq '[Preview]: Enable Monitoring in Azure Security Center'

但默认情况下我们似乎无法在此命令中获取参数的状态


如果您的最终目标是检查状态,如果是Disabled,那么您将其设置为AuditIfNotExists

如果是这样,你可以使用下面的命令直接设置它,无论是Disabled还是AuditIfNotExists,都会设置为AuditIfNotExists(如果你想设置为Disabled ,只需将命令更改为systemConfigurationsMonitoringEffect = "Disabled")。

$policy = Get-AzPolicyAssignment | Where-Object $_.Properties.displayName -eq '[Preview]: Enable Monitoring in Azure Security Center'
Set-AzPolicyAssignment -Id $policy.ResourceId -PolicyParameterObject @systemConfigurationsMonitoringEffect = "AuditIfNotExists"

然后我们检查$policy.Properties.parameters,它出现了。检查门户,您会发现它也有效。

更新

如果只使用Get-AzPolicyAssignment 不带任何参数,Initiative 策略将不会返回。

导航到门户中的Policy -> Assignments,找到你想要的Initiative类型策略,点击它,复制Assignment ID

然后使用下面的命令。

Get-AzPolicyAssignment -Id <Assignment ID>

如果你想获取Initiative策略下的所有策略,试试下面的命令,$policies就是你想要的。

$initiative = Get-AzPolicyAssignment -Id <Assignment ID>
$policies = (Get-AzPolicySetDefinition -Id $initiative.Properties.policyDefinitionId).Properties.policyDefinitions

在门户中查看它们:

【讨论】:

已尝试使用 Get-AzPolicyAssignment 命令,但未显示安全策略下 azure 门户中列出的所有策略。我在这里错过了什么吗? @PrashantShete 你想列出什么?您能否在您的问题中提供屏幕截图? 用截图更新了问题,请检查。 @PrashantShete 导航到门户中的Policy -> Assignments,按照此屏幕截图i.stack.imgur.com/JZJgD.png,检查您的政策是否存在,如果存在,请使用Get-AzPolicyAssignment | Where-Object $_.Properties.displayName -eq '&lt;Policy name&gt;' 拥有试试看。 @Joy wang - 是的,我可以在门户中看到与 i.stack.imgur.com/rPvMe.jpg 相同的政策。其中两个是主动的,有什么办法可以用AZ power-shell命令来描述主动,列出它下的所有策略?

以上是关于使用 Azure AZ Powershell Cmdlet 列出 Azure 安全中心策略状态的主要内容,如果未能解决你的问题,请参考以下文章

Azure自动化| Runbook | Powershell | Get-AzRoleAssignment | Microsoft.Rest.Azure.CloudException

如何使用 AZ Powershell 获取 VMSize 的成本/月?

Azure 函数中的 Az.Functions 模块引发错误

Azure 基础:用 PowerShell 自动登录

如何在整个 Azure 管理组上运行 powershell 脚本以跨越多个订阅?

在 Docker 中运行 Azure DevOps 作业时出现“找不到具有给定版本的模块 Az.Accounts”错误