BreakGlassApp
Diese Seite beschreibt einen etwas anderen Weg einen "Notfall-Admin" für einen Microsoft 365 Tenant zu aktivieren, wenn sie den regulären Zugriff als "Global Admin" nicht mehr nutzen können, z.B.: durch falsche Conditional Access-Regeln.
Überlegung
Die Gruppe der "GlobalAdmin" in einem Tenant ist sehr sensibel und die Anzahl der Mitglieder sollte sehr klein sein oder die Rolle idealerweise per PIM und MFA abgesichert sein. Dennoch kann es passieren, dass sie die Zugangsdaten zu allen regulären Global Admins verlieren. Einige Firmen bauen dazu einen "Break Glass Admin", der nie genutzt wird und dessen Zugangsdaten in einem Safe liegen oder auf zwei Personen verteilt sind. Auf dieser Seite möchte ich eine weitere Möglichkeit vorstellen, wie sie einen "legitimen sicheren Hintereingang" bereitstellen können, der auch nicht direkt auffällt.
Ich nutze eine Skript welches sich als Application mit Zertifikat anmeldet und die Rechte hat, die Gruppe "Global Admin" zu verwalten.
Ein Angreifer, der natürlich alle Apps auf ihre Rechte auswertet, wird auch diesen Zugang finden aber hat immer noch nicht das Zertifikat. Ein bösartiger Global Admin, der um die App weiß, kann natürlich auch den Zugang zerstören. Dies ist also keine absolute Funktion und im Extremfall können Sie immer noch über Microsoft gehen und sich als legitimer Besitzer des Tenant ausweisen.
Dieser Weg ist natürlich nur eine Option, wie sie einen bestehenden Benutzer zum GlobalAdmin machen. Es hilft ihnen aber nichts, wenn eine Conditional Access-Regel alle Benutzer ausgesperrt hat. Dann wäre es wohl besser, der App auch die Berechtigungen zu Änderung oder temporäre Abschaltung von Conditional Access-Regeln zu geben.
App einrichten
Sie können all diese Einrichtungen auch per MGGraph PowerShell machen, aber da es sich hier um eine sehr hoch berechtigte App handelt, spricht nichts gegen eine Einrichtung im Entra ID AdminCenter oder AzureAD Portal.
| Aktion | Erledigt |
|---|---|
Neue App RegistrationZuerst gehen wir auf https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps und addieren eine neue App:
Im folgenden Dialog tragen wir einfach nur einen Namen ein: BreakGlassApp ist nur ein Beispiel und vielleicht findet das ein neugieriger Angreifer zu schnell. Sie können natürlich auch einen anderen weniger verdächtigen Namen nutzen. Echte Angreifer haben aber Tools, um genau solche privilegierten Apps zu finden und vielleicht schlägt bei ihnen ein SIEM ja sogar Alarm, wenn Sie diese App im Lauf der Einrichtung noch berechtigen.
Alle anderen Felder bleiben leer. Danach sehen Sie die "Übersicht". Hier müssen wir uns die AppID schon einmal kopieren. Das ist später quasi der "Username" für die Anmeldung.
|
|
App SecretDas spätere PowerShell-Script muss sich mit einer AppID und einem Geheimnis authentifizieren. Fürst erste können Sie hier ein "Client Secret" anfordern, welches maximal 24 Monate gültig ist. Kopieren Sie sich das Kennwort für das spätere Skript.
Wer es etwas sicherer haben will, sollte auf einem Client ein Zertifikat erstellen. Das kann problemlos ein "SelfSigned"-Zertifikat sein, welches man auf eine Smartcard sichert oder als PFX-Datei mit Kennwort dann an einem sicheren Ort lagert. Hier ins Entra ID wird dann nur das Zertifikat ohne PrivateKey hochgeladen. |
|
BerechtigungenZuletzt bekommt das Skript noch die erforderlichen Berechtigungen. Das "User.Read (Delegate)-recht hat er schon, aber brauchen wir nicht. Wichtig sind folgende beiden Berechtigungen, die wir addieren und mit AdminConsent versehen müssen. Microsoft Graph / Directory.Read.All Microsoft Graph / RoleManagement.ReadWrite.Directory Am Ende sollte es wie folgt aussehen:
|
|
Weitere Einstellungen gibt es hier erst einmal nicht.
BreakGlassApp.ps1
Nun brauchen wir nur noch ein Skript, welches wir mit den drei Parametern aufrufen. Ich hoffe, Sie haben sich diese Werte irgendwo gespeichert, ausgedruckt aber schon so gesichert, dass keine fremde Person zugreifen kann.
- TenantID
- AppID
- ClientSecret oder Zertifikat
Vielleicht speichern sie die drei Zugangsdaten in einem Skript, welches dann das eigentlich "BreakGlassApp.ps1" aufruft. Hier mein Beispiel

Das Skript "BreakGlassApp.ps1" selbst ist sehr einfach zu lesen und macht eigentlich nichts als:
- Anmelden per Connect-MGGraph
Dazu muss natürlich die Microsoft MGGraph PowerShell installiert sein - Suche nach dem Benutzer anhand des UPN
Wir brauchen für den nächsten Schritt die "User.id" und nicht den UPM - Aufruf von "New-MgRoleManagementDirectoryRoleAssignment"
Damit wird dann dem User die Rolle zugewiesen.
Dann fehlt ihnen nur noch das Skript
breakglassapp20260626.ps1
Nach dem Download bitte entsperren und die Extension auf PS1
setzen.
Ausgabe
Ich habe bei mir das Skript "msxfaqdev.ps1" aufgerufen, in dem ich alle Parameter hinterlegt habe und nachdem die MGGraph PowerShell endlich geladen war, wurde der Angegebene Benutzer direkt addiert.

