Azure订阅策略规则修正求助:调整VMSS扩展合规逻辑
Azure订阅策略修正:满足VMSS扩展要求的正确配置
你的需求是让Virtual Machine Scale Sets(VMSS)满足以下任一条件:
- 至少包含一个类型为X的扩展
- 同时包含类型为A和B的扩展
原代码的核心问题在于第二个条件仅检查扩展类型包含A或B中的任意一个,而非同时包含两者,无法满足你的要求。
以下是修正后的策略代码:
{ "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Compute/virtualMachineScaleSets" }, { "not": { "anyOf": [ // 条件1:至少存在一个类型为X的扩展 { "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.extensionProfile.extensions[*].type", "in": ["X"] }, // 条件2:同时存在类型A和类型B的扩展 { "allOf": [ { "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.extensionProfile.extensions[*].type", "in": ["A"] }, { "field": "Microsoft.Compute/virtualMachineScaleSets/virtualMachineProfile.extensionProfile.extensions[*].type", "in": ["B"] } ] } ] } } ] }, "then": { "effect": "deny" }, "versions": ["1.0.0"] }
代码说明:
- 外层
allOf确保规则仅对VMSS类型资源生效 not+anyOf的组合逻辑:只要VMSS不满足两个允许条件中的任意一个,就触发拒绝操作- 第一个允许条件:通过
extensions[*].type in ["X"]确保VMSS中至少存在一个X类型扩展 - 第二个允许条件:通过
allOf嵌套两个in检查,强制要求VMSS同时包含A和B类型的扩展
内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
相关产品推荐

