重要
目前,Azure Virtual Network Manager 中的 IP 地址管理 (IPAM) 功能为预览版。 在预览期间,它已在以下区域推出:
- 中国北部 3
此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。
Azure 虚拟网络管理器可帮助你集中管理整个组织的虚拟网络。 虽然它为 VNet 提供治理,但它不会在虚拟网络创建或更新期间自动阻止重叠的地址空间。 通过将 Azure Policy 与 IP 地址管理(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 环境中强制实施不重叠的地址空间。 按照以下步骤实施策略:
- 确定现有的网络管理器和 IPAM 池 - 确保已创建现有的 Azure 虚拟网络管理器实例和至少两个 IPAM 池。 有关详细信息,请参阅 创建虚拟网络管理器 并 创建 IPAM 池。
- 创建 Azure Policy 定义 - 使用 JSON 示例在 Azure Policy 中创建策略定义。 可以通过 Azure 门户、Azure CLI 或 PowerShell 执行此作。 有关详细信息,请参阅 创建和分配策略定义。
- 分配策略 - 将策略分配给要在其中强制实施非重叠地址空间规则的特定范围(订阅或管理组)。
- 测试策略 - 创建或更新虚拟网络,而不使用来自指定池的 IPAM 分配。 如果策略正常工作,则应拒绝该操作。