Azure Policy-Muster: Der Operator „count“

Mit dem Operator count werden Mitglieder eines Alias vom Typ [*] ausgewertet.

Beispielrichtliniendefinition

Mit der folgenden Richtliniendefinition wird eine Überwachung von Netzwerksicherheitsgruppen durchgeführt, die so konfiguriert sind, dass eingehender RDP-Datenverkehr (Remotedesktopprotokoll) zugelassen wird.

{
    "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"
            }
        }
    }
}

Erklärung

Die Kernkomponenten des Operators count sind field, where und die Bedingung. Diese Komponenten sind im folgenden Codeausschnitt hervorgehoben.

  • field dient zum Angeben des Alias, dessen Mitglieder ausgewertet werden sollen. In diesem Beispiel wird das Alias-ArraysecurityRules der Netzwerksicherheitsgruppe betrachtet.
  • Mithilfe von where wird unter Verwendung der Richtliniensprache definiert, welche Mitglieder des Arrays die Kriterien erfüllen. In diesem Beispiel werden mithilfe eines logischen Operators vom Typ allOf drei verschiedene Bedingungsauswertungen der Eigenschaften des Alias-Arrays gruppiert: direction, access und destinationPortRange.
  • Die count-Bedingung in diesem Beispiel lautet greater. „count“ wird als „true“ ausgewertet, wenn mindestens ein Mitglied des Alias-Arrays der where-Klausel entspricht.
{
    "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
}

Nächste Schritte