Tags: Active Directory, Windows Server 2016, Rechteverwaltung
Das optionale Active-Directory-Feature Privileged Access Management (PAM) unter Server 2016 erlaubt es, Benutzer zeitlich befristet in privilegierte Gruppen aufzunehmen. Es handelt sich dabei um eine Voraussetzung für JIT, welche jedoch hier ohne Bastion-Forest auskommt.
PAM ist ein optionales Feature in Active Directory und erfordert ein Forest Functional Level von Windows Server 2016. Es wird auch für die Einrichtung einer Just-In-Time Administration (JIT) benötigt, welche ich bereits in vorangegangenem Artikel beschrieben habe. Zu diesem Zweck muss man einen zusätzlichen Forest für die administrativen Shadow Accounts zur bestehenden Unternehmensstruktur anlegen, kann somit jedoch unmittelbar seine Sicherheitsstrategien umsetzen ohne diese bestehende Gesamtstruktur anzuheben.
Schutz ohne JIT-Infrastruktur
Das PAM-Feature kann aber auch ohne die komplexe Infrastruktur aus Shadow Principal, Microsoft Identity Manager (MIM) und dedizierten Forest zum Einsatz kommen. Damit lassen sich Benutzer für eine begrenzte Zeit als Mitglieder in eine privilegierte Gruppe wie die der Domänen-Admins aufnehmen. Sie verlieren dann nach Ablauf des eingestellten Zeitfensters (hier: TTL, Time-to-Live) ihren Status wieder.
Als Resultat erhält man eine nicht permanente Zugehörigkeit von Benutzern zu administrativen Gruppen und eine erhöhte Netzwerksicherheit, weil bei Missbrauch derartiger Credentials der Handlungsspielraum zumindest zeitlich eingeschränkt bleibt und verfällt.
Aktivierung von PAM
Wie bereits erwähnt, wird ein Forest Functional Level (FFL oder Gesamtstrukturfunktionsebene) gleich Windows Server 2016 für die Aktivierung des PAM-Features vorausgesetzt.
Eine Verifizierung dieser Bedingung erfolgt mit
(Get-ADForest).ForestMode
an einem Domänencontroller oder beispielsweise über die GUI des AD-Verwaltungscenter.
Ist eine Heraufstufung nötig, kann diese auch mit Hilfe von Active Directory-Domänen und -Vertrauensstellungen (domain.msc) oder dem AD-Verwaltungscenter erfolgen.
Bevor wir nun das Feature aktivieren, frage ich nach der Verfügbarkeit und einer eventuell bereits erfolgten Aktivierung. Ein
Get-ADOptionalFeature -Filter *
liefert uns hier entsprechende Ergebnisse zu den optionalen AD-Features und man erkennt anhand von EnabledScopes, ob es aktiviert wurde. Der LDAP-Scope fehlt in den geschweiften Klammern.
Aktivieren lässt sich PAM dann mit einem Aufruf nach diesem Muster:
Enable-ADOptionalFeature "Privileged Access Management Feature" `
-Scope ForestConfigurationSet -Target domain.lab
Der Vorgang ist nicht reversibel. Das bedeutet, einmal aktiviert, lässt sich das PAM-Feature nicht mehr abschalten.
Time-to-live definieren und Benutzer zu Gruppe hinzufügen
Bevor wir jetzt unseren Benutzer Byrann Zweig temporär für einen Tag Mitglied der Domänen-Admins werden lassen, definiere ich den TTL mit
$ttl = New-TimeSpan -Days 1
und frage den Benutzer über seinen Distinguished Name (DN) ab:
$user = GetADUser "CN=Zweig\, Byrann,OU=ClusterSupport,DC=KUEPPERS-PAM,DC=lab" -Server "AD16-NODE-1"
Da der Benutzername im AD durch ein Komma getrennt ist (Zweig, Byrann), maskiert man es an dieser Stelle mit einem Backslash. Als nächstes halte ich die zukünftige Gruppe ebenfalls in einer Variablen fest
$group = Get-ADGroup "CN=Domänen-Admins,CN=Users,DC=KUEPPERS-PAM,DC=LAB" -Server "AD16-NODE-1"
Abschließend werden alle Daten in folgendem Kommando verarbeitet
Add-ADGroupMember -Identity $group -Members $user -MemberTimeToLive $ttl
Der Benutzer wird demnach privilegiertes Mitglied der vordefinierten Gruppe Domänen-Admins, jedoch nur für einen Tag, erkennbar am TimeSpan -Days 1. Anstelle von Days können hier auch Minutes bzw. Hours oder mit End ein Datum definiert werden. Auch die Verifizierung der Mitgliedschaft auf einem Client unter Windows 10 mit whoami /groups spiegelt eine Membership in den AD-Gruppen wider.
Abfrage nach der Restzeit in einer privilegierten Gruppe
Ob ein Benutzer Mitglied der Domänen-Admins ist, lässt sich leicht herausfinden. Ein Blick auf die GUI sollte die Mitgliedschaften des Benutzers "Zweig" in der Gruppe der Domänen-Admins bestätigen.
Ob es sich um ein temporäres Mitglied handelt und wie lange es in dieser Gruppe noch verbleibt, gibt die grafische Oberfläche nicht zu erkennen. PowerShell jedoch offenbart hier die nötigen Informationen mit:
Get-ADGroup "Domänen-Admins" -Properties Member -ShowMemberTimeToLive
Der TTL-Wert wird anschließend in Sekunden ausgegeben, hier 85.748, also 1429 Minuten (über 23,5 Stunden). Innerhalb dieses Zeitfensters ist Byrann Zweig ein Domänen-Administrator und darf seinen Aufgaben im Scope nachkommen. Mit Ablauf der Restzeit erlischt seine Mitgliedschaft unmittelbar, das Kerberos TGT (Ticket Granting Ticket) wird zurückgesetzt.
Täglich Know-how für IT-Pros mit unserem Newsletter
Marcel Küppers arbeitet seit über 25 Jahren in der IT, aktuell als Team Leader, zuvor als Consultant und Infrastructure Architect unter anderem für den japanischen Konzern JTEKT/TOYODA mit Verantwortung über die Europastandorte Krefeld und Paris.
Darüber hinaus wirkte er als Berater im EU-Projekt-Team für alle Lokationen des Konzerns mit und ist spezialisiert auf hochverfügbare virtualisierte Microsoft-Umgebungen plus Hybrid Cloud Solutions.
Zertifizierungen: MS Specialist und MCTS für Hyper-V/SCVMM, MCSE, MCITP, MCSA. Zusätzlich zertifiziert für PRINCE2 Projektmanagementmethode.
Ähnliche Beiträge
- Just-In-Time Administration (JIT) in Windows Server 2016
- Microsoft Entra ergänzt Azure Active Directory um Berechtigungs-Management und Verified ID
- Gruppen in Azure AD: Security vs. Microsoft 365, dynamische vs. statische
- Rollen in Azure und Azure Active Directory
- Microsoft Exchange: Auflisten von Mitgliedern einer statischen Verteilergruppe verhindern
Weitere Links
1 Kommentar
Vielen Dank für diese hilfreiche Anleitung. Dazu hätte ich noch folgende Frage. Bei der Abfrage mit "Get-ADGroup "Gruppenname" -Properties Member -ShowMemberTimeToLive" werden alle temporären Gruppenmitglieder mit ihrem TTL aufgelistet. Die Ausgabe scheint aber auf eine gewisse Anzahl von Zeichen begrenzt zu sein (in meinem Fall werden nur vier Mitglieder (in zwei Zeilen) angezeigt. Gibt es eine Möglichkeit, den TTL eines Benutzers individuell abzufragen?