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ör tagghantering kan taggar vara 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. Information om huruvida din Azure-resurs stöder taggning finns i Taggstöd.
Azure Policy effekten Ändra är utformad för att underlätta styrningen av taggar oavsett vilket steg i resursstyrningen du befinner dig i. Ändra hjälper dig när:
- Du är nybörjare på molnet och har ingen taggstyrning
- Har redan tusentals resurser utan taggstyrning
- Har redan en befintlig taxonomi som du behöver ändras
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 skapar du 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 scenariosjälvstudien är följande 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 bestämmer miljön efter containernamnsschema och kanske inte åsidosättas
- Alla resurser i en container ingår i samma miljö
Konfigurera CostCenter-taggen
När det gäller en Azure-miljö som hanteras av Azure Policy anropar CostCenter-taggkraven 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 effekten Neka förhindrar att resursgrupper som inte har CostCenter-taggen skapas eller uppdateras:
"if": {
"allOf": [{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags['CostCenter']",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
Anteckning
Eftersom den här principregeln riktar sig mot en resursgrupp måste läget för principdefinitionen vara "Alla" i stället för "Indexerat".
Ändra resurser så att de ärver 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 ensam. 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 tilläggsåtgärden i stället för addOrReplace eftersom vi inte vill ändra taggvärdet om det finns när du åtgärdar befintliga resurser. Den använder [resourcegroup()]
också mallfunktionen för att hämta taggvärdet från den överordnade resursgruppen.
Anteckning
Eftersom den här principregeln är avsedd för resurser som stöder taggar måste läget för principdefinitionen vara Indexerat. Den här konfigurationen säkerställer också att den här principen hoppar över resursgrupper.
Konfigurera env-taggen
När det gäller en Azure-miljö som hanteras av Azure Policy anropar Krav på env-tagg följande resultat:
- Ändra taggen Env för resursgruppen baserat på namnschemat för resursgruppen
- Ändra taggen Env för alla resurser i resursgruppen till samma som den överordnade resursgruppen
Ändra resursgrupper Env-tagg baserat på namn
En Ändra-princip krävs för varje miljö som finns i din Azure-miljö. Ändra principen för var och en ser ut ungefär så här:
"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 riktar sig mot en resursgrupp måste läget för principdefinitionen vara "Alla" i stället för "Indexerat".
Den här principen matchar endast resursgrupper med exempelnamnschemat som används för produktionsresurserna prd-
i . Mer komplexa namngivningsscheman kan uppnås med flera matchningsvillkor i stället för enstaka som i det här exemplet.
Ändra resurser så att de ärver taggen Env
Affärskravet kräver att alla resurser har taggen Env som den överordnade resursgruppen har. Den här taggen kan inte åsidosättas, så vi använder åtgärden addOrReplace med effekten Ändra . Exempelprincipen Modify (Ä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 är avsedd för resurser som stöder taggar måste läget för principdefinitionen vara Indexerat. Den här konfigurationen säkerställer också att den här principen hoppar över resursgrupper.
Den här principregeln söker efter alla resurser som inte har värdet för överordnade resursgrupper för taggen Env eller som saknar taggen Env . Matchande resurser har en Env-tagg 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 ansluter du dem till ett enda initiativ för taggstyrning och tilldelar dem till en hanteringsgrupp eller prenumeration. Initiativet och inkluderade principer utvärderar sedan kompatibiliteten för befintliga resurser och ändrar begäranden för nya eller uppdaterade resurser som matchar egenskapen if i principregeln. Principen uppdaterar dock inte automatiskt befintliga icke-kompatibla resurser med de definierade taggändringarna.
Precis som deployIfNotExists-principer använder Modify-principen reparationsuppgifter för att ändra befintliga icke-kompatibla resurser. Följ anvisningarna i Så här åtgärdar du resurser för att identifiera dina 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:
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för