Ressourcen kannst du auf der Azure Plattform sehr einfach erstellen. Das ist grossartig, doch bietet auch ein paar gefahren. Beispielsweise kannst du nämlich Ressourcen oder ganze Umgebungen genau so einfach löschen. Was für Tests und Demos sehr hilfreich ist, kann bei Integrations- und Produktions- Umgebungen sehr gefährlich sein. Damit du dies nicht manuell zu verwalten brauchst, habe ich einen Azure Policy Code geschrieben. Dieser definiert das automatische Prüfen und Bereitstellen von Azure Resource Locks mit Azure Policies.
Falls du zuerst noch mehr über Azure Resource Lock und dessen Nutzen erfahren möchtest, empfehle ich dir das folgende Kurzvideo von mir (Ton an).
Schritt-für-Schritt – Automatisierung per Azure Policies
Da ich den Code auf meinem öffentlichen GitHub Repository bereits fertig zur Verfügung stelle, ist eine Automatisierung erdenklich einfach. Als erstes öffnest du als GitHub mit folgendem Link.
Wähle den Button «Deploy to Azure» und logge dich im Azure Portal mit dem gewünschten Account ein.

Ein Formular erscheint, in welchem du nur noch das gewünschte Abonnement aussuchen musst, auf welchem du die Policy Definition abspeichern möchtest. Die anderen Felder sind alle bereits mit einem Standardwert gespiesen. Unter anderem erstellst du auch eine neue Policy Kategorie namens «Governance», in welcher du die Definition dann platzierst. Falls du lieber einen anderen Namen oder eine bereits bestehende Kategorie verwenden willst, kannst du das einfach anpassen. Du kannst also alle Standardwerte ganz nach deinem Gusto verändern. Das Feld «Role Definition» muss allerdings mit «Owner» beibehalten werden. Klicke dann auf «Save».
Du hast die Policy erfolgreich erstellt und findest sie bei «Policy» unter «Definitions». Damit du sie schnell finden kannst, wähle bei «Type» einfach den Filter «Custom».

Klick die Policy an und wähle «Assign», um die erstellte Policy auch anzuwenden. Ein Formular erscheint wiederrum, welches du mit den Standardwerten bestehen lassen sollst. Wenn gewünscht, so kannst du allerdings eine Beschreibung hinzufügen. Wähle dann «Next», um zu den Parametern zu gelangen. Hier brauchst du eine Entscheidung zu treffen. Die Policy verhält sich nämlich so, dass sie per Standard auf allen Ressourcengruppen einen Lock erstellt. Ausgenommen sind nur Ressourcengruppen, die über einen gewissen «Tag-Value» verfügen. Du brauchst also hier zu definieren, in welchem Tag du für den Ausschluss nach welchem Wert suchen möchtest. Die Felder beinhalten bereits einen Standardwert als Vorschlag von mir, welchen du gerne übernehmen kannst.

- Ich arbeite absichtlich mit dem Ausschlussverfahren, um die Sicherheit zu erhöhen. Wäre es nämlich umgekehrt und das Setzen des Tags ginge bei einem Deployment vergessen, so wäre die Ressourcengruppe und die darin enthaltenen Ressourcen nicht geschützt.
- Stelle sicher, dass du bei den auszuschliessenden Ressourcengruppen das Tag zum Ausschluss bereits gesetzt hast, bevor du weiterfährst. Andernfalls brauchst du den Lock bei diesen wieder manuell zu entfernen.
Hast du dich für ein Tag und dessen Wert entschiede, wähle «Next», um weiterzufahren.
Jetzt gilt es einen «remediation task» zu erstellen. Dieser Task stellt sicher, dass die bestehenden Ressourcengruppen nicht nur geprüft werden, sondern auch automatisch ein Lock erstellt wird. Das ist daher mehr oder weniger der Kernpunkt des Ganzen. Für den «remediation task» erstellt Azure eine «managed identity», welche als «Owner» dann den Lock für dich jeweils automatisch erstellen kann. Setze also den Haken bei «Create a remediation task» und wähle dann die gewünschte Azure Region aus, in welcher du die «managed identity» erstellen lassen möchtest.

Wähle nun «Review + create» um die Policy basierend auf der Definition zu erstellen und zuzuweisen. Nun brauchst du etwas Geduld, bis die Policy die erste Prüfung durchgeführt und die notwendigen Locks automatisch erstellt hat. Den Status kannst du jeweils unter «Overview» der Policies abrufen.
Validieren – Automatisches Prüfen und Bereitstellen von Azure Resource Locks
Nach einer Weile sollte die erste Prüfung der Ressourcengruppen durch sein und diese durch den «remediation task» geschützt. Prüfe nun in den Eigenschaften der Ressourcengruppe, ob du den neuen Lock da wo gewünscht vorfinden kannst und die per Tag gefilterten Ressourcengruppen vom «remediation task» unberührt blieben.
Erwartetes Ergebnis der Ressourcengruppen (RGs):
- Bei bestehenden RGs OHNE Tag wurde ein Lock erstellt.
- Bestehende RGs MIT Tag wurden gefiltert und es wurde daher KEIN Lock erstellt.
- Neu erstellte RGs werden bei der Erstellung direkt von der Policy geprüft und
- …werden OHNE Tag ebenfalls mit einem Lock versehen.
- …werden MIT Tag gefiltert und es wird daher kein Lock erstellt.

Gratuliere! Du hast das Prüfen und Bereitstellen von Azure Resource Locks mit Azure Policies erfolgreich automatisiert!
Thank you sir…
You are more than welcome!