Eine alltägliche Situation für viele Administratoren stellt sich so dar: für die Installation einer Anwendung werden erhöhte Berechtigungen benötigt. Zunächst versucht man vielleicht die Anfrage abzulehnen. Doch dann kommen die Kollegen mit einer „Genehmigung“ des Managements zurück und man vergibt zähneknirschend die Berechtigungen. Dies tut man allerdings unter der Auflage, dass diese nur temporär sind. Aber Hand aufs Herz: nur die sorgfältigsten Admins werden auch später daran denken diese Berechtigungen wieder zu entziehen.
Diesem Problem kann mit temporären Berechtigungen begegnet werden, die sich automatisch wieder löschen. Wie diese mit Active Directory Bordmitteln umgesetzt werden, werde ich in diesem Artikel beschreiben.
Index
Lösungsansatz für temporäre Berechtigungen
Nehmen wir unserem Beispiel einmal an, die Anwendung legt neue Service Connection Points (SCPs) an. Dazu benötigt der Account, mit welchem die Anwendung installiert wird, Domain Admin Berechtigungen. Um temporäre Berechtigungen zu ermöglichen, legen wir eine Gruppe an, welche nach einer vorgegebenen Lebenszeit (TTL) automatisch gelöscht wird. Diese Gruppe könnte z.B. Mitglied der Domain Admins werden. Die Accounts, mit denen die Anwendung installiert wird, werden Mitglied in dieser temporären Gruppe. Nach Ablauf der TTL wird die Gruppe automatisch gelöscht und die Benutzerkonten verlieren die Domain Admin Berechtigungen.
Temporäre Gruppen
Zum besseren Verständnis von temporären Gruppen, hier die wichtigsten Fakten zusammengefasst:
- Temporäre Objekte gibt es in Active Directory seit der Version 2003.
- Sie können nicht mit den gewohnten Active Directory cmdLets angelegt werden, sondern erfordern die Nutzung der ADSI Schnittstelle.
- Die Gruppen werden mit der ObjectClass „dynamicObject“ angelegt, was dazu führt, dass sie durch den Garbage Collection Process (ähnlich wie Tombstone Objects) gelöscht werden.
- Daraus ergibt sich, dass gelöschte temporäre Gruppen, keinen Tombstone haben und somit nicht reaktiviert werden können.
- Bestehende Gruppen können nicht in temporäre umgewandelt werden und umgekehrt ebenfalls nicht.
- Minimale TTL = 15 Minuten
- Maximale TTL = 1 Jahr
Anlegen einer temporären Gruppe
Wie bereits erwähnt, lassen sich temporäre Gruppen über die ADSI Schnittstelle oder einen LDIF Import anlegen. Ich habe hier den Weg über die PowerShell gewählt.
TTL definieren
Die TTL wird in Sekunden angegeben. Für eine komfortablere Eingabe wird Zeit in Minuten angegeben und in Sekunden umgerechnet. In unserem Beispiel soll die TTL 15 Minuten betragen.
1 2 |
[INT]$TTLminutes=15 $TTLSeconds = [int](New-TimeSpan -minutes $TTLminutes).TotalSeconds |
OU Objekt per ADSI verbinden
Um Objekte mit ADSI anzulegen, nutzt man die Methode „.create“ auf dem OU-Objekt. Zunächst muss die OU als Objekt gebunden werden:
1 2 |
$destinationOu="OU=TempGroups,DC=JKDOM,DC=NET" $destinationOuObject = [ADSI]("LDAP://JK-DC01.JKDOM.NET/" + $destinationOu) |
Gruppe anlegen
Da wir eine Gruppe in die Domain Admins Gruppe aufnehmen möchten, müssen wir den Gruppen Typ „Global Group“ auswählen. Domain Local Groups oder Universal Groups lassen sich nicht in Global Groups der gleichen Domain aufnehmen. (Vgl. dazu die Übersicht der möglicher Group Nesting in Windows Domains). In Zeile 3 wird „objectClass = dynamicObject“ gesetzt. Um es deutlicher zu machen, wird in der Description der Zeitpunkt der Löschung eingetragen.
1 2 3 4 5 6 7 8 |
$GroupName="TempDomainAdmin" $TempGroup = $destinationOuObject.Create("group","CN=$GroupName") $TempGroup.PutEx(2,"objectClass",@("dynamicObject","Group")) $TempGroup.Put("entryTTL",$TTLSeconds) $TempGroup.Put("sAMAccountName", $GroupName) $TempGroup.Put("displayName", $GroupName) $TempGroup.Put("description",("Temp Group, will be deleted automatically on " + $RemoveTime.ToShortDateString() +" at "+ $RemoveTime.ToShortTimeString() )) $TempGroup.SetInfo() |
Die fertige Gruppe
Es wurde eine Global Group angelegt, welche am 22.03.2016 um 14:24 Uhr automatisch gelöscht wird.
Sie lässt sich wie gewohnt mit „Active Directory Users and Computers“ verwalten:
Die TTL der Gruppe sieht man im Attribute „entryTTL„, die ObjectClass „dynamicObject“ ist ebenfalls zu erkennen:
Mit einem kleinen Skript kann man den Verlauf der TTL sichtbar machen:
Um 14:25 Uhr wurde die Gruppe bereits durch die Garbage Collection automatisch gelöscht. Das PowerShell Skript kann die Gruppe nicht mehr binden:
Schnellere Alternative
Mit dem IDM-Portal ist es möglich, temporären Berechtigungen mit wenigen Klicks zu erstellen. Diese IT-Routineaufgabe lässt sich auch an andere zu delegieren.
Es wird eine Gruppe ausgewählt und anschließend Start und Endzeitpunkt festgelegt.
Der Rest erfolgt im Hintergrund.
Zusätzlich können Vorgesetzte oder Rechte-Owner temporäre Aktionen genehmigen, wenn es sich um Berechtigungsgruppen handelt
Fazit
Durch den Einsatz von dynamicObjects lassen sich temporäre Berechtigungen in Active Directory mit Bordmittlen realisieren.
Haben Sie Interesse an Active Directory Management? Unsere Consultants unterstützen Sie gerne.
4 Comments
Leave your reply.