Mit Azure Policy können Anwender etwa dafür sorgen, dass virtuelle Maschinen oder beliebige andere Azure-Ressourcen nur in Deutschland erstellt werden, um damit etwaigen gesetzlichen Anforderungen gerecht zu werden. Neben dem Ort des Rechenzentrums lassen sich auch diverse Eigenschaften 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.
Was ist Azure Policy?
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.
Microsoft unterscheidet dabei zwischen Einzeldefinitionen und so genannten Initiativen. Letztere bündeln viele, mitunter hunderte von einzelnen Regeln zu einem komplexen Richtlinienkatalog.
Folgende Abbildung zeigt die Initiative ISO 27001:2013. Ich habe die Liste nach Auswirkungstyp (Effect) sortiert. Davon gibt es zum Beispiel Audit, AuditIfNotExits, DeployIfNotExists oder Modifiy.
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 Richtliniendefinition an einen Gültigkeitsbereich 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 Verweigerungsrichtlinie 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ültigkeitsbereich 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 Verwaltungsgruppe (Management Group). Außerdem können Sie die Gültigkeit auch auf einzelne Ressourcengruppen 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 Ressourcengruppe adressieren, dann wählen Sie diese im Feld Ressourcengruppe aus.
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 Richtliniendefinitionen 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“.
Wirksam wird eine Policy erst durch das Zuweisen. Vergeben Sie daher nun einen Zuweisungsnamen. Das Azure-Portal leitet diesen standardmäßig aus der Definition ab. Außerdem können Sie einen beliebigen Beschreibungstext hinterlegen.
Setzen Sie die Richtlinienerzwingung 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 Unternehmen 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.