Azure Policy-Muster: Der Operator „value“

Der Operator value wertet Parameter, unterstützte Vorlagenfunktionen oder Literale für einen bereitgestellten Wert aus, um eine bestimmte Bedingung zu untersuchen.

Warnung

Wenn eine Vorlagenfunktion einen Fehler ergibt, schlägt die Richtlinienauswertung fehl. Eine fehlerhafte Auswertung ist ein implizites Deny (Verweigern). Weitere Informationen finden Sie unter Vermeiden von Vorlagenfehlern.

Beispielrichtliniendefinition

Mit der folgenden Richtliniendefinition wird das im Parameter tagName (Zeichenfolge) angegebene Tag für Ressourcen hinzugefügt oder ersetzt, und der Wert für tagName wird von der Ressourcengruppe geerbt, in der sich die Ressource befindet. Diese Auswertung erfolgt, wenn die Ressource erstellt oder aktualisiert wird. Da es sich bei der Korrektur um eine Auswirkung vom Typ modify handelt, kann sie für vorhandenen Ressourcen über einen Wartungstask ausgeführt werden.

{
    "properties": {
        "displayName": "Inherit a tag from the resource group",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "Adds or replaces the specified tag and value from the parent resource group when any resource is created or updated. Existing resources can be remediated by triggering a remediation task.",
        "metadata": {
            "category": "Tags"
        },
        "parameters": {
            "tagName": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Name",
                    "description": "Name of the tag, such as 'environment'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
                    },
                    {
                        "value": "[resourceGroup().tags[parameters('tagName')]]",
                        "notEquals": ""
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[resourceGroup().tags[parameters('tagName')]]"
                    }]
                }
            }
        }
    }
}

Erklärung

"if": {
    "allOf": [{
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[resourceGroup().tags[parameters('tagName')]]"
        },
        {
            "value": "[resourceGroup().tags[parameters('tagName')]]",
            "notEquals": ""
        }
    ]
},

Der Operator value wird innerhalb des Blocks policyRule.if verwendet, der sich wiederum innerhalb von properties befindet. In diesem Beispiel wird der logische OperatorallOf verwendet, um anzugeben, dass beide Bedingungsanweisungen „true“ sein müssen, damit die Auswirkung modify ausgelöst wird.

Mit value wird das Ergebnis der Vorlagenfunktion resourceGroup() für die Bedingung notEquals eines leeren Werts ausgewertet. Wenn der in tagName für die übergeordnete Ressourcengruppe angegebene Tagname vorhanden ist, wird die Bedingung als „true“ ausgewertet.

Nächste Schritte