Шаблон Политики Azure: оператор count
Оператор count определяет участников псевдонима [*].
Пример определения политики
Это определение политики проверяет группы безопасности сети, настроенные на разрешение входящего трафика протокола удаленного рабочего стола (RDP).
{
"properties": {
"mode": "all",
"displayName": "Audit Network Security Groups for RDP",
"description": "This policy audits NSGs with RDP ports enabled",
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Network/networkSecurityGroups"
},
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "Inbound"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "Allow"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "3389"
}
]
}
},
"greater": 0
}
]
},
"then": {
"effect": "audit"
}
}
}
}
Объяснение
Основными компонентами оператора count являются field, where, и условие. Каждый из них выделен в приведенном ниже фрагменте кода.
- field указывает количество псевдонимов для определения участников. Здесь мы рассмотрим массив псевдонимов securityRules[*] группы безопасности сети.
- where использует язык политики, чтобы определить, какие элементы массива соответствуют критериям. В этом примере логический оператор allOf группирует три разных определения псевдонима для свойств массива: направление, доступи destinationPortRange.
- Условие подсчета в этом примере больше. Функция Count определяет значение "true", если один или несколько членов псевдонима массива совпадают с предложением where.
{
"count": {
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*]",
"where": {
"allOf": [{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].direction",
"equals": "Inbound"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].access",
"equals": "Allow"
},
{
"field": "Microsoft.Network/networkSecurityGroups/securityRules[*].destinationPortRange",
"equals": "3389"
}
]
}
},
"greater": 0
}
Дальнейшие действия
- Ознакомьтесь с другими шаблонами и встроенными определениями.
- Изучите статью о структуре определения Политики Azure.
- Изучите сведения о действии политик.