Tags: Active Directory, Rechteverwaltung
User, die einen Computer zu einer AD-Domäne hinzufügen, sind automatisch Besitzer des entsprechenden AD-Objekts. Wenn Standardbenutzer das Recht zum Domain Join besitzen, dann ist aus Sicherheitsgründen geboten, die Besitzer der Computer-Objekte nachträglich zu ändern. Das geht über die ADUC-GUI oder per PowerShell.
Microsoft empfiehlt als Best Practice, normalen Benutzern die Berechtigung für den Domain Join zu nehmen. Stattdessen sollte man ihn an Service-Accounts delegieren, deren Berechtigungen auf diese eine Aufgabe beschränkt sind. Damit beseitigt man einen bekannten Angriffsvektor.
Delegiert man den Domain Join erst an spezielle Konten, nachdem die Endbenutzer schon zahlreiche Rechner selbst in die Domäne aufgenommen haben, dann empfiehlt es sich, den Besitzer für diese Computer-Objekte zu ändern.
Das gilt übrigens auch, wenn man bis dato für diesen Zweck einen Domänen-Admin verwendet hat.
Active Directory-Benutzer und Computer
Wenn man in AD-User and Computer (ADUC) die Eigenschaften eines Computer-Objekts öffnet, dann wechselt man zum Reiter Sicherheit und klickt auf Erweitert, um die Berechtigungen und den Besitzer anzuzeigen.
Dort kann man bei Bedarf über den Link Ändern einen neuen Owner eintragen.
In ADUC lassen sich nur die Berechtigungen von einzelnen Objekten bearbeiten. Markiert man mehrere davon, dann zeigt der Dialog Eigenschaften den Reiter Sicherheit nicht an.
Besitzer mit PowerShell anzeigen
Für Bulk-Operationen empfiehlt sich daher der Einsatz von PowerShell. Wenn man sich im ersten Schritt einen Überblick über die Besitzverhältnisse machen möchte, dann bieten sich dafür mehrere Optionen.
Eine Möglichkeit besteht darin, das Attribut nTSecurityDescriptor mit Select-Object aufzudröseln und eine Liste aus Computername und Besitzer auszugeben:
Get-ADComputer -Filter * -properties ntSecurityDescriptor -pv p |
select -ExpandProperty ntSecurityDescriptor |
select @{n="Computer";e={ $p.name }}, @{n="Besitzer";e={ $_.owner }}
Alternativ kann man für jeden Computer mittels Get-ACL den Besitzer auslesen. Bei der Ausgabe mit Format-List schneidet Trimstart() das führende "CN=" bei PSChildName ab:
Get-ADComputer -Filter * |
foreach{Get-Acl -Path "AD:$($_.DistinguishedName)"} |
Format-List @{n="Name";e={$_.PSChildName.Trimstart("CN=")}}, @{n="Besitzer";e={$_.owner}}
Diese Variante hat den Vorteil, dass man damit bereits die ACL-Objekte generiert, die man benötigt, wenn man den Besitzer ändern möchte.
Diese Aufgabe übernimmt das folgende Script:
In diesem Beispiel erhalten alle Computer, deren Namen mit "Win11" beginnen, contoso\djoin als neuen Besitzer.
Zu erwähnen ist hier, dass man für das Konto ein Objekt vom Typ system.security.principal.ntaccount benötigt.
Get-ADuser liefert aber Microsoft.ActiveDirectory.Management.ADUser. Wenn man den Prinzipal mit diesem Cmdlet ermitteln möchte, dann muss man es nach diesem Muster aufrufen:
$user = New-Object System.Security.Principal.SecurityIdentifier (Get-ADUser -Identity "myuser")
Zusammenfassung
Aus Sicherheitsgründen sollte man es nicht den Benutzern der PCs überlassen, diese in eine AD-Domäne aufzunehmen. Hat man dies in der Vergangenheit jedoch zugelassen, dann empfiehlt es sich, den Computer-Objekten einen neuen Besitzer zuzuweisen.
Für einzelne Computer kann man dafür AD-Benutzer und -Computer verwenden. Will man mehrere Objekte ändern und diese über Filter aus dem AD auslesen, dann ist PowerShell das Mittel der Wahl. Set-Acl trägt dabei den neuen Owner ein.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Berechtigungen für Domain Join delegieren
- 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