【问题标题】:Using Azure Policy to deny public IPs on specific subnets使用 Azure Policy 拒绝特定子网上的公共 IP
【发布时间】:2023-01-13 20:20:09
【问题描述】:

我创建此策略定义是为了拒绝在特定子网上分配公共 IP。目前我必须将策略分别分配给每个子网,但我正在寻找一种进入多个子网的方法。 (我按照this指南在整个 Vnet 上阻止公共 IP,但我有某些子网应该允许分配新的公共 IP)。

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/networkInterfaces"
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].publicIpAddress.id",
            "notLike": "*"
          }
        },
        {
          "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].subnet.id",
          "contains": "[parameters('subnetId')]"
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {
    "subnetId": {
      "type": "String",
      "metadata": {
        "displayName": "Subnet ID",
        "description": "The resource ID of the virtual network subnet that should have a rule enabled. Example: /subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/Default/providers/Microsoft.Network/virtualNetworks/testvnet/subnets/testsubnet"
      }
    }
  }
}

我尝试将类型设置为数组并在“[parameters('subnetId')]”上使用拆分函数,但我总是在 Azure 上遇到错误。

关于如何实现这一目标的任何想法?谢谢!

【问题讨论】:

    标签: azure arm-template subnet azure-policy vnet


    【解决方案1】:

    我尝试分配 Azure Policy 以阻止为特定子网创建公共 IP,它成功地限制了该子网的 IP。

    您需要在策略分配的默认值部分提供子网的资源 ID。

    我的政策定义:-

       },
       
       "parameters": {
       
       "subnetId": {
       
       "type": "String",
       
       "metadata": {
       
       "displayName": "Subnet ID",
       
       "description": "Deny Policy assignment"
       
       },
       
       "defaultValue": "/subscriptions/<subscription-id>/resourceGroups/policryrg/providers/Microsoft.Network/virtualNetworks/policyvnetdeny/subnets/subnetA"
       
       }
       
       },
       
       "policyRule": {
       
       "if": {
       
       "allOf": [
       
       {
       
       "field": "type",
       
       "equals": "Microsoft.Network/networkInterfaces"
       
       },
       
       {
       
       "not": {
       
       "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].subnet.id",
       
       "notLike": "*"
       
       }
       
       },
       
       {
       
       "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].subnet.id",
       
       "contains": "[parameters('subnetId')]"
       
       }
       
       ]
       
       },
       
       "then": {
       
       "effect": "deny"
       
       }
       
       }
       
       },
    
    

    我尝试通过分配 subnetA 来创建 VM,在该 subnetA 上应用了策略限制以限制公共 IP 的分配,部署失败,因为策略不允许。

    错误 :-

    我尝试创建新 VM 并将 IP 分配给同一 Vnet 中的另一个子网,并且部署成功:-

    验证成功:-

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      相关资源
      最近更新 更多