Azure Policy能否校验已知CIDR列表并按订阅ID匹配执行拒绝?
Azure Policy 支持CIDR范围校验与订阅关联映射表的实现
Azure Policy完全支持你提到的需求,具体实现可以拆成两部分:
一、CIDR范围列表校验(静态/参数化)
- 静态列表:直接在Policy规则中定义禁止的CIDR数组,用
in操作符检查待创建资源的CIDR是否命中列表,触发拒绝动作。 - 参数化列表:把禁止的CIDR列表设为Policy参数,后续修改列表无需改动Policy定义,仅更新参数值即可,灵活性更高。
二、基于订阅ID的映射表键值提取
Azure Policy可以通过subscription().subscriptionId获取当前操作的订阅ID,结合对象类型的参数实现按订阅匹配对应的CIDR列表:
- 定义一个对象参数,键为订阅ID,值为对应订阅需要禁止的CIDR数组;
- 在规则中通过
[parameters('参数名')[subscription().subscriptionId]]提取当前订阅对应的CIDR列表,再做校验。
简化规则示例
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Network/virtualNetworks" }, { "field": "Microsoft.Network/virtualNetworks/addressSpace.addressPrefixes[*]", "in": "[parameters('deniedCidrMappings')[subscription().subscriptionId]]" } ] }, "then": { "effect": "deny" } }, "parameters": { "deniedCidrMappings": { "type": "object", "defaultValue": { "sub-12345678-1234-1234-1234-1234567890ab": ["10.0.0.0/8"], "sub-87654321-4321-4321-4321-ba0987654321": ["192.168.0.0/16"] } } } }
内容的提问来源于stack exchange,提问作者Stuart.Sklinar
相关产品推荐
相关产品推荐