Im Entra-ID-Portal konnte ich Sekunden später schon sowohl beim Benutzer als auch in der Rolle die neue Zuweisung sehen:

Natürlich habe ich das Konto hier gleich wieder entfernt.
Meldung mit PIM
Wenn Sie eine entsprechende Benachrichtigung konfiguriert haben, dann sendet ihnen Microsoft 365 auch eine Mail.

Der Einsatz des Skripts bleibt also nicht unbemerkt.
- Konfigurieren der Einstellungen für Microsoft Entra-Rollen in Privileged
Identity Management
https://learn.microsoft.com/de-de/entra/id-governance/privileged-identity-management/pim-how-to-change-default-settings - E-Mail-Benachrichtigungen in PIM
https://learn.microsoft.com/de-de/entra/id-governance/privileged-identity-management/pim-email-notifications
Rolle ist nicht gleich User
Eine Schwachstelle hat dieses Skript aber noch nicht behandelt. Ich kann damit zwar jedes Konto in die Gruppe der globalen Administratoren aufnehmen aber ich muss noch ein funktionierendes Benutzerkonto haben, zudem ich neben dem Anmeldename auch das Kennwort und ggfls. die Conditional Access Regeln, z.B. MFA etc. erfülle. Daher wäre es vielleicht zu überlegen, ob das Skript auch noch einen User anlegen und eine Ausnahme in Conditional Access vornehmen kann.
Zusammenfassung
Es war letztlich viel einfacher, diese Lösung zu bauen, als ich mir das selbst vorgestellt habe. natürlich musste ich wissen, was ich erreichen will und wie ich es erreichen kann. Das Skript "BreakGlassApp.ps1" hat aber Copilot auf meine Anweisungen hin entworfen. Es was natürlich nicht funktionsfähig, denn dass man das ClientSecret erst zu einem SecurePassword und mit der AppId zu einem "System.Management.Automation.PSCredential" konvertieren musste, hat er übersehen und auch der Parameter "-AppID" hat er hartnäckig als "-ClientId" codiert. Auch haben mir die ein oder anderen Ausführungen von Diagnoseausgaben und Code-Formatierung etc. nicht gefallen aber insgesamt dürfte ich schon einiges an Zeit und Recherche gespart haben. Die Suche nach dem Benutzer und Zuweisung der Rollen per MGGraph hat die KI alleine hinbekommen.
- Allerdings behauptet Copilot auch, dass es eine "Echte BreakGlassApp" ist und begründet dies mit folgenden Aussagen:
- Funktioniert ohne Benutzerinteraktion
- Funktioniert auch wenn MFA/SSPR/Conditional Access alles blockiert
- Kann mit Zertifikat betrieben werden (empfohlen)
- Kann in einem isolierten Tenant oder lokal offline gespeichert werden
- Kann in einem Tresor (z. B. KeePass, HashiCorp Vault) liegen
Auf das Angebot das Skript in eine EXE zu verwandeln oder sogar eine GUI darüber zu legen, habe ich dann lieber verzichtet.
Weitere Links
- App Password
- MGGraph PowerShell
- PIM OnPremises
- PIM OnPremises Skript
- PIM/PAM - Least Privileges
- Security Defaults
- Tier 0/1/2 Security ist nicht alles
- PAW – Priviledged Admin Workstation
- Checkliste Security
- Admin Scope
- GDAP - Granular Delegated Admin Privileges
- M365 Admin Mailadresse
- ADSync Softmatch Adminkonten
- Conditional Access
- GMSA - Group Managed Service Account
- SIEM Kurzfassung
-
Use Microsoft Entra groups to manage
role assignments
https://learn.Microsoft.com/en-us/entra/identity/role-based-access-control/groups-concept -
Zuweisen von Microsoft Entra-Rollen zu Benutzerkonten
https://learn.Microsoft.com/de-de/entra/identity/role-based-access-control/manage-roles-portal -
Man kann auch eine Sicherheitsgruppe so konfigurieren, dass
Sie Mitglied einer RoleGroup sein kannAuflisten von Microsoft Entra-Rollenzuweisungen
https://learn.Microsoft.com/de-de/entra/identity/role-based-access-control/view-assignments -
Gruppenverwaltungsberechtigungen für benutzerdefinierte
Microsoft Entra-Rollen
https://learn.Microsoft.com/de-de/entra/identity/role-based-access-control/custom-group-permissions -
Microsoft Graph-Berechtigungsreferenz
https://learn.Microsoft.com/de-de/graph/permissions-reference -
Add directory role member
https://learn.microsoft.com/en-us/graph/api/directoryrole-post-members?view=graph-rest-1.0&tabs=http -
Getting Global Administrators using the Graph
https://blog.ciaops.com/2024/07/27/getting-global-administrators-using-the-graph/ - New-MgRoleManagementDirectoryRoleAssignment
https://learn.Microsoft.com/en-us/powershell/module/Microsoft.graph.identity.governance/new-mgrolemanagementdirectoryroleassignment - Global Customer Service phone numbers
https://support.Microsoft.com/en-us/topic/global-customer-service-phone-numbers-c0389ade-5640-e588-8b0e-28de8afeb3f2
Rufnummern, wenn Sie mit Microsoft Hilfe ihren Tenant wieder bekommen wollen - Register A FIDO2 Key For Your Break Glass Account
https://seanmcavinue.net/2024/08/23/register-a-fido2-key-for-your-break-glass-account/


















