问题描述
我正在尝试创建一个策略来审核我在 Azure 中的网络接口。 策略应该指出 NIC 是否分配了没有 NSG 的公共 IP(在 NIC 上而不是在子网上) 这是我的 JSON。请协助解决这个问题。目前,这里的问题是所有带/不带 PIP 和 NSG 的 NIC 都不合规。
{
"mode": "All","policyRule": {
"if": {
"allOf": [
{
"field": "type","equals": "Microsoft.Network/networkInterfaces"
},{
"not": {
"field": "Microsoft.Network/networkInterfaces/networkSecurityGroup","equals": "True"
}
},{
"not": {
"field": "Microsoft.Network/networkInterfaces/ipConfigurations[*].publicIPAddress","equals": "True"
}
}
]
},"then": {
"effect": "audit"
}
},"parameters": {}
}
解决方法
我会尝试使用 exists
条件运算符。结果看起来像这样。
{
"mode": "All","policyRule": {
"if": {
"allOf": [
{
"field": "type","equals": "Microsoft.Network/networkInterfaces"
},{
"not": {
"field": "Microsoft.Network/networkInterfaces/networkSecurityGroup","exists": true
}
},{
"field": "Microsoft.Network/networkInterfaces/ipConfigurations[*].publicIPAddress","exists": true
}
]
},"then": {
"effect": "audit"
}
},"parameters": {}
}
将您的所有资源标记为不合规的原因是因为您正在检查的资源的 publiIpAddress 或 NSG 都不等于“True”。如需更多政策条件运算符,请查看 https://docs.microsoft.com/en-us/azure/governance/policy/concepts/definition-structure#conditions