Samouczek: zarządzanie ładem tagów za pomocą Azure Policy

Tagi są kluczową częścią organizowania zasobów platformy Azure w taksonomię. Stosując najlepsze rozwiązania dotyczące zarządzania tagami, tagi mogą być podstawą do stosowania zasad biznesowych za pomocą Azure Policy lub śledzenia kosztów za pomocą usługi Cost Management. Niezależnie od tego, jak i dlaczego używasz tagów, ważne jest, aby szybko dodawać, zmieniać i usuwać te tagi w zasobach platformy Azure. Aby sprawdzić, czy zasób platformy Azure obsługuje tagowanie, zobacz Obsługa tagów.

Azure Policy efekt Modify ma na celu pomoc w zarządzaniu tagami niezależnie od etapu zarządzania zasobami. Modyfikowanie pomaga w przypadku:

  • Jesteś nowym użytkownikem chmury i nie masz ładu tagów
  • Już tysiące zasobów bez nadzoru tagów
  • Masz już istniejącą taksonomię, która została zmieniona

W tym samouczku wykonasz następujące zadania:

  • Określanie wymagań biznesowych
  • Mapuj każde wymaganie na definicję zasad
  • Grupowanie zasad tagów w inicjatywę

Wymagania wstępne

Do wykonania kroków tego samouczka potrzebna jest subskrypcja platformy Azure. Jeśli go nie masz, przed rozpoczęciem utwórz bezpłatne konto .

Określanie wymagań

Podobnie jak każda dobra implementacja mechanizmów kontroli ładu, wymagania powinny pochodzić z potrzeb biznesowych i być dobrze zrozumiałe przed utworzeniem kontroli technicznej. W tym samouczku scenariusza wymagania biznesowe są następujące:

  • Dwa wymagane tagi we wszystkich zasobach: CostCenter i Env
  • Centrum kosztów musi istnieć we wszystkich kontenerach i poszczególnych zasobach
    • Zasoby dziedziczą po kontenerze, w których się znajduje, ale mogą być pojedynczo zastępowane
  • Env musi istnieć we wszystkich kontenerach i poszczególnych zasobach
    • Zasoby określają środowisko według schematu nazewnictwa kontenerów i mogą nie zostać zastąpione
    • Wszystkie zasoby w kontenerze są częścią tego samego środowiska

Konfigurowanie tagu CostCenter

Jeśli chodzi o środowisko platformy Azure zarządzane przez Azure Policy, wymagania dotyczące tagów CostCenter wymagają następujących wyników:

  • Odmów grup zasobów brak tagu CostCenter
  • Modyfikowanie zasobów w celu dodania tagu CostCenter z nadrzędnej grupy zasobów w przypadku braku

Odmów grup zasobów brak tagu CostCenter

Ponieważ centrum kosztów dla grupy zasobów nie może być określane przez nazwę grupy zasobów, musi mieć tag zdefiniowany na żądaniu utworzenia grupy zasobów. Następująca reguła zasad z efektem Odmów uniemożliwia tworzenie lub aktualizowanie grup zasobów, które nie mają tagu CostCenter :

"if": {
    "allOf": [{
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        },
        {
            "field": "tags['CostCenter']",
            "exists": false
        }
    ]
},
"then": {
    "effect": "deny"
}

Uwaga

Ponieważ ta reguła zasad jest przeznaczona dla grupy zasobów, tryb definicji zasad musi mieć wartość "Wszystkie" zamiast "Indeksowane".

Modyfikowanie zasobów w celu dziedziczenia tagu CostCenter w przypadku braku

Druga potrzeba narzędzia CostCenter polega na tym, aby wszystkie zasoby dziedziczyły tag z nadrzędnej grupy zasobów, gdy jej brakuje. Jeśli tag jest już zdefiniowany w zasobie, nawet jeśli różni się od nadrzędnej grupy zasobów, musi być pozostawiony sam. Poniższa reguła zasad używa funkcji Modify:

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

Ta reguła zasad używa operacji dodawania zamiast addOrReplace , ponieważ nie chcemy zmieniać wartości tagu, jeśli jest obecna podczas korygowania istniejących zasobów. Używa również funkcji szablonu [resourcegroup()] , aby uzyskać wartość tagu z nadrzędnej grupy zasobów.

Uwaga

