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