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
- Projděte si další vzory a předdefinované definice.
- Projděte si strukturu definic Azure Policy.
- Projděte si Vysvětlení efektů zásad.