Zum Jahresende nehme ich mir regelmäßig Zeit, in Microsoft Entra ID die ungenutzten App-Registrierungen und Enterprise-Anwendungen durchzugehen. In den meisten Tenants, die ich betreue, hat sich über die Jahre eine ganze Reihe von Apps angesammelt, die einmal für Tests, Migrationen oder Integrationen angelegt wurden und heute niemand mehr braucht. Genau dieser Wildwuchs an Service Principals und App-Objekten öffnet später leider oft neue Angriffswege und wird zum Compliance-Risiko. Das Entra Admin Center weist mit den Empfehlungen „Remove unused applications“ und „Renew expiring service principal credentials“ inzwischen regelmäßig darauf hin. Viele Admins wissen allerdings nicht, wie sie im Alltag verlässlich feststellen, welche Apps noch im Einsatz sind, und wie sie diese ohne Risiko löschen.
Vergessene Apps mit weitreichenden Rechten sind ein echtes Sicherheitsrisiko
Ein Großteil der Angriffe auf Microsoft 365 nutzt mittlerweile OAuth-Apps und Berechtigungen, die teils weit über das hinausgehen, was eigentlich nötig wäre. Vor allem App-Registrierungen mit hochprivilegierten Application Permissions wie Directory.ReadWrite.All oder Mail.ReadWrite werden in vielen Tenants nie wieder gebraucht. Sie bleiben trotzdem aktiv und behalten ihre weitreichenden Rechte. Microsoft hat die Empfehlungen zum Entfernen ungenutzter Anwendungen und zum Erneuern ablaufender Service-Principal-Credentials im Entra Admin Center inzwischen gut sichtbar platziert (Empfehlung: Unused apps). Man sollte sie allerdings nicht blind umsetzen. Erst wenn klar ist, wie eine App tatsächlich genutzt wird, lässt sie sich gefahrlos entfernen.
Die Sign-in-Aktivität zeigt, welche Apps noch gebraucht werden
Meine wichtigste Informationsquelle ist mittlerweile die Sign-in-Aktivität der Service Principals. Unter Microsoft Entra Admin Center → Enterprise-Anwendungen → Usage & Insights → Sign-ins sehe ich für jede App, ob und wann sie zuletzt genutzt wurde, egal ob mit User- oder App-Token. Für Automatisierungen gibt es zusätzlich das neue Graph-Attribut „servicePrincipalSignInActivity“ (abrufbar über die Microsoft Graph API, Rolle: Directory Reader oder Application Administrator). Damit lassen sich deutlich genauere Abfragen bauen, etwa um alle Apps zu finden, die im letzten Jahr keinerlei Aktivität hatten. Eine App ohne aktuelle Sign-ins, ohne zugeordnete Rollen und ohne Besitzer kann man in aller Regel löschen.
Praxistipp: Einen schnellen Überblick verschafft im Entra-Portal die Spalte „Letzter Anmeldeversuch“ in der Liste der Enterprise-Anwendungen. Sortiert man danach, erkennt man innerhalb von Sekunden, welche Apps seit Monaten brachliegen.
Apps ohne Besitzer sollte man regelmäßig über Microsoft Entra Admin Center → Enterprise-Anwendungen → Alle Anwendungen → Besitzer prüfen. Kritisch wird es vor allem bei Apps, die privilegierte Rechte haben, für die aber niemand verantwortlich ist. Aufräumen allein reicht hier nicht. Es braucht feste Abläufe, mit denen App-Owner zugewiesen und überwacht werden, am besten automatisch schon beim Anlegen einer neuen Registrierung. Mehr dazu habe ich im Beitrag über App Governance und die Prüfung von OAuth-Apps geschrieben.
Ich deaktiviere Apps zuerst und lösche sie erst nach einer Wartezeit
Wer Apps einfach löscht, riskiert Ausfälle, falls doch noch irgendwo ein Dienst auf das Objekt zugreift. Ich gehe deshalb immer in zwei Stufen vor. Zuerst stelle ich in den Eigenschaften der Anwendung „Für Benutzer zur Anmeldung aktiviert“ auf Nein. Die Authentifizierung wird dann verweigert, technisch existiert die App aber weiter. Oft stellt sich erst in diesem Moment heraus, ob noch Abhängigkeiten bestehen. Anschließend warte ich mindestens 14 Tage, meist sogar einen ganzen Monat, bevor ich die App endgültig entferne. Gelöscht wird sie im Entra Admin Center über Enterprise-Anwendungen → Löschen, die zugehörigen App-Objekte entfernt man analog unter App-Registrierungen. Microsoft führt dabei zunächst nur ein Soft Delete aus, die App lässt sich also noch 30 Tage lang wiederherstellen. Einzelheiten zum Entfernen findet ihr unter Remove enterprise applications.
flowchart TD
FindUnused["Apps ohne Nutzung finden"] --> DisableSignIn["Sign-in deaktivieren"]
DisableSignIn --> WaitPeriod["Wartezeit (14–30 Tage)"]
WaitPeriod --> DeleteApp["App löschen"]
DeleteApp --> SoftDelete["Soft Delete (30 Tage)"]
SoftDelete --> Gone["Endgültig entfernt"]
Abbildung: Empfohlener Ablauf zum Bereinigen ungenutzter Apps in Entra ID.
Bei Apps mit Client-Secrets nutze ich die Gelegenheit für eine weitere Prüfung. Ich schaue, ob noch „Legacy“-Geheimnisse ohne Ablaufdatum existieren und ob Service Principals privilegierte Rechte haben, die man besser durch Workload Identity Federation oder Managed Identities ersetzen sollte (siehe Client-Secrets durch Workload Identity Federation ablösen).
Graph PowerShell nimmt in großen Tenants viel Handarbeit ab
In größeren Tenants zahlt sich Automatisierung mit Graph PowerShell schnell aus. Der folgende Befehl (PowerShell 7, Modul Microsoft.Graph.Applications, Rolle: Application Administrator) listet alle App-Registrierungen ohne Besitzer auf:
Get-MgApplication | Where-Object { -not $_.Owners }
Ungenutzte Apps findet man, indem man über die Graph-API die Daten aus „servicePrincipalSignInActivity“ abfragt. Diese Daten gibt es allerdings nur für Enterprise-Anwendungen, nicht für reine App-Registrierungen ohne Service Principal. Hinzu kommt, dass manche Apps vom System selbst oder für Integrationen benötigt werden (z. B. Teams, Exchange Online). Solche Apps sollte man grundsätzlich nie löschen.
Ein geregelter Prozess bringt mehr als eine einmalige Aufräumaktion
Das Aufräumen ungenutzter Apps in Entra ID gehört für mich inzwischen fest zur jährlichen Wartung. Wichtiger als eine einmalige Großaktion ist aber ein geregelter Ablauf. Wer App-Owner sauber zuweist, regelmäßig Reviews durchführt und Apps vor dem Löschen immer erst deaktiviert, behält dauerhaft den Überblick und hält seinen Tenant sicher. Spätestens seit den Angriffen über kompromittierte OAuth-Apps im vergangenen Jahr (siehe Lehren aus Midnight Blizzard) ist das keine freiwillige Zusatzaufgabe mehr, sondern Pflicht. Wer wachsam bleibt, die Empfehlungen im Admin Center ernst nimmt und den Prozess konsequent einhält, startet entspannter ins neue Jahr – mit deutlich weniger Schatten-Apps und Risiken.


