Självstudie: Hantera taggstyrning med Azure Policy
Taggar är en viktig del av att organisera dina Azure-resurser i en taxonomi. När du följer metodtipsen förtagghantering kan taggar utgöra grunden för att tillämpa dina affärsprinciper med Azure Policy eller spåra kostnader med Cost Management. Oavsett hur eller varför du använder taggar är det viktigt att du snabbt kan lägga till, ändra och ta bort taggarna på dina Azure-resurser. Om du vill se om din Azure-resurs stöder taggning kan du gå till Taggstöd.
Azure Policy effekten Ändra är utformad för att underlätta styrningen av taggar oavsett i vilket steg i resursstyrningen du befinner dig. Ändra hjälper när:
- Du är nybörjare på molnet och har ingen taggstyrning
- Det finns redan tusentals resurser utan taggstyrning
- Du har redan en befintlig taxonomi som du behöver ändra
I den här självstudien utför du följande uppgifter:
- Identifiera dina affärskrav
- Mappa varje krav till en principdefinition
- Gruppera taggprinciperna i ett initiativ
Förutsättningar
Du behöver en Azure-prenumeration för att kunna utföra stegen i den här självstudiekursen. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
Identifiera krav
Precis som alla bra implementeringar av styrningskontroller bör kraven komma från dina affärsbehov och vara väl förstådda innan du skapar tekniska kontroller. I den här självstudien om scenariot är följande våra affärskrav:
- Två obligatoriska taggar för alla resurser: CostCenter och Env
- CostCenter måste finnas på alla containrar och enskilda resurser
- Resurser ärver från containern de finns i, men kan åsidosättas individuellt
- Env måste finnas på alla containrar och enskilda resurser
- Resurser avgör miljön genom namngivningsschemat för containrar och kan inte åsidosättas
- Alla resurser i en container ingår i samma miljö
Konfigurera CostCenter-taggen
I termer som är specifika för en Azure-Azure Policy kräver taggkraven i CostCenter följande resultat:
- Neka resursgrupper som saknar CostCenter-taggen
- Ändra resurser för att lägga till CostCenter-taggen från den överordnade resursgruppen när den saknas
Neka resursgrupper som saknar CostCenter-taggen
Eftersom CostCenter för en resursgrupp inte kan fastställas av namnet på resursgruppen måste den ha taggen definierad för begäran för att skapa resursgruppen. Följande principregel med neka-effekten förhindrar skapande eller uppdatering av resursgrupper som inte har CostCenter-taggen:
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags['CostCenter']",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
Anteckning
Eftersom den här principregeln är inriktad på en resursgrupp måste läget för principdefinitionen vara "Alla" i stället för "Indexerad".
Ändra resurser för att ärva CostCenter-taggen när den saknas
Det andra CostCenter-behovet är att alla resurser ärver taggen från den överordnade resursgruppen när den saknas. Om taggen redan har definierats för resursen, även om den skiljer sig från den överordnade resursgruppen, måste den lämnas i sig. Följande principregel använder Ändra:
"policyRule": {
"if": {
"field": "tags['CostCenter']",
"exists": "false"
},
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [{
"operation": "add",
"field": "tags['CostCenter']",
"value": "[resourcegroup().tags['CostCenter']]"
}]
}
}
}
Den här principregeln använder add-åtgärden i stället för addOrReplace eftersom vi inte vill ändra taggvärdet om det finns vid åtgärd av befintliga resurser. Den använder också [resourcegroup()] mallfunktionen för att hämta taggvärdet från den överordnade resursgruppen.
Anteckning
Eftersom den här principregeln riktar in sig på resurser som stöder taggar måste läget för principdefinitionen vara "Indexerad". Den här konfigurationen säkerställer också att den här principen hoppar över resursgrupper.
Konfigurera env-taggen
I termer som är specifika för en Azure-Azure Policy kräver Taggenv följande resultat:
- Ändra taggen Env i resursgruppen baserat på resursgruppens namngivningsschema
- Ändra taggen Env för alla resurser i resursgruppen till samma som den överordnade resursgruppen
Ändra resursgruppers Env-tagg baserat på namn
En ändra princip krävs för varje miljö som finns i din Azure-miljö. Principen Ändra för var och en ser ut ungefär som den här principdefinitionen:
"policyRule": {
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "name",
"like": "prd-*"
},
{
"field": "tags['Env']",
"notEquals": "Production"
}
]
},
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [{
"operation": "addOrReplace",
"field": "tags['Env']",
"value": "Production"
}]
}
}
}
Anteckning
Eftersom den här principregeln är inriktad på en resursgrupp måste läget för principdefinitionen vara "Alla" i stället för "Indexerad".
Den här principen matchar endast resursgrupper med exempelnamnschemat som används för produktionsresurser för prd- . Mer komplexa namngivningsscheman kan uppnås med flera matchningsvillkor i stället för samma som i det här exemplet.
Ändra resurser för att ärva taggen Env
Affärsbehovet kräver att alla resurser har taggen Env som deras överordnade resursgrupp gör. Den här taggen kan inte åsidosättas, så vi använder åtgärden addOrReplace med effekten Ändra. Exempelprincipen Ändra ser ut som följande regel:
"policyRule": {
"if": {
"anyOf": [{
"field": "tags['Env']",
"notEquals": "[resourcegroup().tags['Env']]"
},
{
"field": "tags['Env']",
"exists": false
}
]
},
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [{
"operation": "addOrReplace",
"field": "tags['Env']",
"value": "[resourcegroup().tags['Env']]"
}]
}
}
}
Anteckning
Eftersom den här principregeln riktar in sig på resurser som stöder taggar måste läget för principdefinitionen vara "Indexerad". Den här konfigurationen säkerställer också att den här principen hoppar över resursgrupper.
Den här principregeln söker efter resurser som inte har sitt överordnade resursgruppsvärde för taggen Env eller som saknar taggen Env. Matchande resurser har taggen Env inställd på värdet för överordnade resursgrupper, även om taggen redan fanns på resursen men med ett annat värde.
Tilldela initiativet och åtgärda resurser
När taggprinciperna ovan har skapats kan du koppla dem till ett enda initiativ för taggstyrning och tilldela dem till en hanteringsgrupp eller prenumeration. Initiativet och inkluderade principer utvärderar sedan efterlevnaden av befintliga resurser och ändrar begäranden för nya eller uppdaterade resurser som matchar if-egenskapen i principregeln. Principen uppdaterar dock inte automatiskt befintliga icke-kompatibla resurser med de definierade taggändringarna.
Precis som deployIfNotExists-principer använder principen Ändra reparationsuppgifter för att ändra befintliga icke-kompatibla resurser. Följ anvisningarna i Så här åtgärdar du resurser för att identifiera icke-kompatibla ändra resurser och korrigera taggarna till din definierade taxonomi.
Rensa resurser
Om du är klar med att arbeta med resurser i den här självstudien kan du använda följande steg för att ta bort tilldelningar eller definitioner som skapades ovan:
Välj Definitioner (eller Tilldelningar om du ska ta bort en tilldelning) under Redigering till vänster på sidan Azure Policy.
Sök efter den nya initiativ- eller principdefinition (eller tilldelning) som du vill ta bort.
Högerklicka på raden eller välj ellipserna i slutet av definitionen (eller tilldelningen) och välj Ta bort definition (eller Ta bort tilldelning).
Genomgång
I den här självstudien har du lärt dig om följande uppgifter:
- Identifierade dina affärskrav
- Mappade varje krav till en principdefinition
- Grupperade taggprinciperna i ett initiativ
Nästa steg
Mer information om principdefinitionernas strukturer finns i den här artikeln: