Dela via


Azure Policy-mönster: värdeoperatorn

Värdeoperatorn utvärderar parametrar, mallfunktioner som stöds eller literaler till ett angivet värde för ett visst villkor.

Varning

Om resultatet av en mallfunktion är ett fel misslyckas principutvärderingen. En misslyckad utvärdering är en implicit nekande. Mer information finns i undvika mallfel.

Exempel på principdefinition

Den här principdefinitionen lägger till eller ersätter taggen som anges i parametern tagName (sträng) på resurser och ärver värdet för tagName från resursgruppen som resursen finns i. Den här utvärderingen sker när resursen skapas eller uppdateras. Som en ändringseffekt kan reparationen köras på befintliga resurser via en reparationsuppgift.

{
    "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')]]"
                    }]
                }
            }
        }
    }
}

Förklaring

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

Värdeoperatorn används i policyRule.if-blocket i egenskaper. I det här exemplet används den logiska operatorn allOf för att ange att båda villkorssatserna måste vara sanna för att effekten, ändra, ska ske.

värdet utvärderar resultatet av mallfunktionen resourceGroup() till villkoret notEquals för ett tomt värde. Om taggnamnet som anges i tagName i den överordnade resursgruppen finns utvärderas villkoret till true.

Nästa steg