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

如何配置Azure策略阻止非指定资源组VM网卡公网IP创建

问题根因

你编写的两版策略均存在核心逻辑偏差,导致无法生效:

  • 第一版策略的allOf判断块同时要求评估对象的type属性既是网卡(Microsoft.Network/networkInterfaces)又是资源组(Microsoft.Resources/subscriptions/resourceGroups)。Azure Policy每次仅评估单个资源对象,单个资源不可能同时属于两种类型,因此该规则永远不会触发。
  • 第二版策略使用anyOf拼接两个判断块,会导致规则要么拦截所有关联公网IP的网卡(无论位于哪个资源组),要么拦截所有非指定名称的资源组,完全不符合需求。
  • 额外逻辑错误:判断资源所属资源组不需要匹配资源组类型字段,Azure Policy提供了内置字段resourceGroup.name,可直接读取当前评估资源所属的资源组名称,无需额外关联资源组资源做判断。
正确策略代码

你的需求对应的判断逻辑为:当评估资源是网卡、网卡的IP配置关联了公网IP、且网卡所在资源组不属于指定白名单时,拒绝操作。可直接使用以下代码:

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/networkInterfaces"
        },
        {
          "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].publicIpAddress.id",
          "exists": true
        },
        {
          "field": "resourceGroup.name",
          "notEquals": "rg-backup-lab-001"
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {}
}
优化建议

如果后续需要扩展允许创建公网IP关联的资源组范围,建议将白名单资源组改为策略参数,无需每次修改规则主体:

  1. 在根节点添加参数定义:
"parameters": {
  "allowedResourceGroupNames": {
    "type": "Array",
    "metadata": {
      "displayName": "允许关联公网IP的资源组列表",
      "description": "列表内资源组中的网卡可正常关联公网IP"
    },
    "defaultValue": [
      "rg-backup-lab-001"
    ]
  }
}
  1. 将原有的资源组名称判断条件替换为:
{
  "field": "resourceGroup.name",
  "notIn": "[parameters('allowedResourceGroupNames')]"
}

如果需要同时拦截独立公网IP资源的创建(而非仅拦截网卡关联公网IP的操作),可以在判断块外层增加anyOf分支,补充对Microsoft.Network/publicIPAddresses类型资源的判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:45:36