Unternehmen benötigt eine eigene Regel? Benutzerdefinierte Policy-Definition erstellen

Veröffentlicht am:

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.

Azure-Policy-Seite Definitions mit ausgewählter Option 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.

Eigenschaften der benutzerdefinierten Policy-Definition für Azure subscription 1

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.

Policy-Rule-Editor mit Indexed-Deny-Regel für Ressourcen ohne Tags

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

Gespeicherte benutzerdefinierte CloudTrips-Policy-Definition in Azure Policy

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.

Speicherkonto-Aktualisierung nach dem Versuch verweigert, den letzten Department-Tag zu entfernen

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.

Speicherkonto mit Owner statt Department gespeichert und weiterhin konform