使用 Azure Policy 和 IPAM 防止虚拟网络地址空间重叠

重要

目前,Azure Virtual Network Manager 中的 IP 地址管理 (IPAM) 功能为预览版。 在预览期间,它已在以下区域推出:

  • 中国北部 3

此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

Azure 虚拟网络管理器可帮助你集中管理整个组织的虚拟网络。 虽然它为 VNet 提供治理,但它不会在虚拟网络创建或更新期间自动阻止重叠的地址空间。 通过将 Azure PolicyIP 地址管理(IPAM)池相结合,确保环境中没有 IP 冲突的网络连接,可以强制实施不重叠的地址空间。

以下示例 Azure 策略定义可确保此策略定义范围内的任何虚拟网络(Microsoft.Network/virtualNetworks)必须从两个指定池之一分配一个 IPAM 池前缀。 如果虚拟网络缺少来自任一池的分配,则策略会通过强制使用未重叠的无类域间路由(CIDR)地址来拒绝创建或更新虚拟网络。

{
    "mode": "All", 
    
    "parameters": {}, 

    "policyRule": { 

      "if": { 

        "allOf": [ 

          { 

            "field": "type", 

            "equals": "Microsoft.Network/virtualNetworks" 

          },

          { 

            "not": { 

              "anyOf": [ 

                { 

                  "field": "Microsoft.Network/virtualnetworks/addressSpace.ipamPoolPrefixAllocations[*].pool.id", 

                  "equals": "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/networkManagers/network-manager/ipamPools/IPAM-pool-2" 

                }, 

                { 

                  "field": "Microsoft.Network/virtualnetworks/addressSpace.ipamPoolPrefixAllocations[*].pool.id", 

                  "equals": "/subscriptions/subscriptionID/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/networkManagers/network-manager/ipamPools/IPAM-pool-3" 

                } 

              ] 

            } 

          } 

        ] 

      }, 

      "then": { 

        "effect": "deny" 

      } 

    }
} 

策略定义中包括以下步骤:

  • 资源检查 - 它仅适用于虚拟网络(Microsoft.Network/virtualNetworks)。
  • 资源池分配检查 - 用于验证虚拟网络是否从以下任一项获取了 IPAM 资源池分配:
    • IPAM-pool-2
    • IPAM-pool-3
  • 强制 - 如果没有任何分配,策略则拒绝该操作。 为了进行池分配,必须在池中不重叠 IP 前缀,因此无法创建具有重叠前缀的 VNet。 资源检查:它仅适用于虚拟网络(Microsoft.Network/virtualNetworks)。

策略的实施步骤

使用策略定义,可以在 Azure 环境中强制实施不重叠的地址空间。 按照以下步骤实施策略:

  1. 确定现有的网络管理器和 IPAM 池 - 确保已创建现有的 Azure 虚拟网络管理器实例和至少两个 IPAM 池。 有关详细信息,请参阅 创建虚拟网络管理器创建 IPAM 池
  2. 创建 Azure Policy 定义 - 使用 JSON 示例在 Azure Policy 中创建策略定义。 可以通过 Azure 门户、Azure CLI 或 PowerShell 执行此作。 有关详细信息,请参阅 创建和分配策略定义
  3. 分配策略 - 将策略分配给要在其中强制实施非重叠地址空间规则的特定范围(订阅或管理组)。
  4. 测试策略 - 创建或更新虚拟网络,而不使用来自指定池的 IPAM 分配。 如果策略正常工作,则应拒绝该操作。

后续步骤