samsam 14 Geschrieben 10. November 2012 Melden Teilen Geschrieben 10. November 2012 Moin, ich weiss, wie kann delegation permission per user finden (mit AdFind, Liza, dsacls, ldp.exe, acldiag). Meine Frage ist, wie kann ich users per delegation permission finden? Ich meine search base delegation permission sein und nicht user name. z.B.: wer kann computer account in ganze AD löschen? Danke Zitieren Link zu diesem Kommentar
samsam 14 Geschrieben 13. November 2012 Autor Melden Teilen Geschrieben 13. November 2012 Moin, ich habe hier mein Antwort gefunden (muss nur Username ändern). Active Directory Berechtigungen dokumentieren (Denniver Reining - MVP) $username = "proftest" Add-Type -AssemblyName System.DirectoryServices.AccountManagement $ct = [system.DirectoryServices.AccountManagement.ContextType]::Domain $user = [system.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ct,$username) $groups = $user.GetAuthorizationGroups() $ADsearcher = New-Object System.DirectoryServices.DirectorySearcher $ADsearcher.Filter = "(objectcategory=OrganizationalUnit)" $allobj = $ADsearcher.findall() foreach ($obj in $allobj) { $permissions = $obj.GetDirectoryEntry().get_ObjectSecurity().Access foreach ($permission in $permissions) { $id = $permission.IdentityReference.tostring().split("\")[1] if ( $id -eq $username) { Write-Host "~~~~~~~~~~~~~~~~~`rObject:" $obj.properties.name "/ " $obj.properties.objectclass "/ " $permission.ObjectType "/ " $permission.inheritedObjectType Write-host $permission.IdentityReference " : " $permission.ActiveDirectoryRights " (" $permission.AccessControlType ")" } foreach ($group in $groups) { if ( $id -eq $group.name) { Write-Host "~~~~~~~~~~~~~~~~~`rObject:" $obj.properties.name "/ " $obj.properties.objectclass "/ "$permission.ObjectType "/ " $permission.inheritedObjectType Write-host $permission.IdentityReference " : " $permission.ActiveDirectoryRights " (" $permission.AccessControlType ")" } } } } MFG Zitieren Link zu diesem Kommentar
Wurzerl 10 Geschrieben 14. November 2012 Melden Teilen Geschrieben 14. November 2012 Danke für die Rückmeldung! :thumb1: Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 15. November 2012 Melden Teilen Geschrieben 15. November 2012 Hi samsam, als weiterführenden Hinweis: Um noch einmal einen Schritt zurück zu machen - die Auswertung schon vergebener Berechtigungen ist im Kern zu spät. Langfristig hat es Sinn über ein Provisionierungssystem nachzudenken, welches Rechte vergibt und die Rollen, Rechte usw. entsprechend im Produkt dokumentiert. Ich weiß, das ist nicht einfach und sehr aufwändig - es steigert die Dienstgüte jedoch massiv und vor allen Dingen aktiv anstatt reaktiv. P.S.: Wenn ich mir das Script anschaue wird scheinbar "nur" die Identität des Benutzers selbst in den ACLs geprüft, nicht seine Gruppenmitgliedschaften. Sofern die Suche vollständig sein soll, müßten zusätzlich die Gruppenmitgliedschaften des Benutzers expandiert und zusätzlich geprüft werden. Viele Grüße olc Zitieren Link zu diesem Kommentar
samsam 14 Geschrieben 17. November 2012 Autor Melden Teilen Geschrieben 17. November 2012 Moin OLC, danke für deine Beschreibung. Vielleicht kannst du mich helfen. Ich benutze Quest AD-PowerShell und diese commands. Zuerst diese: $Deleg=Get-QADObject -SecurityMask Dacl -SizeLimit 0 | Get-QADPermission -Account ('contoso\Ed.price') -UseTokenGroups -Inherited -SchemaDefault Dann diese: $Delega | FT Account,TargetObject,Rights,RightsDisplay -AutoSize Ergebnis zeigt alle delegations rechte. Also, Ed.Price ist mitglied in eine groupe (SecDLGroup), SecDLGroup is mitglied in eine groupe (SecGlobalGroup), SecGlobalGroup hat nur direkte delegation rechte auf eine OU (Delegation). In Ergebnis zeigt dass Ed.Price rechte in diese OU hat (zeigt SecGlobalGroup). Meine frage ist, wie kann ich in Ergbnis zeigen, wenn eine Groupe zeigt, zeig auch alle mitglied von die Groupe und weiter Groupe. Danke MFG Zitieren Link zu diesem Kommentar
samsam 14 Geschrieben 17. November 2012 Autor Melden Teilen Geschrieben 17. November 2012 Ach sorry OLC, ich habe vergssen zu sagen. was ich zeigen lassen möchte, in diese command ist: $Deleg=Get-QADObject "contoso.com/Delegation" -SecurityMask Dacl -SizeLimit 0 | Get-QADPermission -UseTokenGroups -Inherited -SchemaDefault $Delega | FT Account,TargetObject,Rights,RightsDisplay -AutoSize Jetzt in Ergebnis möchte alle Groupe mit mitglied auch gezeigt werden. Vielen Dank MFG Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 18. November 2012 Melden Teilen Geschrieben 18. November 2012 Hi samsam, ich hab mir das Script oben noch einmal angeschaut - und mir ist aufgefallen, daß die Grupenmitgliedschaften des Benutzers doch mit in die Analyse einbezogen werden: "$groups = $user.GetAuthorizationGroups()" --> Sorry für die Falschmeldung oben. Nichtsdestotrotz noch einmal der Hinweis, daß das Konzept die Berechtigungen "nachträglich" zu prüfen zu kurz greift. Siehe meine Hinweise dazu oben. Deine Anforderung, auch Gruppen und deren Gruppenmitgliedschaften (verschachtelt) mit in die Ausgabe zu legen, ist meines Erachtens nur über Sub-Abfragen in den Statements möglich. Du müßtest Dir mit Hilfe von Hashtables eigene PS-Objekte bauen, um alle Infos "nebeneinander" in einer Tabelle darstellen zu können. Viele Grüße olc Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.