Unternehmen benötigt eine eigene Regel? Benutzerdefinierte Policy-Definition erstellen
CloudTrips verlangt nun, dass jede tagfähige Ressource mindestens einen Tag besitzt. Tag-Name und Tag-Wert dürfen sich jedoch zwischen Teams unterscheiden. Erstelle für diese unternehmensspezifische Regel eine benutzerdefinierte Azure Policy-Definition.
Verwende:
Definition location: Azure subscription 1
Name: CloudTrips - Require at least one tag
Description: Deny taggable resources that do not contain any tags
Category: Tags
Mode: Indexed
Effect: Deny
Warum eine benutzerdefinierte Definition erforderlich ist
Die integrierte Definition Require a tag on resources prüft einen konfigurierten Tag-Namen, zum Beispiel Department. Sie bedeutet nicht „beliebiger Tag“. CloudTrips benötigt eine andere Regel: Eine Ressource ist zulässig, wenn ihr tags-Objekt mindestens einen Eintrag enthält, unabhängig von Tag-Name oder Tag-Wert.
Verwende für diese Tag-Regel den Modus Indexed. Er wertet Ressourcentypen aus, die Tags und Standorte unterstützen, und verhindert, dass nicht tagfähige untergeordnete Ressourcen als nicht konform gemeldet werden.
Der Effekt Deny blockiert nicht konforme Erstellungs- und Aktualisierungsanforderungen. Vorhandene Ressourcen ohne Tags werden als nicht konform gemeldet, aber weder gelöscht noch verändert.
Policy-Definitionen öffnen
Öffne im Azure-Portal:
Policy
> Authoring
> Definitions
Wähle Policy definition.

Definition konfigurieren
Gib ein:
Definition location: Azure subscription 1
Name: CloudTrips - Require at least one tag
Description: Deny taggable resources that do not contain any tags
Category: Tags
Der Definitionsspeicherort bestimmt, wo die benutzerdefinierte Definition zugewiesen werden kann. Eine Definition auf Abonnementebene kann Ressourcen in Azure subscription 1 steuern. Verwende einen Verwaltungsgruppen-Speicherort, wenn dieselbe Regel für mehrere untergeordnete Abonnements verfügbar sein muss.

Richtlinienregel hinzufügen
Ersetze das Beispiel im Richtlinieneditor durch:
{
"mode": "Indexed",
"policyRule": {
"if": {
"value": "[less(length(field('tags')), 1)]",
"equals": true
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}
Der Ausdruck liest das tags-Objekt der Ressource, zählt dessen Einträge und gibt true zurück, wenn die Anzahl kleiner als eins ist. Azure wendet anschließend deny an.
Diese Definition besitzt keine Parameter, da die Regel jeden Tag-Namen und jeden Tag-Wert akzeptiert.

Definition erstellen und überprüfen
Wähle Save. Kehre zu Policy > Definitions zurück, filtere Type nach Custom und suche nach:
CloudTrips - Require at least one tag
Öffne die Definition und bestätige:
Policy type: Custom
Mode: Indexed
Category: Tags
Effect: Deny
Parameters: None

Das Erstellen einer Definition erzwingt noch nichts. Die Definition muss direkt zugewiesen oder einer Initiative hinzugefügt und diese zugewiesen werden, bevor sie Ressourcen auswertet.
Benutzerdefinierte Richtlinie für den Test zuweisen
Öffne die Definition, wähle Assign und konfiguriere:
Scope: Azure subscription 1
Exclusions: None
Policy definition: CloudTrips - Require at least one tag
Assignment name: CloudTrips - Require at least one tag
Policy enforcement: Enabled
Parameter, verwaltete Identität und Remediation Task sind nicht erforderlich. Füge diese Non-compliance message hinzu:
CloudTrips resources must contain at least one tag.
Wähle Review + create und anschließend Create.
Benutzerdefinierte Regel testen
Entferne für diesen isolierten Labortest die anderen Richtlinienzuweisungen aus den vorherigen Trips und behalte ausschließlich:
CloudTrips - Require at least one tag
Führe dies nur im Trainingsabonnement durch. Das Entfernen von Zuweisungen in einer verwalteten Umgebung kann eine Governance-Lücke verursachen.
Öffne Storage accounts > stcloudtripsdev01 > Tags. Lege Department als einzigen Tag des Speicherkontos fest:
Department: Engineering
Entferne Department, nachdem die benutzerdefinierte Zuweisung wirksam geworden ist, und wähle Apply. Azure sollte die Aktualisierung verweigern, da durch das Entfernen des letzten Tags eine Ressource ohne Tags entstehen würde.

Die benutzerdefinierte Richtlinie verweigert die Aktualisierung nicht, weil der Tag Department heißt, sondern weil Department der letzte vorhandene Tag war. Ersetze ihn zum Nachweis in einer einzelnen Aktualisierung durch einen anders benannten Tag:
Owner: CloudOps
Entferne Department, füge Owner: CloudOps hinzu und wähle Apply. Die Aktualisierung sollte erfolgreich sein, da der vorgesehene Zustand des Speicherkontos weiterhin einen Tag enthält.
Die unternehmensspezifische Regel ist nun zugewiesen und überprüft: Tagfähige Ressourcen müssen mindestens einen Tag enthalten, ein bestimmter Tag-Name oder Tag-Wert ist jedoch nicht erforderlich.
