Migration zu Microsoft Graph API: Optimierung der MFA-Verwaltung und Sicherheit mit PowerShell SDK
Die Migration zu Microsoft Graph API von veralteten PowerShell-Modulen wie Azure AD und MSOnline ist eine wichtige Aufgabe, insbesondere in geskripteten Umgebungen, da Microsoft die veralteten Module bald abkündigt. Für Administratoren ist die Umstellung auf Microsoft Graph API essenziell, um zukünftige Kompatibilitätsprobleme zu vermeiden.
Microsoft will ab März 2025 nur noch sicherheitskritische Updates für die alten Module bereitstellen, und rät Administratoren, ihre Skripte auf die Microsoft Graph PowerShell SDK umzustellen. Diese Umstellung bietet zahlreiche Vorteile, darunter moderne Authentifizierung, Plattformunabhängigkeit und verbesserte Sicherheitspraktiken wie die Unterstützung für externe Identitäten und Passwortlose Anmeldungen.
Index
Installation der neuen PowerShell-Module für Microsoft Graph
Das Microsoft Graph PowerShell SDK (https://learn.microsoft.com/en-us/graph/sdks/sdks-overview) bietet IT-Administratoren eine flexible Schnittstelle, um auf Microsoft Graph API zuzugreifen und verschiedene Verwaltungsaufgaben durchzuführen. Das SDK unterstützt die gesamte Microsoft Graph API-Oberfläche, einschließlich Dienste wie Entra ID, Microsoft 365, Teams und viele weitere. Ein großer Vorteil des SDKs liegt in seiner plattformübergreifenden Kompatibilität, da es sowohl auf Windows als auch auf Linux und macOS läuft. Die Verwendung von PowerShell 7 ermöglicht zudem moderne Authentifizierungsmethoden, wie die Unterstützung von OAuth2.
Die neuen PowerShell-Module werden in der PowerShell 7 zum Beispiel mit den folgenden Befehlen installiert:
Install-Module Microsoft.Graph -Scope AllUsers -Force
Install-Module Microsoft.Graph.Beta -Scope AllUsers -Force
Das SDK zeichnet sich dadurch aus, dass es auf dem Microsoft Authentication Library (MSAL) basiert, was im Vergleich zu älteren Technologien wie ADAL sicherere Authentifizierungsmechanismen bietet. Administratoren können mit nur wenigen Zeilen Code Benutzer und Gruppen verwalten, Richtlinien für MFA setzen oder komplexe Abfragen durchführen, zum Beispiel nach allen Nutzern, die bestimmte Authentifizierungsmethoden verwenden. Ein Beispiel für eine einfache Authentifizierungsabfrage ist:
Connect-MgGraph -Scopes „User.Read.All“
Die Verbindung lässt sich mit Connect-Graph auch ohne die Angabe eines Scopes festlegen. Bei der Anzeige lassen sich Filter definieren, zum Beispiel alle Namen, die mit „A“ beginnen
Get-MgUser -Filter „startswith(DisplayName,’A‘)“
Abrufen der MFA-Methoden eines Benutzers:
Get-MgUserAuthenticationMethod -UserId user@example.com
Reichen die Rechte nicht aus, ist die Anmeldung über:
Connect-MgGraph -Scopes „UserAuthenticationMethod.ReadWrite.All“
sinnvoll. Das SDK erleichtert so den Zugriff auf viele komplexe Cloud-Dienste und macht Automatisierungen sowie das Management in großen Microsoft-Umgebungen deutlich effizienter.
PowerShell-Migration zu Microsoft Graph API durchführen
Die Migration erfordert, dass bestehende Skripte überprüft und entsprechend aktualisiert werden, da die neuen Microsoft Graph PowerShell Cmdlets und Parameter sich deutlich von den älteren AzureAD- oder MSOnline-Befehlen unterscheiden. Zum Beispiel wird der Befehl Get-AzureADUser durch Get-MgUser ersetzt. Um sicherzustellen, dass die Migration reibungslos verläuft, empfiehlt Microsoft eine detaillierte Dokumentation der vorhandenen Skripte, um die wichtigsten Funktionalitäten zu identifizieren und diese in die neue API zu übertragen. Die Mapping-Tabellen der Cmdlets sowie die erweiterten Abfragefunktionen in Microsoft Graph PowerShell erleichtern diesen Prozess.
Für die Verwaltung von per-user MFA ist es notwendig, das Cmdlet Get-MgUserAuthenticationMethod zu nutzen, um die Authentifizierungsmethoden eines Benutzers abzurufen. Hierbei können Methoden wie Microsoft Authenticator, FIDO2 oder Passwortlose Authentifizierungen ausgelesen und aktualisiert werden. Um den bevorzugten MFA-Typ zu ändern, bietet die Graph API ein flexibles Schema, das mit Invoke-MgGraphRequest den bevorzugten Authentifizierungstyp für Benutzer festlegt. Dies ermöglicht es Administratoren, spezifische Anforderungen, wie die Festlegung der Standard-MFA-Methode für eine bestimmte Benutzergruppe, umzusetzen.
Ein wichtiger Schritt in der Migration zu Microsoft Graph API besteht darin, die alte MFA-Konfiguration vollständig auf die neue „Authentication Methods Policy„-Seite im Microsoft Entra Admin Center zu verschieben. Dort können alle Authentifizierungsmethoden zentral konfiguriert und die alten Konfigurationen deaktiviert werden. Das vereinfacht die Verwaltung und bietet zusätzliche Funktionen wie das Durchsetzen von Standort- und App-basierten Authentifizierungsbenachrichtigungen.
Migration und Best Practices für die Verwaltung von MFA mit Microsoft Graph API
Ein zentraler Vorteil der Microsoft Graph API liegt in ihrer Flexibilität, insbesondere bei der Verwaltung von MFA-Methoden. Über das Cmdlet Get-MgUserAuthenticationMethod können die Authentifizierungsmethoden eines Benutzers, wie Microsoft Authenticator, FIDO2 oder Passwortlose Authentifizierungen, abgerufen und aktualisiert werden. Ein einfaches Beispiel für die Nutzung dieses Cmdlets sieht so aus:
1 2 3 4 5 |
# Abrufen aller MFA-Methoden eines Benutzers $authMethods = Get-MgUserAuthenticationMethod -UserId "[email protected]" $authMethods | ForEach-Object { Write-Host "MFA-Methode: $($_.MethodType)" } |
Dieses Beispiel gibt die verschiedenen MFA-Methoden eines Benutzers aus, wie Microsoft Authenticator oder FIDO2-Schlüssel. Das Cmdlet liefert nicht nur den Methodentyp, sondern auch zusätzliche Informationen wie Telefonnummern bei der Telefon-Authentifizierung. Wenn man eine spezifische Methode, wie die Authenticator-App, für einen Benutzer abrufen möchte, kann dies so erfolgen:
1 2 3 |
# Abrufen der Authenticator-Methode eines Benutzers $authMethods = Get-MgUserAuthenticationMethod -UserId "[email protected]" $authMethods | Where-Object { $_.MethodType -eq 'AuthenticatorApp' } |
Dieser Befehl filtert alle Methoden und zeigt nur die Authenticator-Methode an. Das ist nützlich, wenn ein Administrator sicherstellen möchte, dass alle Benutzer eine bestimmte MFA-Methode aktiviert haben. Ein weiteres Beispiel zeigt, wie man auf bestimmte Eigenschaften zugreifen kann, etwa die Telefonnummer bei der Telefon-Authentifizierung:
1 2 3 4 5 |
# Abrufen der Telefon-MFA-Methode mit Telefonnummer $authMethods = Get-MgUserAuthenticationMethod -UserId "[email protected]" $authMethods | Where-Object { $_.MethodType -eq 'PhoneAuthentication' } | ForEach-Object { Write-Host "Telefonnummer: $($_.AdditionalProperties['phoneNumber'])" } |
Dieses Beispiel zeigt, wie die Telefonnummern von Benutzern extrahiert werden können, welche die telefonbasierte MFA-Authentifizierung aktiviert haben.
Verwaltung von MFA-Methoden mit der Microsoft Graph API
Die API bietet tiefergehende Möglichkeiten, MFA zu konfigurieren und zu verwalten. Zum Beispiel können Administratoren die bevorzugte MFA-Methode für Benutzer festlegen, indem sie API-Endpunkte verwenden, die mit PowerShell-Befehlen wie Invoke-MgGraphRequest kombiniert werden. Damit lassen sich auch Standards für ganze Benutzergruppen effizient konfigurieren. Administratoren können die bevorzugte MFA-Methode eines Benutzers, zum Beispiel Microsoft Authenticator, konfigurieren, indem sie einen API-Call mit Invoke-MgGraphRequest ausführen:
1 2 3 4 5 6 7 8 9 10 |
# Definiere die bevorzugte MFA-Methode auf Microsoft Authenticator für einen Benutzer $body = @" { "userPreferredMethodForSecondaryAuthentication": "microsoftAuthenticator" } "@ # Führe den API-Aufruf aus, um die bevorzugte Methode zu setzen Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/users/{user_id}/authentication/signInPreferences" -Body $body -Method PATCH |
Dieses Skript aktualisiert die MFA-Einstellungen eines Benutzers und setzt Microsoft Authenticator als bevorzugte Methode. Der API-Endpunkt ermöglicht es, direkt auf die Authentifizierungseinstellungen eines Benutzers zuzugreifen und diese zu ändern.
Wenn Administratoren sicherstellen möchten, dass alle Benutzer einer bestimmten Gruppe dieselbe MFA-Methode verwenden, können sie das Skript erweitern, um für alle Gruppenmitglieder die bevorzugte Methode zu ändern:
1 2 3 4 5 6 7 8 9 10 |
$groupMembers = Get-MgGroupMember -GroupId "{group-id}" # Festlegen der bevorzugten MFA-Methode für alle Mitglieder der Gruppe foreach ($member in $groupMembers) { $body = @" { "userPreferredMethodForSecondaryAuthentication": "microsoftAuthenticator" } "@ Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/users/$($member.id)/authentication/signInPreferences" -Body $body -Method PATCH } |
Dieses Skript geht jeden Benutzer der Gruppe durch und setzt für jeden die Authenticator-App als bevorzugte MFA-Methode. So können Administratoren Standards für ganze Benutzergruppen effizient und automatisiert durchsetzen.
Neben dem Festlegen von Methoden ist es oft auch notwendig, zu überprüfen, welche MFA-Methoden Benutzer bereits verwenden. Administratoren können dann gezielt Benutzern, die noch keine sicheren Methoden aktiviert haben, die richtige Methode zuweisen:
1 2 3 4 5 6 7 8 9 10 11 |
# Abrufen der MFA-Methoden eines Benutzers und Festlegen, wenn keine Authenticator-App aktiviert ist $authMethods = Get-MgUserAuthenticationMethod -UserId "[email protected]" if ($authMethods.MethodType -notcontains "AuthenticatorApp") { # Setze Microsoft Authenticator als bevorzugte Methode $body = @" { "userPreferredMethodForSecondaryAuthentication": "microsoftAuthenticator" } "@ Invoke-MgGraphRequest -Uri "https://graph.microsoft.com/beta/users/[email protected]/authentication/signInPreferences" -Body $body -Method PATCH } |
Hier wird zunächst überprüft, ob ein Benutzer die Authenticator-App aktiviert hat. Falls nicht, wird diese Methode als bevorzugt eingestellt. Dieses Vorgehen kann als Teil eines Skripts verwendet werden, um regelmäßig die MFA-Konfiguration zu validieren und gegebenenfalls anzupassen.
Nutzung des Least-Privilege-Prinzips
Ein zentraler Aspekt der neuen API ist das sogenannte Least-Privilege-Prinzip. Während die alten AzureAD- und MSOnline-Module oft zu weitreichende Berechtigungen erforderten, verlangt Microsoft Graph PowerShell explizit nach spezifischen Rechten, die der Administrator anfordern muss. Dies erhöht die Sicherheit erheblich, da Nutzer und Skripte nur die minimal notwendigen Rechte erhalten. Der Zugriff auf MFA-Informationen eines Benutzers kann durch das Scoping auf bestimmte Berechtigungen erreicht werden:
1 2 |
# Verbindung zur Microsoft Graph API mit minimalen Berechtigungen Connect-MgGraph -Scopes "UserAuthenticationMethod.ReadWrite.All" |
Durch die Einschränkung der Berechtigungen wird sichergestellt, dass keine unnötigen Berechtigungen vergeben werden.
Durch diesen einheitlichen Ansatz wird die Verwaltung erheblich vereinfacht und die Sicherheit erhöht.
Zusätzlich lassen sich Authentifizierungsmethoden auch gezielt aktivieren oder deaktivieren. Hier ein Beispiel, wie die Authentifizierungsmethode „Telefon“ für einen Benutzer hinzugefügt wird:
1 2 |
# Hinzufügen der Telefon-Authentifizierungsmethode für einen Benutzer New-MgUserAuthenticationPhoneMethod -UserId "[email protected]" -PhoneNumber "+491701234567" -PhoneType "mobile" |
Dieses Beispiel zeigt, wie eine Telefonnummer als MFA-Methode zu einem Benutzerkonto hinzugefügt wird, wobei „mobile“ den Typ der Telefonnummer angibt. Ein weiteres häufiges Szenario in der Praxis ist das Erzwingen von sicheren MFA-Methoden für alle Benutzer in einer bestimmten Gruppe. Zum Beispiel kann man überprüfen, ob alle Benutzer einer Gruppe MFA mit der Authenticator-App verwenden, und bei Bedarf Änderungen vornehmen:
1 2 3 4 5 6 7 8 |
# Überprüfen, ob die Authenticator-App für alle Benutzer in einer Gruppe aktiviert ist $groupMembers = Get-MgGroupMember -GroupId "{group-id}" foreach ($member in $groupMembers) { $mfaMethods = Get-MgUserAuthenticationMethod -UserId $member.Id if ($mfaMethods.MethodType -notcontains "microsoftAuthenticator") { Write-Host "$($member.DisplayName) hat Microsoft Authenticator nicht aktiviert." } } |
In diesem Fall wird für alle Mitglieder der angegebenen Gruppe überprüft, ob die Authenticator-App als MFA-Methode aktiviert ist, und falls nicht, eine entsprechende Ausgabe erzeugt. Für großflächige Umstellungen lassen sich auch Standardmethoden in einem Skript automatisiert festlegen. Zum Beispiel könnte ein Administrator alle Benutzer so konfigurieren, dass die Authenticator-App als primäre MFA-Methode eingestellt wird:
1 2 3 4 5 6 7 8 9 10 |
# Standard-MFA-Methode für alle Benutzer auf Microsoft Authenticator setzen $allUsers = Get-MgUser -All foreach ($user in $allUsers) { $body = @" { "userPreferredMethodForSecondaryAuthentication": "microsoftAuthenticator" } "@ Invoke-MgGraphRequest -uri "https://graph.microsoft.com/beta/users/$($user.id)/authentication/signInPreferences" -Body $body -Method PATCH } |
Fazit
Die PowerShell-Migration zu Microsoft Graph API verbessert nicht nur die Sicherheit, sondern auch die Effizienz der Skripte und den Zugriff auf moderne Authentifizierungsmethoden. Das Microsoft Graph PowerShell SDK ermöglicht eine flexiblere Verwaltung und optimiert die Automatisierung von komplexen Aufgaben. Mit einem klar strukturierten Ansatz und Best Practices können Administratoren die Migration effizient durchführen und die Sicherheit ihrer Umgebung erheblich steigern.
Mehr über FirstWare IDM-Portal
Das FirstWare IDM-Portal von FirstAttribute ist eine integrierte Lösung für das Identity und Access Management (IAM), die die automatisierte Verwaltung von Nutzern und deren Berechtigungen ermöglicht, egal ob On-Prem oder in der Cloud.
Dieses Portal integriert sämtliche Facetten des Identity- und Access-Managements und ermöglicht einen zentralisierten Zugriff auf Identitäts- und Verzeichnisdienste.