В Azure у меня есть правило NSG, настроенное следующим образом:
Я пытаюсь написать политику Azure для аудита, если исходные IP-адреса / диапазоны CIDR установлены неправильно.
Значение всегда должно быть точно равным: 192.168.0.0/24,192.168.1.0/24.
Если это не то точное значение, следует провести аудит.
Это определение, которое я написал:
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Network/networkSecurityGroups"
},
{
"field": "name",
"like": "jeffweb2-dr-sm-nsg"
},
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].name",
"equals": "SQL"
},
{
"anyof": [
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].sourceAddressPrefix",
"notEquals": [
"192.168.0.0/24",
"192.168.1.0/24"
]
}
]
}
]
}
},
"greater": 0
}
]
},
"then": {
"effect": "audit"
}
}
Но при попытке создать определение с помощью этого json я получаю ошибку:
New-AzPolicyDefinition : InvalidPolicyRule : Failed to parse policy rule: 'Error reading string. Unexpected token: StartArray. Path 'notEquals'.'.
Вопрос: Как передать несколько диапазонов CIDR в notEquals, я считаю, что это моя проблема.
sourceAddressPrefix поддерживает только один диапазон IP-адресов, вы хотите использовать sourceAddressPrefixes.
Пользовательский интерфейс портала скрывает это, но в ARM это два разных свойства.