Patrón de Azure Policy: operador count
El operador count evalúa los miembros de un alias [*].
Definición de directiva de ejemplo
Esta definición de directiva audita los grupos de seguridad de red configurados para permitir el tráfico del Protocolo de escritorio remoto (RDP) entrante.
{
"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"
}
}
}
}
Explicación
Los componentes principales del operador count son field, where y la condición. Cada uno de ellos se resalta en el fragmento de código siguiente.
- field indica a count de qué alias debe evaluar los miembros. Aquí, observamos la matriz de alias securityRules[*] del grupo de seguridad de red.
- where utiliza el lenguaje de directivas para definir qué miembros de la matriz cumplen los criterios. En este ejemplo, el operador lógico allOf agrupa tres evaluaciones de condiciones diferentes de las propiedades de la matriz de alias: direction, access y destinationPortRange.
- La condición de count en este ejemplo es greater (mayor que). Count se evalúa como verdadero cuando uno o más miembros de la matriz de alias coincide con la cláusula 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
}
Pasos siguientes
- Consulte otros patrones y definiciones integradas.
- Revise la estructura de definición de Azure Policy.
- Vea la Descripción de los efectos de directivas.