In der heutigen Cloud-Welt sind Sicherheit und Zugriffsverwaltung von größter Bedeutung. Eine Komponente der Sicherheit sind die geheimen Schlüssel (Secrets), welche in Microsoft Entra ID App Registrations verwendet werden. Diese Secrets haben eine begrenzte Gültigkeitsdauer und müssen vor Ablauf erneuert werden, um Unterbrechungen im Zugriff zu vermeiden. In diesem Beitrag werden wir einen praktischen Ansatz vorstellen, mit dem Sie durch die Nutzung von Azure Logic Apps eine automatische Benachrichtigung erhalten können, bevor Ihre Secrets ablaufen.
Ablaufende Secrets stellen aus Sicherheits- und Betriebsgründen ein Problem dar, insbesondere in einer Cloud-Computing-Umgebung wie Microsoft Azure. Insgesamt können ablaufende Secrets zu erheblichen Sicherheitsrisiken, Betriebsunterbrechungen und einem hohen Verwaltungsaufwand führen. Daher ist es wichtig einen proaktiven Ansatz zur Verwaltung und Überwachung dieser zu verfolgen, um etwaige Probleme zu vermeiden und eine zuverlässige und sichere Umgebung zu schaffen.
Dies kann beispielsweise durch eine automatisierte Benachrichtigung vor Ablauf eines Secrets umgesetzt werden.
5 Gründe, weshalb ablaufende Secrets problematisch sein können
Sicherheitslücken
Secrets sind vertrauliche Informationen, die dem Schutz vor unberechtigtem Zugriff auf Ressourcen dienen. Diese sind vergleichbar mit Kennwörtern, Schlüsseln und anderen Zugangsdaten. Ein Secret sollte niemals in einer ungesicherten Datei oder einem Codeschnipsel auftauchen, da dies die Gefahr eines unberechtigten Zugriffs auf sensible Daten durch Dritte drastisch erhöht. Aus diesem Grund ist es wichtig, Secrets regelmäßig zu rollieren und Zugriffe mit diesen zu kontrollieren.
Verlust von Zugriff
Eine Authentifizierung mit einem abgelaufenen Secret ist nicht möglich. Dies kann dazu führen, dass Anwendungen oder auch Benutzer nicht mehr auf für sie vorgesehene Ressourcen zugreifen können. Dies kann im schlimmsten Fall zu einem Totalausfall einer unternehmenswichtigen Anwendung führen.
Mangelnde Transparenz
Eine Transparenz über die sich in Verwendung befindlichen Secrets, deren Nutzung und Ablaufdatum ist für einen stabilen und reibungslosen Geschäftsbetrieb unerlässlich. Ohne eine solche Transparenz kann es zu Ausfällen von Anwendungen oder dem Diebstahl von Daten kommen.
Wartungsaufwand
Eine manuelle Verwaltung von Secrets erfordert wiederkehrende Prüfungen und eine dauerhafte Dokumentation. Dies ist zeitaufwändig und senkt die Effizienz des IT-Teams, welches sich in der gleichen Zeit anderen sinnvollen Themen widmen könnte.
Regulatorische Anforderungen
Je nach Branche und geografischem Standort unterliegen Organisationen verschiedenen regulatorischen Anforderungen bezüglich der Sicherheit und Verwaltung von Zugangsdaten. Das Nichteinhalten dieser Vorschriften kann rechtliche Konsequenzen haben.
Video Tutorial: Ablaufende Azure App Registration Secrets überwachen
Schritt-für-Schritt-Anleitung
Erstellung der Ressourcengruppe
Zuallererst wird eine neue Ressourcengruppe angelegt. Dies ermöglicht die Anlage und Verwaltung der verwendeten Ressourcen an einem zentralen Ort. geschieht folgendermaßen:
- Melden Sie sich im Azure-Portal an und navigieren Sie zur Startseite.
- Suchen sie in der Suchleiste nach „Resource groups“ und klicken Sie auf den dort aufgelisteten Dienst „Resource groups“
- Klicken Sie auf der linken Seite auf „Create“, um eine neue Ressourcengruppe zu erstellen
- Projektdetails angeben:
- Abonnement: Wählen Sie das gewünschte Abonnement aus der Dropdown-Liste.
- Resource group: Geben Sie einen aussagekräftigen Namen für Ihre Ressourcengruppe ein, beispielsweise appsecret-check-rg.
- Region: Wählen Sie die Region aus, in welcher die Ressourcen bereitgestellt werden sollen.
- Klicken Sie auf "Check + create" um die eingegebenen Informationen überprüfen zu lassen.
Überprüfen notwendiger Voraussetzungen
Damit eine Alarmierung bei Auslauf eines Secrets in Form einer E-Mail erfolgen kann, muss der empfangende Benutzer aktiviert und die hinterlegte E-Mail-Adresse vorhanden sein. Dies kann beispielsweise über das Entra ID überprüft werden:
- Öffnen Sie den Microsoft Entra ID Dienst im Azure-Portal
- Wechseln Sie in unter „Manage“ in das Menü „Users“
- Wählen Sie den Zielnutzer aus und wählen Sie im Anschluss „Eigenschaften bearbeiten“ aus, um weitere Informationen zu erhalten.
- Überprüfen Sie in diesem Menü die Parameter Kontostatus und E-Mail-Adresse. Hierbei sollte der Kontostatus auf „Active“ stehen und eine vorhandene E-Mail-Adresse hinterlegt sein.
Bereitstellung des Templates
- Suchen Sie mithilfe der Suchleiste im Azure-Portal nach "Deploy from a custom template" und öffnen Sie den gefundenen Dienst.
- Wählen Sie die Option "Build your own template in the editor" aus, wodurch das bereits erstellte Template nur importiert und an die eigenen Daten angepasst werden muss. Dies erleichtert die Bereitstellung deutlich.
- Fügen Sie den gesamten Inhalt des JSON-Templates in den Vorlagen-Editor ein und lassen diesen mit der Schaltfläche „Save“ auf syntaktische Korrektheit prüfen.
- Falls Anpassungen am Template notwendig sind, können diese über die Schaltfläche „Edit template“ durchgeführt werden. Beispielsweise sollte hier der Name der Ressourcengruppe angepasst werden.
- Stellen Sie sicher, dass Sie die Ressourcenkonfiguration in der Vorlage überprüft haben und diese Ihren Anforderungen entspricht. Fahren Sie im Anschluss daran mit „Review + create“ fort.
- Klicken Sie auf die Schaltfläche "Create“, um die Bereitstellung zu starten.
Autorisieren der API Connection
Jede Verbindung zwischen einer Logic App und einem SaaS-Dienst, wie beispielsweise dem Azure Key Vault, findet über eine API Connection statt. Diese wurde mithilfe des zuvor bereitgestellten Templates erstellt, muss jedoch in einem separaten Schritt autorisiert werden. Dies geschieht folgendermaßen:
- Öffnen Sie die Ressourcengruppe, beispielsweise indem Sie nach dem Namen dieser in der zentralen Suchleiste des Azure-Portals suchen. Es öffnet sich der Überblick der Ressourcengruppe, in welchem die API Connection als Ressource aufgelistet ist.
- Öffnen Sie die API Connection, welche den Namen der soeben mit dem Template erstellten Logic App enthält. In diesem Beispiel ist es „office365-AppRegistrationClientSecretNotification“.
- Wechseln Sie nun in das Menü zur Bearbeitung der API Connection, indem Sie in der Rubrik „General“ in „Edit API Connection“ wechseln.
- Autorisieren Sie dort die API Connection, indem Sie auf den Button „Authorize“ klicken und anschließend mit „Save“ bestätigen.
Extraktion der Object (principal) ID der Logic App
Logic Apps verwenden Managed Identites, um Zugang zu Ressourcen zu erhalten, welche durch das Entra ID (vormals Azure Active Directory) geschützt werden. In diesem Schritt exportieren wir die Object (Principal) ID, die im Nächsten für die eigentliche Rechtevergabe benötigt wird:
- Öffnen Sie die Ressourcengruppe, beispielsweise indem Sie nach dem Namen dieser in der zentralen Suchleiste des Azure-Portals suchen. Es öffnet sich der Überblick der Ressourcengruppe, in der neben der API Connection auch die Logic App als Ressource aufgelistet ist.
- Klicken Sie nun auf den Namen der mit hilfe des Templates erstellten Logic App, um diese zu öffnen.
- In der Logic App Übersicht sehen Sie später Informationen zu den Ausführungen, Triggern und Statistiken an sich. Aktuell sind diese logischerweise noch leer. Öffnen Sie nun das Menü „Identity“ in der Rubrik „Settings“.
- Es wird zwischen System assigned und User assigned Identitys unterschieden. In diesem Beispiel wird eine System Assigned Identity verwendet. Da diese nicht mehr benötigt wird, sollte die Logic App an sich entfernt werden. Hierfür setzen Sie den Status auf „On“ und notieren Sie sich im Anschluss die Object (principal) ID. Diese wird im nächsten Schritt benötigt.
Berechtigungszuweisung im Entra ID mithilfe von PowerShell
Es gibt mehrere Möglichkeiten zur Zuweisung von Berechtigungen im Entra ID. Dies kann beispielsweise über ARM-Templates erfolgen, direkt über das Azure-Portal oder PowerShell.
Tenant ID extrahieren
Die Tenant ID wird benötigt, um eine Anmeldung mithilfe von PowerShell im Kontext des Tenants durchzuführen und im Anschluss daran weitere Befehle ausführen zu können. Diese finden Sie in der Übersichtsseite von Entra ID im Azure-Portal:
- Öffnen Sie das Azure-Portal und begeben Sie sich zur Entra ID Übersicht.
- In der Übersichtsseite befindet sich die Tenant ID, notieren Sie sich diese.
Herstellen der Verbindung
- Öffnen Sie auf ihrem Computer das PowerShell Integrated Scripting Environment (ISE), indem Sie "PowerShell ISE" in die Windows-Suchleiste eingeben und die Anwendung aus den Suchergebnissen auswählen.
- Kopieren Sie den folgenden Code und fügen Sie ihn in die PowerShell ISE ein, ersetzen Sie hierbei die <Tenant ID> mit der Ihrigen. Führen Sie das Skript im Anschluss mit „F5“ oder der Schaltfläche „Ausführen“ aus:
Erklärung
Der Befehl connect-azuread -TenantId <Tenant ID> stellt eine Verbindung zum Entra ID her, wobei die angegebene Tenant ID verwendet wird. Dies ermöglicht es, PowerShell-Befehle im Kontext dieses spezifischen Mandanten auszuführen.
Vorbereitung der Object ID
Für die Zuweisung der Berechtigung wird die Object ID der Graph App und die Rolle, welche zugewiesen werden soll, benötigt. Diese Daten werden in diesem Schritt erhoben.
Die Graph App ist auch unter der Application ID „00000003-0000-0000-c000-000000000000“ oder dem Namen „GraphAggregatorService“ zu finden. Die Rolle befindet sich in der Liste der AppRoles der Graph App.
Extrahieren Sie mit folgendem Befehl die Object ID und die Group Read Permission:
Erklärung
Diese Befehle rufen Informationen über den Azure AD-Dienstprinzipal der Graph App ab und exportieren die App-Rolle "Application.Read.All".
Einlesen der Object (principal) ID der Logic App
Zuvor haben wir bereits die Object (principal) ID der Logic App extrahiert. Lesen Sie nun den Service Principal der Object (principal) ID der Logic App in die Variable „msi“ ein:
Erklärung
Dieser Befehl ruft Informationen über einen Azure AD-Dienstprinzipal anhand seiner Object ID ab, die zuvor in den Code eingefügt wurde. Die Informationen werden dann der Variablen $msi zugewiesen, um sie für spätere Verwendung im Skript bereitzustellen.
Berechtigungen zuweisen
Alle notwendigen Informationen für die Zuweisung der Rolle „Application.Read.All“ an die Logic App sind nun vorhanden. Weisen Sie die Berechtigung mit folgendem Befehl zu:
Erklärung
Es erfolgt eine Rollenzuweisung mithilfe eines Cmdlets, welchem folgende Angaben mitgegeben werden:
- Id $groupReadPermission.Id: ID der App-Rolle „Application.Read.All“
- ObjectId $msi.ObjectId: Object ID des Dienstprinzipals der Logic App
- PrincipalId $msi.ObjectId: Principal ID des Dienstprinzipals der Logic App
- ResourceId $graph.ObjectId: Object ID des Dienstprinzipals der Graph App
Durch diesen Befehl wird die ausgewählte App-Rolle einem spezifischen Dienstprinzipal zugewiesen, welches bestimmte Berechtigungen und Zugriffsbereiche innerhalb des Azure AD-Systems ermöglicht.
Das PowerShell-Skript
Das PowerShell Skript, welches über die verschiedenen Schritte hinweg entstanden ist, sieht folgendermaßen aus. Sie können es verwenden, nachdem Sie die beiden Variablen „tenantid“ und „objectprincipalid“ durch ihre Daten ersetzt haben.
Ausführen der Logic App
- Öffnen Sie das Azure-Portal und begeben Sie sich zur Übersicht der Logic Apps
- Wählen Sie dort die erstellte Logic App aus und starten diese mit einem Klick auf „Run Trigger“