Was Active Directory Gruppenverwaltung umfasst, von Gruppenbereichen bis zur täglichen Anfrage
Active Directory Gruppenverwaltung heißt im Kern, zu entscheiden, wer zu welcher Gruppe gehört. Über Gruppen vergibt Active Directory (AD) fast alles, von Berechtigungen auf Dateifreigaben und Anwendungsrollen über Gruppenrichtlinienfilter bis hin zu Microsoft-365-Lizenzen via Microsoft Entra Connect. Microsoft unterscheidet Sicherheitsgruppen, die in Zugriffssteuerungslisten (ACLs) stehen, von Verteilergruppen, die E-Mails verteilen. Außerdem gibt es drei Gruppenbereiche (domänenlokal, global und universal), wie die Referenz zu Sicherheitsgruppen auf Microsoft Learn erklärt. Domänenlokale Gruppen halten Berechtigungen in ihrer eigenen Domäne, globale Gruppen sammeln die Personen einer Domäne, und universale Gruppen erstrecken sich über die ganze Gesamtstruktur.
Gut geführte Verzeichnisse folgen dem AGDLP-Muster (Accounts, globale Gruppen, domänenlokale Gruppen, Permissions) aus der Grafik. Konten kommen in globale Gruppen, die eine Rolle beschreiben, diese kommen in domänenlokale Gruppen, die den Zugriff auf eine Ressource beschreiben, und nur die domänenlokale Gruppe steht auf der Ressource. Was sich jeden Tag ändert, ist die Mitgliedschaft der globalen Gruppen. Ein neuer Kollege braucht die Finance-Freigabe, ein Projekt braucht zwei externe Mitarbeiter in der Gruppe für das Customer Relationship Management (CRM), jemand wechselt das Team. In au2mator ist diese Anfrage ein Formular, das der Teamleiter ausfüllt, kein Ticket.
Warum Anfragen zu Gruppenmitgliedschaften weiter die Ticket-Warteschlange füllen
Active Directory bringt drei Wege mit, damit jemand außer einem Domänenadministrator eine Mitgliedschaft ändern kann, und jeder bleibt hinter dem zurück, was ein Teamleiter braucht. Der erste ist die eingebaute Gruppe Account Operators, die die meisten Benutzer und Gruppen in der Domäne anlegen und ändern kann. Microsoft liefert sie ohne Standardmitglieder aus, und die Referenz zu Sicherheitsgruppen stuft sie als nicht sicher für die Delegierung an Nicht-Dienstadministratoren ein. Ein Teamleiter, der eine Person in eine Gruppe aufnehmen will, gehört dort nicht hinein.
Der zweite ist die Registerkarte Verwaltet von, auf der der Haken Manager kann Mitgliederliste aktualisieren dem Manager Schreibzugriff auf das Attribut member gibt. Das funktioniert, nennt aber nur einen einzigen Manager pro Gruppe, einen Benutzer oder eine Gruppe, ohne Freigabeschritt und ohne Feld, das festhält, warum jemand aufgenommen wurde. Der dritte ist der Assistent Objektverwaltung zuweisen mit der Aufgabe Gruppenmitgliedschaft ändern, angewendet auf eine Organisationseinheit (OU), den AD-Container, in dem die Gruppen liegen. Das skaliert besser, gibt aber weiterhin ein Administratorwerkzeug in die Hände von Nicht-Administratoren, und jede Änderung ist bestenfalls eine Zeile im Sicherheitsereignisprotokoll, ohne Grund, Ticketnummer oder Enddatum.
Das Ergebnis kennst du. Mitgliedschaften werden schnell hinzugefügt und nie entfernt, Gruppen behalten Owner, die das Unternehmen längst verlassen haben, verschachtelte Gruppen gewähren Zugriffe, die niemand mehr nachvollziehen kann, und die vierteljährliche Zugriffsprüfung wird zum Ausgrabungsprojekt. Eine Mitgliedschaftsänderung ist klein, aber sie ist eine Zugriffsentscheidung, und die braucht ein Protokoll darüber, wer gefragt hat, wer freigegeben hat und bis wann. au2mator führt genau dieses Protokoll für jede Änderung, die darüber läuft.
Vier Wege, Gruppenmitgliedschaften im Active Directory zu verwalten
| Ansatz | Wer das AD-Recht hält | Freigabe und Protokoll | Worauf du achten musst |
|---|---|---|---|
| Ticket an die IT, der Administrator bearbeitet die Gruppe | Domänen-Admins, Account Operators oder ein OU-Recht aus dem Assistenten Objektverwaltung zuweisen | Was immer im Ticket steht | Jede Änderung wartet, Entfernungen werden vergessen, der Admin kennt das Team nicht |
| Verwaltet von mit Manager kann Mitgliederliste aktualisieren | Ein Manager pro Gruppe, direkt auf dem Attribut member | Keine, der Manager ändert in Active Directory-Benutzer und -Computer | Keine Freigabe, kein Grund, kein Enddatum, ein Prinzipal pro Gruppe |
| Dein Script plus das au2mator Self-Service Portal | Niemand im Team. Ein Service Account hält Schreibrechte auf den Self-Service-Gruppen und führt das Script auf einer der drei Engines aus, die au2mator unterstützt | Ein Approver oder eine Approver-Gruppe pro Service, Gültigkeit in Tagen als Formularfeld, ein Audit-Eintrag pro Änderung | Du legst weiterhin fest, welche Gruppen Self-Service sind und wem sie gehören |
| Gruppenverwaltungs-Suiten und Identity-Governance-Tools (IGA) | Der Service Account der Suite | Eingebaute Workflows und Attestierungskampagnen | Eine weitere Konsole, Lizenz pro User, oft auf Konzerne mit Tausenden Gruppen ausgelegt |
In der dritten Zeile stellt die Person die Anfrage, die das Team kennt, der von dir gesetzte Approver entscheidet, niemand außerhalb der IT hält ein AD-Recht, und es gibt keine zweite Konsole. Das Script, das die Arbeit auf PowerShell, Azure Automation oder System Center Orchestrator erledigt, ist dasselbe, das deine Administratoren heute schon ausführen.
Die PowerShell hinter einer Mitgliedschaftsänderung
Eine Mitgliedschaftsänderung besteht aus einer Handvoll Cmdlets des ActiveDirectory-Moduls. Get-ADGroup findet die Gruppe und ihren Owner in ManagedBy, Add-ADGroupMember und Remove-ADGroupMember ändern die Mitgliedschaft, Get-ADGroupMember listet sie auf. Der interessante Parameter ist MemberTimeToLive. Mit ihm trägt die Mitgliedschaft ein Ablaufdatum, und Active Directory selbst entfernt das Mitglied, wenn die Zeit um ist. MemberTimeToLive braucht eine Gesamtstrukturfunktionsebene ab Windows Server 2016 und das optionale Feature Privileged Access Management (PAM), das du einmal pro Gesamtstruktur mit Enable-ADOptionalFeature aktivierst. Wie der AD-Papierkorb lässt es sich nicht wieder abschalten, also stimme das mit dem Verantwortlichen für die Gesamtstruktur ab. Ab dann begrenzt ein Domänencontroller auch die Gültigkeitsdauer des Kerberos-Tickets eines Users auf die kürzeste verbleibende Mitgliedschaft, und genau das lässt kurze Ablaufzeiten wirken. Wenn deine Gesamtstruktur noch nicht so weit ist, erledigt eine geplante Entfernung am Enddatum dieselbe Aufgabe. In dem Fall lässt du den MemberTimeToLive-Zweig weg und speicherst das Enddatum in deinem Anfrageprotokoll.
param([string]$UserPrincipalName, [string]$GroupName, [string]$Action, [int]$DaysValid, [string]$TicketId)
$ErrorActionPreference = 'Stop'
# Laeuft auf deiner Engine als der Service Account, der nur auf der Self-Service-OU Schreibrechte hat
$selfServiceOU = 'OU=SelfService,OU=Groups,DC=contoso,DC=com'
$group = Get-ADGroup -Identity $GroupName -Properties ManagedBy, Member
if ($group.DistinguishedName -notlike "*,$selfServiceOU") { throw "$GroupName ist nicht fuer Self-Service freigegeben" }
$user = Get-ADUser -Filter { UserPrincipalName -eq $UserPrincipalName }
if (-not $user -or -not $user.Enabled) { throw "Kein aktiviertes Konto fuer $UserPrincipalName" }
$isMember = $group.Member -contains $user.DistinguishedName
if ($Action -eq 'Add' -and $isMember) { throw "$UserPrincipalName ist bereits Mitglied von $GroupName" }
switch ($Action) {
'Add' {
if ($DaysValid -gt 0) { Add-ADGroupMember -Identity $group -Members $user -MemberTimeToLive (New-TimeSpan -Days $DaysValid) }
else { Add-ADGroupMember -Identity $group -Members $user }
}
'Remove' { Remove-ADGroupMember -Identity $group -Members $user -Confirm:$false }
default { throw "Unbekannte Aktion $Action" }
}
$until = if ($Action -eq 'Add' -and $DaysValid -gt 0) { ", laeuft in $DaysValid Tagen ab" } else { "" }
$owner = if ($group.ManagedBy) { (Get-ADObject $group.ManagedBy).Name } else { 'keiner' }
"Ticket $TicketId, $Action $UserPrincipalName in $GroupName$until, Owner $owner"
Das Script ist mit Absicht klein. Es lehnt jede Gruppe außerhalb der OU ab, die du für Self-Service freigegeben hast, sodass ein Tippfehler im Namen die Domänen-Admins nicht erreichen kann. Es lehnt deaktivierte Konten und doppelte Aufnahmen ab, und es gibt eine Zeile für das Anfrageprotokoll zurück. Der Service Account, der es ausführt, braucht Schreibrechte auf das Attribut member der Gruppen in dieser OU und nichts über den Lesezugriff hinaus, den jedes Domänenkonto hat. Das ist ein einziger Eintrag im Assistenten Objektverwaltung zuweisen statt einer Rolle für jeden Teamleiter.
Wie au2mator Teamleiter Gruppenmitgliedschaften ohne AD-Rechte verwalten lässt
au2mator ist ein Self-Service-Portal vor den Scripts auf deiner Engine. Der Teamleiter füllt ein Formular aus, der Approver, den du am Service hinterlegt hast, typischerweise der Owner dieser Gruppenfamilie, gibt frei, und ein Service Account führt das Script aus. Der Teamleiter meldet sich mit seinem normalen AD-Konto am Portal an und hält nie ein AD-Recht, der Approver öffnet nie eine Konsole, und das Script bleibt, wie es ist.
au2mator liefert keinen Active-Directory-Connector mit und braucht auch keinen. Es bringt fertige PowerShell-Scripts mit, mit denen du starten kannst, oder du registrierst das Script, das du bereits hast. Deine Automatisierung bekommt einen Eingang, eine Freigabe und ein Protokoll.
So sieht ein Service für Gruppenmitgliedschaften in au2mator aus
Der Service ist das Mitgliedschafts-Script von oben, auf der Engine, auf der es bereits läuft. Das Formular zeigt nur, was der Anfragende entscheidet, typischerweise eine User-Suche aus dem Verzeichnis und ein Gruppen-Dropdown, das eine Abfrage füllt, die auf die Self-Service-OU oder ein Namenspräfix begrenzt ist. Dazu kommt ein optionales Feld für die Anzahl Tage, die die Mitgliedschaft gelten soll, das auf den Parameter DaysValid abgebildet wird, sowie eine Ticketnummer oder ein Grund für den Parameter TicketId. Die Berechtigungen legen fest, wer den Service sieht, während die Gruppenabfrage festlegt, welche Gruppen ein Anfragender auswählen kann. Die Freigabe wird pro Service gesetzt, ein Approver oder eine Approver-Gruppe, du baust also einen Service pro Team oder Gruppenfamilie mit dem jeweiligen Owner als Approver, oder keine Freigabe für Verteilergruppen. Für die Ausführung startet au2mator das Script über die API deiner Engine, und das Script meldet sich mit seinem eigenen Service Account an. Der Audit-Eintrag enthält Anfragenden, Approver, Zeitstempel, Formularwerte und Script-Ausgabe, und dein Script kann das Ergebnis an dein Ticketsystem melden. Wenn dein Helpdesk Passwort-Resets schon als au2mator-Services betreibt, ist die Gruppenmitgliedschaft meist der nächste Kandidat mit hohem Volumen.
Gruppen sauber halten durch Owner, ablaufende Mitgliedschaften und Reviews
Personen hinzuzufügen ist die leichte Hälfte. Gruppen werden unordentlich, weil niemand jemanden entfernt, also muss der Prozess das Entfernen zum Standard machen, und drei Gewohnheiten erledigen den Großteil der Arbeit. Jede Self-Service-Gruppe hat einen Owner unter ManagedBy, und dieser Owner, nicht die IT, ist der Approver am Service, der die Gruppe abdeckt. Jede Projektmitgliedschaft bekommt ein Enddatum, durchgesetzt über MemberTimeToLive oder eine geplante Entfernung, damit der Zugriff mit dem Projekt endet. Und jede Leaver-Anfrage entfernt alle direkten Mitgliedschaften in dem Lauf, der das Konto deaktiviert.
Der Schritt, den die meisten Teams auslassen, ist der Review. Ein zweites, zeitgesteuertes Script listet mit Get-ADGroup -ShowMemberTimeToLive die Mitgliedschaften, die in den nächsten zwei Wochen ablaufen, und mailt sie dem Owner, der sie mit einer neuen Anfrage verlängert oder auslaufen lässt. Derselbe Mechanismus erledigt eine vierteljährliche Attestierung einer sensiblen Gruppe. Ablaufende Mitgliedschaften sind außerdem die Basis für Just-in-Time-Adminzugriff, den unser Artikel zur zeitbasierten Gruppenmitgliedschaft im Active Directory ausführlich behandelt.
FAQ: Active Directory Gruppenverwaltung
Sie umfasst das Anlegen von Gruppen, die Wahl von Typ und Bereich, Benennung und Ownership und vor allem die Verwaltung der Mitglieder. Sicherheitsgruppen tragen Berechtigungen über Zugriffssteuerungslisten, Verteilergruppen verteilen E-Mails. Die meiste tägliche Arbeit sind Mitgliedschaftsänderungen in globalen Gruppen, und genau diesen Schritt lohnt es sich, mit einem Anfrageprozess zu automatisieren.
Du nimmst die Person in die Account Operators auf, was viel zu weit geht, oder trägst sie unter Verwaltet von ein und setzt den Haken Manager kann Mitgliederliste aktualisieren, was Schreibzugriff ohne Freigabe und ohne Protokoll gibt. Oder du nutzt den Assistenten Objektverwaltung zuweisen auf einer OU mit der Aufgabe Gruppenmitgliedschaft ändern. au2mator hält die Delegierung auf einem einzigen Service Account und gibt dem Teamleiter stattdessen ein Formular.
Mit der Konsole nicht, weil jeder Weg über die Konsole ein Recht auf der Gruppe braucht. Im au2mator Self-Service Portal füllt der Teamleiter ein Formular aus, der am Service hinterlegte Approver, typischerweise der Gruppen-Owner, gibt frei, und ein Service Account führt dein unverändertes Add-ADGroupMember-Script auf PowerShell, Azure Automation oder System Center Orchestrator aus.
Mit Add-ADGroupMember, der Gruppe als Identity und dem User als Members. Mit Remove-ADGroupMember nimmst du ihn wieder heraus, Get-ADGroupMember listet die Mitglieder. Mit MemberTimeToLive läuft die Mitgliedschaft von selbst ab, dafür brauchst du das optionale Feature Privileged Access Management und eine Gesamtstrukturfunktionsebene ab Windows Server 2016.
Sicherheitsgruppen lassen sich in Zugriffssteuerungslisten eintragen und vergeben damit Berechtigungen auf Freigaben, Anwendungen und Gruppenrichtlinien. Verteilergruppen sind E-Mail-aktivierte Listen ohne Sicherheitsfunktion, sie können nicht in ACLs stehen und keinen Zugriff gewähren. Beide haben einen Bereich, domänenlokal, global oder universal, der festlegt, woher die Mitglieder kommen und wo die Gruppe verwendet werden kann.
Gib jeder Gruppe einen Owner unter ManagedBy, nutze eine Namenskonvention, die Bereich und Zweck zeigt, setze ein Enddatum auf Projektmitgliedschaften, entferne Mitgliedschaften im Leaver-Lauf und prüfe sensible Gruppen regelmäßig mit dem Owner. Ein geplantes Script listet ablaufende Mitgliedschaften und mailt sie dem Owner, der sie mit einer neuen au2mator-Anfrage verlängert. So passiert das Entfernen standardmäßig und nicht aus dem Gedächtnis.
Fazit: Die Gruppenmitgliedschaft ist eine Entscheidung des Teams, keine Aufgabe des Administrators
Active Directory gibt dir das Gruppenmodell, die Cmdlets und sogar ein Ablaufdatum für Mitgliedschaften. Was es dir nicht gibt, ist ein Weg, auf dem die Leute, die das Team kennen, die Änderung ohne Administratorrechte vornehmen. Ein kleines Script setzt deine Regeln um, ein Service Account mit Schreibrechten auf einer OU führt es auf deiner Engine aus, und ein Formular davor lässt den Teamleiter fragen, den Approver entscheiden und das Portal das Protokoll führen.
Wenn du sehen willst, wie aus deinen Tickets zu Gruppenmitgliedschaften freigegebene Self-Service-Anfragen werden, buche ein 30-minütiges Gespräch mit Michael Seidl, Microsoft MVP und Gründer von au2mator, und bring die Gruppe mit, die niemand erklären kann.