Bedingungen für Azure-Ressourcen mit Richtlinien in Azure Policy definieren


    Tags: ,

    Azure PolicyMit 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.

    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

    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 Audit, AuditIfNotExits, DeployIfNotExists oder Modifiy.

    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. 

    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

    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

    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

    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.

    Parameter für die Policy festlegen

    Nun haben Sie alle obliga­torischen Angaben beisammen und wenn Sie mögen, können Sie noch eine Nicht­konformitäts­meldung selbst formulieren.

    Einen Wiederherstellungs-Task (Tab Wiederherstellung) lässt sich in diesem Fall nicht erstellen, weil diese einfache Richtlinie nur eine deny-Auswirkung hat. Daher können Sie jetzt auf Überprüfen + erstellen klicken.

    Eine Wiederherstellungs-Task lässt sich für eine einfache deny-Richtlinie nicht erstellen

    Ob die Richtlinie den gewünschten Effekt hat, können Sie an zwei Stellen sehen. Erstellen Sie eine VM in einer nicht erlaubten Region, dann wird dies schon beim Konfigurieren der VM abgelehnt.

    Die Richtlinie verhindert das Erstellen eine VM außerhalb der definierten Region

    Für eine falsch platzierte VM ist spätestes Schluss beim Versuch, sie vom Ressource Manager anlegen zu lassen. Das sieht dann so aus wie in folgender Abbildung.

    Der Resource Manager kann die VM in einer ungültigen Region nicht anlegen

    Alle Azure-Ressourcen, die bei der Erstellung der Zuweisung bereits bestehen, also in unserem Beispiel nicht in Deutschland sind, werden dann im Compliance-Dashboard (Menü Übersicht) als nicht konform geführt.

    Nicht konforme Ressourcen im Compliance Dashboard

    Wenn Sie mit den Workflow grundlegend vertraut sind, können Sie mit weiteren einfachen Richtlinien­definitionen experi­mentieren wie etwa:

    • Zulässige SKUs für VM-Größen: Über diese Richtlinie können Sie VM-Größen vorgeben, die Ihre Organisation bereitstellen kann.
    • Azure Backup muss für Virtual Machines aktiviert sein: Stellen Sie den Schutz Ihrer Azure-VMs durch Aktivieren von Azure Backup sicher. Azure Backup ist eine sichere und kosten­günstige Datenschutzlösung für Azure.

    Oder:

    • Tag und zugehöriger Wert für Ressourcen erforderlich:  Erzwingt ein erforderliches Tag und dessen Wert. Gilt nicht für Ressourcen­gruppen.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Thomas Drilling

    Thomas Drilling arbeitet seit mehr als 20 Jahren selb­ständig als Redakteur und Autor für viele ehe­malige und aktuelle IT-Magazine sowie Blogs. Thomas ist zudem Buch­autor und IT-Consultant.

    Seit 5 Jahren ist Thomas neben seiner journa­listischen Tätig­keit haupt­beruflicher, selb­ständiger IT-Trainer für VMware und Microsoft.

    Seine Themen­schwer­punkte sind Virtua­lisierung und Cloud Com­puting, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zerti­fi­zierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausge­zeichnet.

    Thomas ist außerdem zertifi­zierter AWS Solu­tions Archi­tect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Admini­strator.

    Thomas führt aktuell jeden zwei­ten Mon­tag einen 4-tägigen Grund­lagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Infor­mationen und Anmel­dung über sein AWS-Blog.

    Ähnliche Beiträge

    Weitere Links