Azure Resource Manager (ARM) ist die zentrale Steuerungsebene (Control Plane) von Microsoft Azure. Jede Operation auf Azure-Ressourcen — Erstellen, Lesen, Aktualisieren, Löschen — läuft als REST-Aufruf gegen den ARM-Endpunkt management.azure.com, der die Anforderung autorisiert, an den jeweiligen Resource Provider weiterleitet und im Aktivitätsprotokoll nachvollziehbar protokolliert. ARM definiert die hierarchische Struktur aus Management Groups, Subscriptions, Resource Groups und einzelnen Ressourcen sowie das durchgängige Modell aus Resource Providern, API-Versionen, Locations und Tags.
Eingesetzt wird ARM implizit in jeder Interaktion mit Azure: Das Azure-Portal, das Azure CLI, die Azure-PowerShell-Module, die Azure-SDKs, Terraform mit dem AzureRM-Provider, Pulumi und Bicep gehen alle gegen denselben ARM-Endpunkt. Für deklarative Bereitstellung kommen ARM-Templates (JSON) oder Bicep zum Einsatz; beide werden vor dem Deployment zu derselben ARM-Template-Repräsentation kompiliert. Über Deployment-Scopes können Ressourcen auf Subscription-, Resource-Group- oder Management-Group-Ebene angelegt werden, mit Werkzeugen wie ‚what-if' und ‚deployment stacks' für Vorschau und Lifecycle-Management.
Der Einsatzzweck und das gelöste Problem ergeben sich aus der Vorgängerarchitektur ‚Azure Service Management' (ASM, auch ‚Classic'-Modus). ASM kannte nur ein flaches Modell aus Cloud Services und Storage Accounts ohne Resource Groups, ohne RBAC, ohne deklaratives Deployment und ohne einheitliches Tagging. ARM führt das ressourcenorientierte Modell mit feingranularer Authorisierung, Tagging, Policy- und Locking-Mechanismen, deklarativen Templates und Idempotenz ein. Damit lassen sich komplette Anwendungsumgebungen reproduzierbar als Code beschreiben — die Grundvoraussetzung für Infrastructure as Code in Azure.
Historisch wurde ARM 2014 angekündigt und ab 2015 schrittweise als bevorzugte API-Schicht ausgerollt. Der Übergang von ASM auf ARM zog sich über Jahre und ist erst Anfang der 2020er-Jahre weitgehend abgeschlossen worden, mit dem schrittweisen Auslaufen der ‚Classic'-Ressourcen. RBAC, Azure Policy, Resource Locks und Activity Log sind mit ARM eingeführt worden und wurden zur Grundlage zahlreicher höher liegender Dienste wie Microsoft Entra ID Privileged Identity Management, Microsoft Defender for Cloud und Azure Cost Management.
ARM-Templates in JSON wurden in der Praxis schnell als syntaktisch sperrig empfunden — geschachtelte Funktionen, lange Strings für Resource-IDs, schwer lesbare Konstrukte für Schleifen und Bedingungen. Microsoft hat diese Erfahrung mit der Einführung von Bicep 2020/2021 explizit aufgegriffen und Bicep als ‚erste-Klasse-DSL für ARM' positioniert; intern wird Bicep dabei vom Bicep-CLI verlustfrei in ARM-JSON kompiliert, sodass das ARM-Template-Modell als gemeinsamer Nenner aller Infrastruktur-Werkzeuge erhalten bleibt.