Azure Policy vzor: značky

Značky jsou důležitou součástí správy, uspořádání a řízení prostředků Azure. Azure Policy umožňuje konfigurovat značky nových i stávajících prostředků ve velkém měřítku s úlohami úpravy a nápravy.

Ukázka 1: Parametrizace značek

Tato definice zásady používá dva parametry , tagName a tagValue k nastavení toho, co přiřazení zásad ve skupinách prostředků hledá. Tento formát umožňuje použít definici zásady pro libovolný počet kombinací názvu značky a hodnoty značky, ale zachovat pouze jednu definici zásady.

Poznámka

I když je tento vzor definice zásad podobný vzoru v části Vzor: Parametry – Ukázka č. 1, tato ukázka používá režimVše a cílí na skupiny prostředků.

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

Ukázka 1: Vysvětlení

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

V této ukázce je režim nastavený na Vše , protože cílí na skupinu prostředků. Ve většině případů by měl být režim při práci se značkami nastavený na Indexováno . Další informace najdete v tématu režimy.

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

V této části definice concat zásady kombinuje parametrizovaný parametr tagName a tags['name'] formát k určení pole pro vyhodnocení této značky pro parametr tagValue. Vzhledem k tomu, že se používá notEquals , pokud se tags[tagName] nerovná tagValue, aktivuje se efekt modify .

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

V této části operace addOrReplace používá stejný formát pro použití parametrizovaných hodnot značek k vytvoření nebo aktualizaci značky na požadovanou hodnotu v vyhodnocené skupině prostředků.

Ukázka 2: Zdědit hodnotu značky ze skupiny prostředků

Tato definice zásady používá parametr tagName k určení hodnoty značky, která se má zdědit z nadřazené skupiny prostředků.

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

Ukázka 2: Vysvětlení

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

V této ukázce je režim nastavený na Indexováno , protože necílí na skupinu prostředků ani předplatné, i když získá hodnotu ze skupiny prostředků. Další informace najdete v tématu režimy.

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

Objekt policyRule.if použije concat příklad Sample #1 k vyhodnocení hodnoty tagName, ale pomocí resourceGroup() funkce ji porovná s hodnotou stejné značky v nadřazené skupině prostředků. Druhá klauzule zkontroluje, že značka ve skupině prostředků má hodnotu a nemá hodnotu null.

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

Hodnota přiřazovaná ke značce tagName prostředku používá resourceGroup() funkci také k získání hodnoty z nadřazené skupiny prostředků. Tímto způsobem můžete dědit značky z nadřazených skupin prostředků. Pokud jste už prostředek vytvořili, ale nepřidali jste značku, může tato definice zásady a úloha nápravy aktualizovat existující prostředky.

Další kroky