You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Policy合规异常:符合要求的资源组显示不合规

Azure Policy标签合规性问题排查与解决

问题背景

配置了一条Azure Policy,用于给名称包含“prod”的资源组添加env:prod标签:

  • 新资源组创建时可自动添加标签
  • 标签被删除后能自动恢复
  • 但符合条件的资源组始终显示不合规,合规评估提示策略在对比资源组名称与标签值
  • 执行修复任务显示“2/2已修复”,活动日志确认标签存在,但合规状态一周未更新

策略定义如下:

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
          "field": "name",
          "contains": "prod"
        }
      ]
    },
    "then": {
      "effect": "modify",
      "details": {
        "roleDefinitionIds": [
          "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
          {
            "operation": "addOrReplace",
            "field": "[concat('tags[','env',']')]",
            "value": "prod"
          }
        ]
      }
    }
  },
  "parameters": {}
}

1. 策略为何会做出此类对比评估?

核心原因是策略的mode设置错误:

  • 资源组属于Azure的索引资源(Indexed Resources),这类资源的标签、名称等属性需要通过mode: Indexed才能被Policy正确读取和评估
  • 你当前使用的mode: All会覆盖索引资源的默认评估逻辑,导致Policy在合规校验时出现异常,误判为需要对比资源组名称与标签值,最终持续显示不合规

2. 如何解决该问题?

步骤1:修改策略的mode为Indexed

更新后的策略定义如下(同时简化了标签字段的写法,不影响功能):

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
          "field": "name",
          "contains": "prod"
        }
      ]
    },
    "then": {
      "effect": "modify",
      "details": {
        "roleDefinitionIds": [
          "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
        ],
        "operations": [
          {
            "operation": "addOrReplace",
            "field": "tags['env']",
            "value": "prod"
          }
        ]
      }
    }
  },
  "parameters": {}
}

步骤2:重新触发合规评估

  • 门户操作:进入Azure门户的「策略」页面,找到该策略的分配,点击「重新评估」按钮
  • CLI操作:执行命令:
az policy state trigger-scan

步骤3:等待合规状态更新

一般15-30分钟后合规状态会自动刷新,最长不超过1小时。由于之前的修复任务已确保标签存在,更新后的策略会正确识别资源组的合规状态。


内容的提问来源于stack exchange,提问作者Yousef Imran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:00:58