dietmarhennecke
Goto Top

Frage: Wie werden einzelne AD-Attribute zur Bearbeitung über AD-Gruppe berechtigt

Hallo zusammen,

ich möchte vom Personalbüro und/oder anderen Usern ohne Adminrecht AD-Adressdaten korrigieren lassen.
Hierzu habe ich das sehr schöne Script von Nils Kaczenski (http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbe ..) angepasst.
Die User die diese Daten mit og. Script bearbeiten werden wechseln häufiger, deshalb Rechte via Gruppenberechtigung.
Wenn ich der AD-Gruppe, in der diese User sind, AdminRechte gebe funktioniert alles. ;-(((

Ich möchte aber, dass die User der Gruppe nur auf einige definierte Attribute der AD Schreibrechte haben zB. (displayName, givenName, sn, physicalDeliveryOfficeName, department, pager ...)

1. Ich als "Mausschubser" kann leider nicht alle Attribute in den Eigenschaften der Gruppe>Sicherheit> Attribut-Editor finden.
Wie kann ich alle Attribute dort anzeigen und welche Werte müssten dann dort eingetragen werden (derzeit steht bei den Attributen die dort angezeigt werden <Nicht festgelegt>) ?


2. Aus der Not heraus habe ich versucht mich mit "dsacls" anzufreunden ... bin aber mehr als unsicher, auch, weil ich keine Testumgebung habe.

ich habe hierzu das Scriptbeispiel angepasst ...
(die OU "TEST_OU_HEN" liegt direkt unter der Domain, die Gruppe in dieser OU heißt "AD-Adressbearbeitung"


set OURoot="OU=TEST_OU_HEN,DC=domain-name,DC=local"
set GRUPPE=domain-name\AD-Adressbearbeitung
set RECHTE=RPWP

dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;displayName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;givenName;user
dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;sn;user
...

leider funktioniert das so nicht. Die User in der Gruppe "AD-Adressbearbeitung" bekommen NICHT das Recht die Attribute zu schreiben.

Was muss ich am Script anpassen?
Oder wie kann ich als Mausschubser die Gruppe / alle Attributesichtbar machen und berechtigen?


MfG
Dietmar

Content-ID: 242483

Url: https://administrator.de/forum/frage-wie-werden-einzelne-ad-attribute-zur-bearbeitung-ueber-ad-gruppe-berechtigt-242483.html

Ausgedruckt am: 22.12.2024 um 19:12 Uhr

colinardo
Lösung colinardo 02.07.2014 aktualisiert um 13:17:45 Uhr
Goto Top
Hallo Dietmar,
Stichwort: Delegation
Berechtigungen für ein Attribut eines Users setzen
Dazu passend eine Anleitung zum Erstellen einer passenden Oberfläche für die delegierten User:
Erstellen von benutzerdefinierten MMC-Konsolen für delegierte Aufgaben im Active Directory

Grüße Uwe
DietmarHennecke
DietmarHennecke 02.07.2014 um 14:27:30 Uhr
Goto Top
Hallo Uwe,

danke für deine Links ... Habe die Anleitung durchgeklickt (bei uns allerdings in deutsch / Domainstruktur 2003), habe div Übersetzungsmöglichkeiten für "Write Title" ausprobiert, hat aber leider keinerlei Auswirkungen (User in der Gruppe kann Attribute nicht ändern). Wenn ich die Gruppe AD-Adressbearbeitung der Gruppe Administratoren zuordne funktioniert es.

Grüße
Dietmar
colinardo
colinardo 02.07.2014 aktualisiert um 14:49:34 Uhr
Goto Top
Zitat von @DietmarHennecke:
Übersetzungsmöglichkeiten für "Write Title" ausprobiert, hat aber leider keinerlei Auswirkungen (User in
naja ein bißchen nachdenken solltes du hier schon und nicht blind das gleiche wie in der Anleitung machen, das war nur ein Beispiel für ein einzelnes Attribut 'Titel'. Hier musst du natürlich die gewünschten zu änderbaren Attribute wählen die der Nutzer ändern können soll ...
DietmarHennecke
DietmarHennecke 02.07.2014 um 15:15:38 Uhr
Goto Top
Hallo Uwe,

habe natürlich nicht nur "Write Title" ausprobiert ... Ich habe div. allgemeine zB. "Erstellen,entfernen und verwalten von Benutzerkonten"
und /oder eigenschaftenspezifische Berechtigungen hinzugefügt
(Lesen, Schreiben und Alle Eigenschaften lesen, Alle Eigenschaften schreiben) hinzugefügt, nur Vollzugriff nicht.

Immer ohne Erfolg

Gruß
Dietmar
colinardo
colinardo 02.07.2014 um 15:37:20 Uhr
Goto Top
na dann wäre es mal angebracht mehr Details über deine Umgebung zu erzählen:
Welches Server OS ? Wie bzw. wo versuchen die User die Attribute zu ändern ? Haben diese sich zwischenzeitlich mal abgemeldet während du die Berechtigungen delegierst ?

Läuft hier einwandfrei ...
DietmarHennecke
DietmarHennecke 02.07.2014 um 16:06:17 Uhr
Goto Top
Hallo Uwe,

- 3x Domänencontroller (1x W2K3, 2x W2k8 R2) , demnach Domänenfunktionsebene 2003 ( ich bastel und teste direkt auf einem W2k8 R2)

- ich versuche das mit dem .hta Script von Nils Kaczenski (http://www.faq-o-matic.net/2008/06/23/ad-adressen-im-sekretariat-bearbe) ...) und wie gesagt funktioniert dieses Srcipt mit Testuser und Adminrechten, das heißt mein Testuser kann die AD-Attribute ändern und noch zuvieles mehr ;-(((

- habe einen Testuser, den ich nach Änderung der Delegierung/Rechte der immer wieder neu anmelde.

Mittlerweile habe ich auch schon das dsacls-Script getestet, leider auch ohne Änderung der Rechte an der Gruppe

LG
Dietmar
colinardo
Lösung colinardo 02.07.2014, aktualisiert am 13.02.2023 um 16:55:29 Uhr
Goto Top
Wurde die Delegation auf den richtigen Container (OU) (in dem sich die User befinden welche bearbeitet werden sollen) vorgenommen? Wurde bei der Delegation angegeben welche Objekttypen bearbeitet werden dürfen (Benutzerobjekte) ?. Wurde die AD Replication zwischen den DCs abgewartet bzw. sind alle DCs synchron ? Wenn du schon viel ausprobiert hast, hast du dir eventuell die Berechtigungen zerschossen.

Demo: delegate_control.mp4 (In der Demo werden alle Attribute freigegeben, aber das Freigeben einzelner Attribute ist genauso problemlos möglich.)

Gibt auch diverse Anleitungen dazu:

p.s. wenn Ihr einen Exchange habt reicht auch folgender Befehl Powershell-Befehl in einer EMS um die nötigen Berechtigungen für eine Gruppe auf eine OU und deren "Benutzerobjekte" festzulegen:
(Das sind alle nötigen Berechtigungen für die Standardausführung des HTA-Applets also alle Eigenschaften die Defaultmäßig angezeigt werden lassen sich dann bearbeiten)
Add-ADPermission -Identity "OU=TestOU,dc=domain,dc=local" -User GRUPPEXYZ -AccessRights WriteProperty,ReadProperty -Properties displayName,givenName,sn,company,physicalDeliveryOfficeName,department,streetAddress,postalcode,l,telephonenumber,mobile,facsimileTelephoneNumber -InheritedObjectType User -InheritanceType Descendents

Der entsprechende Batch-Code für dsacls lautet wie folgt:
@echo off & setlocal
set OURoot="OU=TEST_OU_HEN,DC=domain-name,DC=local"  
set GRUPPE=domain-name\AD-Adressbearbeitung
set RECHTE=RPWP
set attributes=displayName givenName sn company physicalDeliveryOfficeName department streetAddress postalcode l telephonenumber mobile facsimileTelephoneNumber
for %%a in (%attributes%) DO @(
  dsacls %OURoot% /I:T /G %GRUPPE%:%RECHTE%;%%a;user
)

Mit der reinen Powershell und ohne Exchange-Tools kann man sich einer meiner Funktionen behelfen (ActiveDirectory-Module Voraussetzung)

function Delegate-ADProperty {
    param(
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][ValidateScript({Get-ACL "AD:$_"})][string]$ObjectDN,  
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][System.Security.Principal.IdentityReference]$Account,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string[]]$Attributes,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$InheritingObjects,
        [Parameter()][System.DirectoryServices.ActiveDirectorySecurityInheritance]$InheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance]::Descendents,
        [Parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$AccessRights,
        [Parameter()][ValidateSet("Allow","Deny")][string]$AccessControlType = "Allow"  

    )
    # check class GUID of inheriting objects
    $GUID_CLASS = (Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter "ldapDisplayName -eq '$InheritingObjects' -and objectClass -eq 'classSchema'" -Properties schemaIDGUID).schemaIDGUID -as [guid]  
    if ($GUID_CLASS -eq $null){
        Write-Error -Message "Inheriting Object Class Name '$InheritingObjects' could not be found." -Category InvalidArgument  
        return
    }
    
    # check attribute existance
    $schemacontext = (Get-ADRootDSE).schemaNamingContext
    # get acl of AD object
    $acl = Get-ACL "AD:$ObjectDN"  

    foreach($attribute in $attributes){
        try{
            # get # get attribute GUID
            $GUID_ATTRIBUTE = (Get-ADObject -SearchBase $schemacontext -Filter "ldapDisplayName -eq '$attribute' -and objectClass -eq 'attributeSchema'" -Properties schemaIDGUID).schemaIDGUID -as [guid]  
            if ($GUID_ATTRIBUTE -eq $null){
                throw "Attribute '$attribute' could not be found."  
            }
            # create AccesRule
            $rule = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($Account,$AccessRights,$AccessControlType,$GUID_ATTRIBUTE,$inheritanceType,$GUID_CLASS) -EA Stop
            # Add rule to acl
            $acl.AddAccessRule($rule)
            $rule
        }catch{
            write-error -Message $_.Exception.Message
        }
    }
    # save acl to object
    Set-ACL "AD:$ObjectDN" $acl  
}
Welche sich dann wie folgt benutzen lässt
Delegate-ADProperty -ObjectDN 'OU=Verwaltung,DC=domain,dc=tld' -Account ([System.Security.Principal.NTAccount]"Max.Muster") -Attributes 'displayName','givenName','sn' -InheritingObjects 'user' -AccessRights "ReadProperty,WriteProperty"  -InheritanceType Descendents  

Das wurde hier an zwei Domains getestet und funktioniert einwandfrei, ansonsten habt Ihr etwas falsch konfiguriert. Was bei euch falsch läuft kann ich hier leider ohne entsprechende Infos nicht sagen.

Viel Erfolg
Grüße Uwe

p.s. eine Liste aller Attribute findest du hier: http://www.selfadsi.org/user-attributes.htm
DietmarHennecke
DietmarHennecke 03.07.2014 um 08:26:49 Uhr
Goto Top
Hallo Uwe,

danke für deine ausführlichen Tipps und Infos ... Ich glaube mittlerweile auch, dass da was "falsch konfiguriert" ist, da keine delegierten Rechte übernommen werden.
Ich habe nun erstmal div. "Hausarbeiten" zu erledigen

Danke