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

自定义Azure策略报错:仅允许特定AD组创建公网IP问题排查

自定义Azure策略拒绝非指定AD组创建公网IP的问题修正

你的策略存在几个关键问题,导致无法正常工作,以下是问题点和修正方案:

问题点分析

  • 资源字段使用错误:你用owner字段判断权限,但Azure资源创建时还未设置所有者,且该字段不存储创建者的AD组信息。要验证请求发起者的身份归属,需使用requestContext().identity.principalId来获取当前请求的主体ID。
  • Effect配置错误:你的目标是拒绝不符合条件的创建操作,却使用了modify效果的配置(details内的operations等参数属于modify效果,Deny效果无需这些内容)。
  • 参数名称拼写错误:代码中alloweGroupsID拼写错误,正确应为allowedGroupsID。

修正后的策略代码

如果需求是仅允许指定AD组(以组ID直接匹配,适用于组作为服务主体发起请求)创建公网IP,可使用以下策略:

{
  "parameters": {
    "effect": {
      "type": "String",
      "metadata": {
        "displayName": "Effect",
        "description": "启用或禁用策略执行"
      },
      "allowedValues": [
        "Deny",
        "Disabled"
      ],
      "defaultValue": "Deny"
    },
    "allowedGroupsID": {
      "type": "Array",
      "metadata": {
        "displayName": "允许的Azure AD组ID",
        "description": "允许创建公网IP的Azure AD组ID列表"
      }
    }
  },
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Network/publicIPAddresses"
      },
      {
        "not": {
          "field": "requestContext().identity.principalId",
          "in": "[parameters('allowedGroupsID')]"
        }
      }
    ]
  },
  "then": {
    "effect": "[parameters('effect')]"
  }
}

扩展:允许组内用户创建公网IP

如果需要允许指定AD组内的所有用户创建公网IP(而非仅组本身),需检查请求发起者是否属于指定组,可使用角色分配关联检查:

{
  "parameters": {
    "effect": {
      "type": "String",
      "metadata": {
        "displayName": "Effect",
        "description": "启用或禁用策略执行"
      },
      "allowedValues": [
        "Deny",
        "Disabled"
      ],
      "defaultValue": "Deny"
    },
    "allowedGroupsID": {
      "type": "Array",
      "metadata": {
        "displayName": "允许的Azure AD组ID",
        "description": "允许创建公网IP的Azure AD组ID列表"
      }
    }
  },
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Network/publicIPAddresses"
      },
      {
        "not": {
          "exists": {
            "field": "Microsoft.Authorization/roleAssignments[*]",
            "where": {
              "allOf": [
                {
                  "field": "Microsoft.Authorization/roleAssignments[*].principalId",
                  "in": "[parameters('allowedGroupsID')]"
                },
                // 可根据实际需求调整角色,这里用网络参与者角色示例
                {
                  "field": "Microsoft.Authorization/roleAssignments[*].roleDefinitionId",
                  "equals": "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
                }
              ]
            }
          }
        }
      }
    ]
  },
  "then": {
    "effect": "[parameters('effect')]"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:45:02