Mit Azure Policy können Anwender etwa dafür sorgen, dass virtu­elle Maschinen oder beliebige andere Azure-Res­sourcen nur in Deutsch­land erstellt werden, um damit etwaigen gesetzlichen Anfor­derungen gerecht zu werden. Neben dem Ort des Rechen­zentrums lassen sich auch diverse Eigen­schaften der VMs steuern.

Egal was auch immer Sie in Azure tun, etwa über das Portal, die Azure-CLI oder via ARM-Template mit einem Infrastructure-as-Code-Ansatz, für die eigentliche technische Umsetzung ist immer der Azure Ressource Manager (ARM) verantwortlich. Er spricht letztendlich mit dem Resource-Provider des eigentlichen Azure-Dienstes. Dabei muss jeder Aufruf auch durch die Azure Policy-Engine.

Azures Devops-Ansatz aus einem Zusammenspiel von ARM, RBAC und Azure Policy.
Azures Devops-Ansatz aus einem Zusammenspiel von ARM, RBAC und Azure Policy.

Was ist Azure Policy?

Die Azure Policy-Engine regelt, ob eine Änderung, die durch den Azure Resource Manager erfolgen soll, überhaupt erlaubt ist, oder falls nicht, ob etwaige Ressource in Echtzeit angepasst werden können.

Mit Hilfe von Azure-Policy lassen sich viele Dinge in Azure steuern. Wechselt man im Blade Richtlinie (bei deutscher Lokalisierung) des Azure-Portals nach Einstellungen => Definitionen, dann erkennt man, dass Azure bereits hunderte von solchen Definitionen mitliefert. Diese sind übrigens auch auf dem Github-Repository von Microsoft Azure zu finden.

In Azure bereits enthaltene Policy-Definitionen
In Azure bereits enthaltene Policy-Definitionen.

Microsoft unterscheidet dabei zwischen Einzel­definitionen und so genannten Initiativen. Letztere bündeln viele, mitunter hunderte von einzelnen Regeln zu einem komplexen Richtlinien­katalog.

Folgende Abbildung zeigt die Initiative ISO 27001:2013. Ich habe die Liste nach Auswirkungstyp (Effect) sortiert. Davon gibt es zum Beispiel AuditAuditIfNotExitsDeployIfNotExists oder Modifiy.

Eingebaute Richtlinien, sortiert nach Auswirkung
Eingebaute Richtlinien, sortiert nach Auswirkung.

Azure-Richtlinien werden genau wie Azure RBAC-Rollen in JSON-Dokumente verpackt. Folgendes Beispiel zeigt eine Policy, die überprüft bzw. durchsetzt, dass jegliche Azure-Ressourcen nur in der angegebenen Region erstellt werden dürfen.

Definiert wird dies im Array allowedLocations. Hier können Sie beim späteren Zuweisen der Richtlinien­definition an einen Gültigkeits­bereich der Azure-Ressource-Hierarchie (Scope), wie zum Beispiel einem Azure-Abonnement, auch Parameter angeben.

Zusätzlich zum fest verdrahteten „defaultValue“ (germanywestcentral) könnte das etwa noch „westeurope“ sein. 

{
„properties“: {

„displayName“: „Erlaubte locations für alle Azure-Ressourcen“,
„description“: „This policy enables you to restrict the locations your organization can specify when deploying resources.“,
„mode“: „Indexed“,
„metadata“: {
„version“: „1.0.0“,
„category“: „Locations“
},
„parameters“: {
„allowedLocations“: {
„type“: „array“,
„metadata“: {
„description“: „The list of locations that can be specified when deploying resources“,
„strongType“: „location“,
„displayName“: „Allowed locations“
},
„defaultValue“: [ „germanywestcentral“ ]
}
},
„policyRule“: {
„if“: {
„not“: {
„field“: „location“,
„in“: „[parameters(‚allowedLocations‘)]“
}
},
„then“: {
„effect“: „deny“
} } } }

Diese Regel verhindert, dass eine irgendeine Azure-Ressource gebucht wird, wenn der Nutzer sie nicht in der angegebenen Region erstellt. Im If-Zweig der Policy-Rule wird dazu geprüft, ob sich der beim Erstellen angegebene Wert für location im Parameter-Array befindet, das in der Richtlinie definiert wurde.

Dass es sich um einer Verweigerungs­richtlinie handelt, ist im then-Zweig an der Auswirkung „effect“:“deny“ zu erkennen.

Beispiel: VMs nur in Deutschland starten

Möchten Sie durchsetzen, dass VMs nur in Deutschland gestartet werden dürfen, müssen Sie sich zunächst über den Gültigkeits­bereich im Klaren sein. Haben Sie mehrere Azure-Abonnements in Ihrem Mandanten, dann können Sie eine entsprechende Policy-Zuweisung für jede Subscription einzeln vornehmen.

Alternativ bündeln vorher mehrere Subscriptions mit Hilfe einer Verwaltungs­gruppe (Management Group). Außerdem können Sie die Gültigkeit auch auf einzelne Ressourcen­gruppen beschränken.

Starten Sie dazu im Portal für den Dienst Richtlinien unter Einstellung => Zuweisungen mit einem Klick auf Richtlinie zuweisen. Bei Bereich können Sie dann das gewünschte Abonnement auswählen.

Möchten Sie innerhalb der Subscription nur eine bestimmte Ressourcen­gruppe adressieren, dann wählen Sie diese im Feld Ressourcen­gruppe aus.

Gültigkeitsbereich (Scope) für eine Policy auswählen
Gültigkeitsbereich (Scope) für eine Policy auswählen.

Sie können den Scope außerdem noch präziser eingrenzen, indem Sie im Feld Ausschlüsse Elemente der Azure-Ressource-Hierarchie auswählen, die nicht betroffen sein sollen.

Danach wählen Sie bei Richtlinien­definitionen ebenfalls aus der Liste der Builtin-Definitionen die passenden aus. Hierbei können Sie auch über Volltext filtern. Suchen im deutsch lokalisierten Azure-Portal nach „Zulässige Standorte“.

Eine passende Definition für Azure Policy auswählen
Eine passende Definition für Azure Policy auswählen.

Wirksam wird eine Policy erst durch das Zuweisen. Vergeben Sie daher nun einen Zuweisungsnamen. Das Azure-Portal leitet diesen standard­mäßig aus der Definition ab. Außerdem können Sie einen beliebigen Beschreibungs­text hinterlegen.

Namen für die Zuweisung vergeben
Namen für die Zuweisung vergeben.

Setzen Sie die Richtlinien­erzwingung mit dem Schiebeschalter auf Aktiviert (Default), wenn Sie die Richtlinie sofort beim Erstellen scharf schalten möchten. Mit Deaktiviert erhalten Sie dagegen nur ein Monitoring im Compliance-Dashboard von Azure Policy. Das bietet sich für eine Übergangszeit an, bevor Sie das Feature im eigenen Unter­nehmen verpflichtend einführen.

Klicken Sie jetzt NICHT auf Überprüfen und erstellen, sondern auf Weiter, um zum Tab Parameter zu gelangen. Hier können Sie dann die gewünschten Werte für das obige Parameter-Array bequem auswählen, und wenn Sie möchten, auch mehrere.

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.