Dela via


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:

  1. Välj Definitioner (eller Tilldelningar om du ska ta bort en tilldelning) under Redigering till vänster på sidan Azure Policy.

  2. Sök efter den nya initiativ- eller principdefinition (eller tilldelning) som du vill ta bort.

  3. 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: