Automation Consulting. Unabhängig vom Frontend.

Azure Automation Accounts entstehen oft aus Bequemlichkeit. Jemand braucht einen geplanten Script-Lauf. Ein Automation Account wird erstellt, ein Runbook angelegt, und es funktioniert. Sechs Monate später laufen 30 Produktiv-Runbooks mit breiten Berechtigungen, geteilten Credentials und ohne Audit Trail über diesen Account.
Wir haben Automation-Umgebungen auditiert, in denen ein einzelner Account Contributor-Zugriff auf die gesamte Subscription hatte. In denen Credentials als unverschlüsselte Variables gespeichert waren. In denen jeder im IT-Team Runbooks direkt im Portal bearbeiten konnte.
Nichts davon war Absicht. Es fing an mit „sichern wir später ab.“ Später kam nie.
Dieser Guide behandelt die Architektur-Entscheidungen, die eine Azure Automation Umgebung von Anfang an sicher machen. Keine theoretischen Best Practices. Konkrete Konfigurationen, die wir in Consulting-Projekten umsetzen.
Run As Accounts sind deprecated. Zertifikatsbasierte Service Principals sind komplex in der Pflege. Application Secrets laufen ab und die Rotation ist umständlich. Managed Identity beseitigt all diese Probleme.
Jeder Automation Account sollte eine System-assigned Managed Identity aktiviert haben. Ein einziger Schalter im Azure Portal. Einmal aktiviert, bekommt der Automation Account eine Identität in Entra ID, der RBAC-Rollen zugewiesen werden können.
In Runbooks wird die Authentifizierung zu einer einzigen Zeile:
Connect-AzAccount -Identity
Keine Zertifikate. Keine Secrets. Keine Rotation. Die Identität ist an den Lebenszyklus des Automation Accounts gebunden. Account löschen, Identität verschwindet.
Für Szenarien, in denen mehrere Automation Accounts identische Berechtigungen brauchen, oder die Identität unabhängig vom Account bestehen bleiben soll: User-assigned Managed Identity verwenden.
Identität einmal erstellen. RBAC-Rollen zuweisen. An mehrere Automation Accounts anhängen. Wenn ein Automation Account neu aufgebaut wird: Dieselbe Identität wieder anhängen, ohne Berechtigungen neu zu vergeben.
In Runbooks angeben, welche Identität genutzt werden soll:
Connect-AzAccount -Identity -AccountId "client-id-der-user-assigned-identity"
Manchmal reicht Managed Identity nicht. Cross-Tenant-Zugriff, Drittanbieter-APIs die OAuth Client Credentials erfordern, oder Legacy-Anwendungen die nur Zertifikats-Auth unterstützen. In diesen Fällen: Credentials in Azure Key Vault speichern und zur Laufzeit abrufen. Nie als Automation Variables. Nie im Runbook-Code.
→ Die häufigsten Fehler bei der Authentifizierung: Die 10 häufigsten Azure Automation Fehler
Der gefährlichste Automation Account ist einer mit Contributor-Zugriff auf die Subscription. Er kann Ressourcen erstellen, Konfigurationen ändern, ganze Resource Groups löschen. Wenn ein Runbook kompromittiert wird, ist der Blast Radius: alles.
Mit null Berechtigungen starten. Für jedes Runbook exakt dokumentieren, was es tun muss. Dann die minimale RBAC-Rolle im engsten Scope vergeben.
Beispiele:
VMs starten/stoppen: Virtual Machine Contributor, Scope auf die Resource Group mit den VMs
Log Analytics lesen: Log Analytics Reader, Scope auf den spezifischen Workspace
DNS Records verwalten: DNS Zone Contributor, Scope auf die spezifische DNS Zone
Entra ID User erstellen: User Administrator, Scope auf Directory-Ebene
E-Mail senden via Graph: Mail.Send, Scope auf spezifisches Postfach
Custom Roles funktionieren gut für Automation. Wenn ein Runbook VMs nur starten und stoppen soll (nicht löschen oder resizen): Eine Custom Role erstellen mit ausschließlich Microsoft.Compute/virtualMachines/start/action und Microsoft.Compute/virtualMachines/deallocate/action. Nichts weiter.
Berechtigungen vierteljährlich prüfen. Runbooks werden stillgelegt, aber ihre Berechtigungen bleiben bestehen. Wir haben Automation Accounts mit Rollen für Ressourcen gefunden, die es längst nicht mehr gibt.
Wer was mit dem Automation Account tun darf, ist genauso wichtig wie die Frage, was der Account mit anderen Ressourcen tun kann.
Azure stellt drei relevante Built-in Roles bereit:
Automation Operator: Kann Jobs starten und Runbooks ansehen, aber nicht bearbeiten. Perfekt für Operations-Teams, die Runbooks auslösen müssen, ohne Code zu ändern.
Automation Contributor: Kann Runbooks erstellen und bearbeiten, Schedules verwalten und den Account konfigurieren. Für das Automation-Entwicklungsteam.
Reader: Kann alles sehen, aber nichts ändern. Für Auditoren, Manager oder alle, die Einblick brauchen ohne Kontrolle.
Nicht jedem Contributor-Zugriff geben. In den meisten Organisationen brauchen 2-3 Personen Contributor. Alle anderen sollten Operator oder Reader sein.
Für sensible Runbooks (User Provisioning, Finanzdaten, Security Operations): Einen dedizierten Automation Account mit engerer RBAC in Betracht ziehen. Separation of Duties ist nicht nur für Compliance. Es begrenzt den Schaden, wenn jemand einen Fehler macht.
Azure Automation hat eingebaute Credential Assets und verschlüsselte Variables. Die funktionieren. Aber Key Vault ist besser.
Warum Key Vault statt Automation Credentials:
Implementierungsmuster:
# Mit Managed Identity verbinden
Connect-AzAccount -Identity
# Secrets aus Key Vault abrufen
$apiKey = Get-AzKeyVaultSecret -VaultName "automation-secrets" -Name "ServiceNow-APIKey" -AsPlainText
$dbPassword = Get-AzKeyVaultSecret -VaultName "automation-secrets" -Name "SQL-Password" -AsPlainText
# Secrets in der Runbook-Logik verwenden
$headers = @{ "Authorization" = "Bearer $apiKey" }
Der Managed Identity des Automation Accounts die Rolle „Key Vault Secrets User“ auf dem Key Vault zuweisen. Nicht „Key Vault Administrator“. Nicht „Key Vault Contributor“. Nur „Secrets User“ für Read-Only-Zugriff auf Secrets.
Hybrid Runbook Workers laufen im eigenen Netzwerk. Das macht sie mächtig und zu einem potenziellen Angriffsvektor.
Netzwerkisolation:
OS-Härtung:
Monitoring:
Für Umgebungen, in denen kein Traffic über das öffentliche Internet laufen soll, unterstützt Azure Automation Private Endpoints. Das bedeutet:
Setup erfordert eine Private DNS Zone (privatelink.azure-automation.net) und einen Private Endpoint im VNet. Das Azure Portal führt durch die Einrichtung, oder Terraform/Bicep für Wiederholbarkeit verwenden.
Private Endpoints fügen Komplexität hinzu. Nicht jede Umgebung braucht sie. Aber für regulierte Branchen (Finanzen, Gesundheitswesen, öffentlicher Sektor) oder Umgebungen mit sensiblen Daten sind sie die richtige Wahl.
Runbooks sind Code. Code gehört in die Quellcodeverwaltung. Punkt.
Azure Automation integriert sich nativ mit GitHub und Azure DevOps. Einmal verbunden, synchronisieren sich Runbooks automatisch aus dem Repository. Kein Bearbeiten mehr im Portal.
Vorteile über Versionshistorie hinaus:
Für Organisationen mit striktem Change Management: Dieser Workflow lässt sich direkt auf ITIL Change Prozesse abbilden. Der Pull Request ist der Change Request. Das Review ist die Genehmigung. Der Merge ist die Implementierung. Das Git Log ist der Audit Trail.
→ Häufige Fehler bei Source Control und Modulen: Azure Automation Fehler vermeiden
Eine sichere Umgebung ist eine überwachte Umgebung. Wenn ein Runbook um 3 Uhr nachts fehlschlägt und niemand es bis 9 Uhr bemerkt, sind das sechs Stunden potenzieller Auswirkung.
Azure Monitor Alerts konfigurieren für:
Automation Job Logs an einen Log Analytics Workspace senden. Das ermöglicht:
KQL-Beispielabfrage für Runbooks mit steigender Fehlerrate:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION"
| where Category == "JobLogs"
| where ResultType == "Failed"
| summarize FailureCount = count() by RunbookName_s, bin(TimeGenerated, 1d)
| order by TimeGenerated desc
Über operatives Monitoring hinaus auf sicherheitsrelevante Events achten:
Diese Events in Microsoft Sentinel oder das eigene SIEM einspeisen zur Korrelation mit breiteren Security Events.
Azure Automation verschlüsselt Credential Assets standardmäßig. Variables können optional verschlüsselt werden. Verschlüsselung immer aktivieren für Variables mit sensiblen Daten.
Aber die Einschränkung verstehen: Verschlüsselte Variables werden zur Laufzeit im Runbook entschlüsselt. Wenn das Runbook den Wert loggt (versehentlich oder absichtlich), hilft die Verschlüsselung nicht. Code Review und Output-Monitoring sind wichtig.
Jede Kommunikation zwischen Azure Automation und seinen Komponenten nutzt TLS 1.2+. Das umfasst:
Für Runbooks die externe APIs aufrufen, TLS-Konfiguration verifizieren:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Standard in PowerShell 7.x, muss aber in 5.1-Umgebungen möglicherweise explizit gesetzt werden.
Die vollständige sichere Architektur, die wir empfehlen:
┌─────────────────────────────────────────────────┐
│ Azure Subscription │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Automation Account│───▶│ Key Vault │ │
│ │ (Managed Identity)│ │ (Secrets, Keys) │ │
│ │ Source Control: │ └──────────────────┘ │
│ │ GitHub/DevOps │ │
│ └────────┬─────────┘ ┌──────────────────┐ │
│ │ │ Log Analytics │ │
│ │ │ (Job Logs, Diag) │ │
│ ▼ └──────────────────┘ │
│ ┌──────────────────┐ │
│ │ Hybrid Worker │ ┌──────────────────┐ │
│ │ (Dediziertes │───▶│ Azure Monitor │ │
│ │ Subnet, NSG, │ │ (Alerts) │ │
│ │ Keine Pub IP) │ └──────────────────┘ │
│ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────┘
Jede Komponente hat eine einzige Verantwortung. RBAC ist eng geschnitten. Secrets leben im Key Vault. Änderungen gehen durch Source Control. Fehler lösen Alerts aus. Jede Aktion wird geloggt.
Das ist kein Overengineering. Das ist die Baseline für jeden Automation Account, der Produktiv-Workloads betreibt.
System-assigned ist einfacher für Single-Account-Setups. Die Identität lebt und stirbt mit dem Automation Account. User-assigned ist besser, wenn mehrere Accounts dieselben Berechtigungen brauchen oder die Identität einen Account-Rebuild überleben soll. Die meisten Organisationen starten mit System-assigned und fügen User-assigned für spezifische Cross-Account-Szenarien hinzu.
Mit Source Control Integration ist jede Änderung ein Git Commit mit Autor, Zeitstempel und Diff. Ohne Source Control erfasst das Azure Activity Log, wer Automation Account Ressourcen geändert hat, allerdings mit weniger Detail. Source Control ist der zuverlässige Audit-Pfad.
Nicht nativ auf Ebene einzelner Runbooks. RBAC gilt für den Automation Account als Ganzes. Um die Ausführung bestimmter Runbooks einzuschränken: Separate Automation Accounts mit unterschiedlichen RBAC-Zuweisungen verwenden. Manche Organisationen erstellen einen „Sensitive Operations“ Account mit engem Zugriff und einen „General Operations“ Account mit breiterem Zugriff.
Private Endpoints selbst haben geringe Stundenkosten (ca. 7,30 EUR/Monat pro Endpoint). Der größere Aufwand ist DNS-Management-Komplexität und die Voraussetzung, dass Hybrid Workers die Private DNS Zone auflösen. Für regulierte Umgebungen sind diese Kosten trivial im Vergleich zum Compliance-Nutzen.
Mindestens vierteljährlich. In den regulären Access-Review-Zyklus einbinden. Prüfen: Braucht die Managed Identity noch alle ihre Rollen? Gibt es Rollen für Ressourcen, die nicht mehr existieren? Hat jemand Contributor-Zugriff bekommen, der Operator sein sollte?
Brauchen Sie Unterstützung bei der Absicherung Ihrer Azure Automation Umgebung? Wir konzipieren und implementieren sichere Automation-Architekturen für Unternehmen in ganz Europa. Von der initialen Bewertung bis zur vollständigen Umsetzung bringen wir Praxiserfahrung in jedes Projekt mit.