Ponieważ ta reguła zasad jest przeznaczona dla zasobów, które obsługują tagi, tryb definicji zasad musi mieć wartość "Indeksowane". Ta konfiguracja zapewnia również, że te zasady pomijają grupy zasobów.

Konfigurowanie tagu Env

Jeśli chodzi o środowisko platformy Azure zarządzane przez Azure Policy, wymagania dotyczące tagów Env wymagają następujących wyników:

  • Modyfikowanie tagu Env w grupie zasobów na podstawie schematu nazewnictwa grupy zasobów
  • Zmodyfikuj tag Env dla wszystkich zasobów w grupie zasobów tak samo jak nadrzędna grupa zasobów

Modyfikowanie tagów env grup zasobów na podstawie nazwy

Dla każdego środowiska, które istnieje w środowisku platformy Azure, wymagane jest zmodyfikowanie zasad. Modyfikowanie zasad dla każdego z nich wygląda podobnie do następującej definicji zasad:

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

Uwaga

Ponieważ ta reguła zasad jest przeznaczona dla grupy zasobów, tryb definicji zasad musi mieć wartość "Wszystkie" zamiast "Indeksowane".

Te zasady pasują tylko do grup zasobów z przykładowym schematem nazewnictwa używanym dla zasobów produkcyjnych programu prd-. Bardziej złożone schematy nazewnictwa można osiągnąć przy użyciu kilku warunków dopasowaniazamiast jednego w tym przykładzie.

Modyfikowanie zasobów w celu dziedziczenia tagu Env

Wymaganie biznesowe wymaga, aby wszystkie zasoby miały tag Env , który wykonuje ich nadrzędna grupa zasobów. Nie można zastąpić tego tagu, dlatego użyjemy operacji addOrReplace z efektem Modify . Przykładowe zasady Modyfikowanie wyglądają podobnie do następującej reguły:

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

Uwaga

Ponieważ ta reguła zasad jest przeznaczona dla zasobów, które obsługują tagi, tryb definicji zasad musi mieć wartość "Indeksowane". Ta konfiguracja zapewnia również, że te zasady pomijają grupy zasobów.

Ta reguła zasad szuka dowolnego zasobu, który nie ma wartości nadrzędnych grup zasobów dla tagu Env lub brakuje tagu Env . Pasujące zasoby mają ustawiony tag Env na wartość nadrzędnych grup zasobów, nawet jeśli tag już istniał w zasobie, ale z inną wartością.

Przypisywanie inicjatywy i korygowanie zasobów

Po utworzeniu powyższych zasad tagów dołącz je do jednej inicjatywy na potrzeby zarządzania tagami i przypisz je do grupy zarządzania lub subskrypcji. Inicjatywa i dołączone zasady następnie oceniają zgodność istniejących zasobów i zmieniają żądania dotyczące nowych lub zaktualizowanych zasobów, które są zgodne z właściwością if w regule zasad. Jednak zasady nie aktualizują automatycznie istniejących niezgodnych zasobów ze zmianami zdefiniowanego tagu.

Podobnie jak w przypadku zasad deployIfNotExists , zasady Modyfikuj używają zadań korygowania do zmiany istniejących niezgodnych zasobów. Postępuj zgodnie z instrukcjami dotyczącymi korygowania zasobów, aby zidentyfikować niezgodne zasoby Modyfikuj i poprawić tagi zdefiniowanej taksonomii.

Czyszczenie zasobów

Jeśli nie planujesz dalszej pracy z zasobami utworzonymi w tym samouczku, wykonaj poniższe kroki, aby usunąć wszystkie utworzone powyżej przypisania lub definicje:

  1. Wybierz pozycję Definicje (lub Przypisania, jeśli próbujesz usunąć przypisanie) w obszarze Tworzenie w lewej części strony usługi Azure Policy.

  2. Wyszukaj nowo utworzoną definicję inicjatywy lub zasad (albo przypisanie), którą chcesz usunąć.

  3. Kliknij prawym przyciskiem myszy wiersz albo wybierz wielokropek na końcu definicji lub przypisania, a następnie wybierz pozycję Usuń definicję (lub Usuń przypisanie).

Przegląd

W tym samouczku przedstawiono następujące zadania:

  • Określono wymagania biznesowe
  • Zamapuj każde wymaganie na definicję zasad
  • Pogrupowane zasady tagów w inicjatywę

Następne kroki

Aby dowiedzieć się więcej o strukturach definicji zasad, zapoznaj się z artykułem: