Share via


Azure Policy-patroon: tags

Tags zijn een belangrijk onderdeel van het beheren en ordenen van uw Azure-resources. Met Azure Policy kunt u op grote schaal tags configureren voor uw nieuwe en bestaande resources voor het effect aanpassen en hersteltaken.

Voorbeeld 1: Tags parameteriseren

Deze beleidsdefinitie gebruikt twee parameters, tagName en tagValue, om in te stellen waar de beleidstoewijzing naar zoekt bij resourcegroepen. Dankzij deze indeling kan de beleidsdefinitie worden gebruikt voor alle combinaties van tagnaam en tagwaarde, met behoud van één beleidsdefinitie.

Notitie

Hoewel dit patroon voor beleidsdefinities vergelijkbaar is met het patroon in Patroon: Parameters - Voorbeeld 1, gebruikt dit voorbeeld de modus Alles en is gericht op resourcegroepen.

{
    "properties": {
        "displayName": "Add or replace a tag on resource groups",
        "mode": "All",
        "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups 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'"
                }
            },
            "tagValue": {
                "type": "String",
                "metadata": {
                    "displayName": "Tag Value",
                    "description": "Value of the tag, such as 'production'"
                }
            }
        },
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Resources/subscriptions/resourceGroups"
                    },
                    {
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "notEquals": "[parameters('tagValue')]"
                    }
                ]
            },
            "then": {
                "effect": "modify",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "operations": [{
                        "operation": "addOrReplace",
                        "field": "[concat('tags[', parameters('tagName'), ']')]",
                        "value": "[parameters('tagValue')]"
                    }]
                }
            }
        }
    }
}

Voorbeeld 1: Uitleg

"properties": {
    "displayName": "Add or replace a tag on resource groups",
    "mode": "All",
    "description": "Adds or replaces the specified tag and value when any resource group is created or updated. Existing resource groups can be remediated by triggering a remediation task.",
    "metadata": {
        "category": "Tags"
    },

In dit voorbeeld is modus ingesteld op Alle omdat het een resourcegroep als doel heeft. In de meeste gevallen moet modus zijn ingesteld op Geïndexeerd wanneer u met tags werkt. Zie modi voor meer informatie.

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "notEquals": "[parameters('tagValue')]"
        }
    ]
},

In dit gedeelte van de beleidsdefinitie combineert concat de parameter tagName en de tags['name']-indeling om veld die tag te laten evalueren voor de parameter tagValue. Omdat notEquals wordt gebruikt, wordt het wijzigingseffect geactiveerd als tags[tagName] niet gelijk is aan tagValue.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[parameters('tagValue')]"
}]

Hier wordt de indeling voor het gebruik van tagwaarden met parameters ook gebruikt voor de bewerking addOrReplace, voor het maken of bijwerken van de tag naar de gewenste waarde voor de geëvalueerde resourcegroep.

Voorbeeld 2: Tagwaarde overnemen van resourcegroep

Deze beleidsdefinitie gebruikt de parameter tagName om te bepalen van welke tag de waarde moet worden overgenomen uit de bovenliggende resourcegroep.

{
    "properties": {
        "displayName": "Inherit a tag from the resource group",
        "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')]]"
                    }]
                }
            }
        }
    }
}

Voorbeeld 2: Uitleg

"properties": {
    "displayName": "Inherit a tag from the resource group",
    "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"
    },

In dit voorbeeld is modus ingesteld op Geïndexeerd omdat het doel geen resourcegroep of abonnement is, ondanks dat de waarde afkomstig is uit een resourcegroep. Zie modi voor meer informatie.

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

De policyRule.if gebruikt concat zoals Voorbeeld 1 om de waarde van tagName te evalueren maar gebruikt de functie resourceGroup() om die te vergelijken met de waarde van dezelfde tag van de bovenliggende resourcegroep. Het tweede component controleert of de tag van de resourcegroep een waarde heeft en niet null is.

"operations": [{
    "operation": "addOrReplace",
    "field": "[concat('tags[', parameters('tagName'), ']')]",
    "value": "[resourceGroup().tags[parameters('tagName')]]"
}]

Hier gebruikt de waarde die wordt toegewezen aan de tag tagName van de resource ook de functie resourceGroup() om de waarde op te halen van de bovenliggende resourcegroep. Op die manier kunt u tags overnemen van bovenliggende resourcegroepen. Als u de resource al hebt gemaakt maar de tag niet hebt toegevoegd, kunt u met dezelfde beleidsdefinitie en een hersteltaak bestaande resources bijwerken.

Volgende stappen