如何修改Azure Policy实现VM满足ASR启用或指定标签即合规的审计
解决Azure Policy审计VM ASR合规性时添加标签豁免的问题
问题核心
你尝试在Microsoft.Resources/links的existenceCondition中添加VM标签判断,但标签属于Microsoft.Compute/virtualMachines类型资源的属性,而非links资源的属性,因此该写法无效。需要调整策略逻辑,实现“VM启用ASR”或“存在asrexempt=true标签”任一条件即合规的要求。
解决方案
修改策略规则,将标签判断放在if语句中,仅对没有豁免标签的VM执行ASR启用状态检查。具体代码如下:
{ "mode": "Indexed", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Compute/virtualMachines" }, { "not": { "field": "tags['asrexempt']", "equals": "true" } } ] }, "then": { "effect": "auditIfNotExists", "details": { "type": "Microsoft.Resources/links", "existenceCondition": { "field": "name", "like": "ASR-Protect-*" } } } }, "parameters": {} }
逻辑说明
- if语句过滤:先筛选出所有VM资源,同时排除带有
asrexempt=true标签的VM。 - then语句检查:仅对剩下的VM执行
auditIfNotExists检查,判断是否存在名称以ASR-Protect-*开头的Microsoft.Resources/links资源(即ASR已启用)。 - 合规判定:
- 带有
asrexempt=true标签的VM:直接跳过检查,视为合规。 - 无豁免标签的VM:存在ASR关联链接则合规,否则被审计为不合规。
- 带有
这样就能在报表中完整显示所有VM的合规状态,无需使用政策豁免。
内容的提问来源于stack exchange,提问作者pgbfnf
相关产品推荐
相关产品推荐

