Zum Jahreswechsel nehme ich mir die Tenants gern nach Altlasten vor. Inaktive Konten in Entra ID fallen mir dabei jedes Mal auf. Wer sie entfernt, behält den Überblick und schließt zugleich unnötige Sicherheitslücken. Vor allem Gastkonten und Konten ehemaliger Benutzer häufen sich schnell an. Wer jetzt vorausschauend aufräumt, sorgt für mehr Ordnung im Tenant und spart obendrein Lizenzen.
Die Eigenschaft signInActivity verrät, wer sich zuletzt angemeldet hat
Für die Erkennung inaktiver Konten ist inzwischen die Eigenschaft signInActivity das wichtigste Werkzeug. Sie zeigt für jeden Benutzer, wann er sich zuletzt erfolgreich angemeldet hat (lastSuccessfulSignInDateTime) und wann der letzte Anmeldeversuch stattfand (lastSignInDateTime). In vielen Tenants, die ich betreue, kennen noch nicht alle diese Funktion, obwohl sie beim systematischen Ausmisten enorm hilft. Voraussetzung sind allerdings Entra ID P1 (oder höher) und eine Rolle, mit der sich AuditLog.Read.All nutzen lässt. Abrufen lassen sich die Daten über Microsoft Graph, sie stehen aber auch im Entra Admin Center bereit: Unter „Benutzer“ → „Alle Benutzer“ gibt es die Ansicht „Inaktive Benutzer“. Für einen ersten Überblick genügt das häufig. Sobald man jedoch filtern oder exportieren möchte, kommt man damit nicht mehr weit.
Bevor ich auf die einzelnen Werkzeuge eingehe, zeigt ein kurzes Ablaufschema, wie die Daten fließen:
flowchart TD
Anmeldeereignis["Anmeldung (User)"] --> SignInLog["Sign-In-Log (Audit-Log)"]
SignInLog --> GraphAPI["Graph API signInActivity"]
GraphAPI --> AdminCenter["Entra Admin Center: Inaktive Benutzer"]
Abbildung: So gelangen die Anmeldeinformationen in signInActivity.
Die signInActivity-Daten liefern viel Kontext, reichen allerdings nicht beliebig weit in die Vergangenheit zurück. Für die meisten Auswertungen genügt das trotzdem. Details und Einschränkungen beschreibt Microsoft im Artikel How to manage inactive user accounts.
Mit Microsoft Graph PowerShell lassen sich die Daten sauber exportieren
Sobald ich Listen erstellen und filtern will, komme ich am Export per PowerShell nicht vorbei. Mit Microsoft Graph PowerShell (ab Modul 1.24, mindestens Entra ID P1, Rolle „Benutzeradministrator“ oder höher plus AuditLog.Read.All) lese ich alle Benutzer samt signInActivity folgendermaßen aus:
Get-MgUser -All -Property signInActivity | Select-Object DisplayName,UserPrincipalName,AccountEnabled,@{Name='LastSignIn';Expression={$_.SignInActivity.LastSuccessfulSignInDateTime}}
Das Cmdlet läuft unter PowerShell 7, am besten mit moderner Authentifizierung über Connect-MgGraph. Gastkonten, die nie eingeladen wurden oder sich nie angemeldet haben, tauchen im Export allerdings nicht auf, weil für sie schlicht keine Aktivität aufgezeichnet wurde. Wer die Ergebnisse als CSV-Datei weiterverarbeiten möchte, hängt noch | Export-Csv .\InactiveUsers.csv -NoTypeInformation an.
Mein Tipp: Legen Sie immer fest, ab welchem Zeitraum ein Konto als „inaktiv“ gilt. Üblich sind 90 oder 180 Tage, wie hoch das Risiko ist, hängt aber von der jeweiligen Organisation ab. Servicekonten sollten Sie keinesfalls pauschal abschalten.
Access Reviews räumen inaktive Gastkonten automatisch auf
Bei Gastkonten ist das Problem noch dringlicher. In vielen Tenants, die ich mir ansehe, wuchert das Gast-Adressbuch, weil kaum jemand Einladungen und Mitgliedschaften regelmäßig überprüft. Abhilfe schaffen Access Reviews mit der Einstellung „Benutzer, die sich in den letzten X Tagen nicht angemeldet haben“. Seit einiger Zeit lässt sich diese Option direkt im Assistenten auswählen, was die Arbeit spürbar erleichtert. Zu finden ist die Funktion im Entra Admin Center unter „Identitätsgovernance“ → „Zugriffsüberprüfungen“. Wie man dabei vorgeht, erklären der Microsoft-Leitfaden Access Reviews für Gäste und mein Beitrag Gastkonten mit Access Reviews aufräumen.
Wer mit Entitlement Management arbeitet, kann noch gezielter ausmisten und Gastzugänge automatisch entfernen lassen, sobald die Mitgliedschaft in einem Access Package endet (siehe Access Packages für Gäste mit Entitlement Management).
Servicekonten und Shared Mailboxes verlangen eine genaue Prüfung
Nicht jedes inaktive Konto darf man einfach löschen. Servicekonten für Anwendungen, Automatisierungen oder Scanner arbeiten oft ohne interaktive Anmeldung und erscheinen deshalb als „inaktiv“. Bei freigegebenen Postfächern (Shared Mailboxes) verhält es sich ähnlich. Direkt meldet sich dort kaum jemand an, die Benutzer binden sie lediglich ein. In der Praxis kläre ich deshalb immer, ob wirklich niemand mehr das Konto nutzt, und sehe etwa nach, ob es noch in Gruppen, App-Zuweisungen oder Workflows vorkommt. Besonders heikel wird es, wenn Konten mit ApplicationImpersonation-Rechten oder synchronisierte Identitäten ungeprüft verschwinden.
Häufig wird zuerst gelöscht, und erst danach wundert man sich, warum eine Anwendung ausfällt. Sinnvoller ist es, das Konto zunächst zu deaktivieren und einige Wochen zu beobachten. Erst wenn man sicher ist, entfernt man es endgültig. Die zugewiesenen Lizenzen werden dabei automatisch frei, was sich spätestens beim nächsten True-Up auszahlt.
Ein einfacher Ablauf bringt zum Jahresende mehr als jede Perfektion
Ich verfolge lieber konsequent einen einfachen Prozess, als mich in Spezialfällen zu verzetteln. Wer sich grob an die folgenden Schritte hält, hat schon viel erreicht:
- signInActivity-Daten sichten (Entra Admin Center & PowerShell)
- Access Reviews für Gäste einrichten
- Servicekonten und Shared Mailboxes prüfen
- Konten zuerst deaktivieren, danach löschen
- Lizenzen und Gruppenmitgliedschaften kontrollieren
Vieles lässt sich mit Bordmitteln und überschaubarem Aufwand erledigen. Wichtig ist vor allem, dass der Prozess dokumentiert und wiederholbar ist. Mit einer festen Routine wird Entra ID von Jahr zu Jahr ein Stück aufgeräumter und sicherer.


