desmondjames
Goto Top

Exchange 2013 - Seperierte Adresslisten für Abteilungen

Hallo Community,

ich bin aktuell Abteilungen in Sachen Adresslisten am trennen. Mir geht es nicht darum einzelne Mitglieder auszuschließen aus der Adressliste sondern Adresslisten völlig zu verstecken.

Bisher lasse ich via Script die Mitglieder in einer OU (OU_Abteilung A) der dazugehörigen Gruppe (Gruppe_Abteilung_A) automatisch zuordnen und entferne dann via ADSI Editor die Rechte für alle anderen Gruppen diese zu lesen/öffnen. Das funktioniert so auch nur bekommen Nutzer wenn sie im Outlook bei einer neuen E-Mail AN anklicken alle Adresslisten aufgelistet und eine Fehlermeldung beim anklicken einer Liste auf die der Nutzer keine Rechte hat.

Ich würde es gerne so einrichten, dass der Nutzer auch nur seine Adresslisten sieht denen er angehört, weil es eine strikte Trennung der Standorte gibt.

Gibt es da eine Möglichkeit dies via PowerShell einzurichten oder die Adressliste anders anzulegen?
Aktuell liegen diese Adresslisten unter "CN=All Address Lists" unter dem ich aber nicht die Rechte entfernen kann, dass alle Nutzer den Inhalt sehen können..

Danke bereits für eure Hilfe!!
outlook2016-an-feld
adsi editor

Content-Key: 321146

Url: https://administrator.de/contentid/321146

Printed on: April 27, 2024 at 01:04 o'clock

Mitglied: 131381
131381 Nov 16, 2016 updated at 12:29:21 (UTC)
Goto Top
Hi,
du musst nur in der ACL der jeweiligen Adressliste die Vererbung deaktivieren und die Authentifizierten Benutzer aus der Liste nehmen. Dann noch deine gewünschte Gruppe mit "Read, Open Address List" Rechten eintragen, fertig.

Wenn ich das mache sieht der User der keine Rechte hat diese Adressliste auch nicht, ohne irgendeine Fehlermeldung.
Natürlich solltest du das Offline-Adressbuch aktualisieren, wenn du hier Änderungen vornimmst.

Gruß
Member: colinardo
Solution colinardo Nov 16, 2016, updated at Mar 14, 2017 at 08:55:55 (UTC)
Goto Top
Servus @desmondjames, willkommen auf Administrator.de!

Ganz so trivial wie @131381 das hier schildert ist das nicht! Es sind einige größere Änderungen im AD für das Vorhaben nötig. Es ist definitiv kein Ding für Anfänger!

Ich habe so was schon einmal umgesetzt. Dazu ist es zuerst einmal nötig den sogenannten List Object Mode im Forest mit Enterprise-Rechten im Node cn=Directory Service,cn=Windows NT,cn=Services,cn=Configuration,dc=ForestRootDomain zu aktiveren.

Wie das detailliert geht und was die Einstellung bewirkt steht hier genau beschrieben (Abschnitt: Enabling List Object Mode).

Dann muss im CN=All Address Lists-Container die Vererbung unterbrochen und für die Authentifizierten Benutzer bei zwei Regeln das Häkchen bei Inhalt auflisten entfernt werden. Das bewirkt dann das nur noch Objekte aufgelistet werden auf welchen der User bzw. Gruppe in den untergeordneten Adresslisten ein Objekt auflisten Recht hat.

Zusätzliche muss jetzt jede für jede Adressliste im Container die Vererbung unterbrochen werden, die Authentifizierten Benutzer entfernt werden und nur der entsprechenden Gruppe das Lese-Recht und Adressbuch auflisten Recht vergeben werden.
Ich hatte für diesen speziellen Part der Rechtezuordnung mal ein PS-Script geschrieben was das automatisiert, in dem man die Adresslisten zu den Gruppen zuordnet. Die Zuordnung findet darin mit einer Hashtable statt, welche du an deine Adresslisten und Gruppen anpassen musst.
(Script auszuführen in einer Exchange Management Shell)
<#
    Gruppen gezielt expliziten Zugriff auf bestimmte Exchange-Adresslisten geben
#>

Import-Module ActiveDirectory

# Hier die Zuordnung der Listen zu den Gruppen vornehmen
$addresslist_mapping = @{
    'ListeA' = 'DOMAIN\Gruppe_Abteilung_A'  
    'ListeB' = 'DOMAIN\Gruppe_Abteilung_B'  
}

$addresslist_mapping.GetEnumerator() | %{
    write-host "Berechtige AD-Account '$($_.Value)' auf Adressliste '$($_.Key)'." -ForegroundColor Green  
    # hole Adresslistenobjekt
    $liste = Get-AddressList $_.Key
    # Deaktiviere die Vererbung wenn Vererbung noch nicht unterbrochen ist.
    $acl = Get-Acl "AD:$($liste.DistinguishedName)"  
    if (!$acl.AreAccessRulesProtected){
        $acl.SetAccessRuleProtection($true,$true)
        Set-ACL "AD:$($liste.DistinguishedName)" $acl  
        # non canonical fix (reorder acl's)  
        dsacls $liste.DistinguishedName /p:y | out-null
    }

    $acl = Get-Acl "AD:$($liste.DistinguishedName)"  
    # Entferne Authentifizierte Benutzer Regeln
    $acl.RemoveAccess([System.Security.Principal.SecurityIdentifier]'S-1-5-11',0)  
    
    # Füge Gruppenberechtigung hinzu
    $account = new-object System.Security.Principal.NTAccount($_.Value)
    $ruleReadList = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($account,'ExtendedRight',0,'a1990816-4298-11d1-ade2-00c04fd8d5cd',0)  
    $ruleReadObject = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ($account,'GenericRead',0,0)  
    $acl.AddAccessRule($ruleReadList) | out-null
    $acl.AddAccessRule($ruleReadObject) | out-null
    # Schreibe ACL
    Set-ACL "AD:$($liste.DistinguishedName)" $acl | out-null  
}
Wie gesagt die Berechtigungen für den Container CN=All Address Lists musst du erst manuell vornehmen.

Da dies aber erst mal Vorabeiten am Forest voraussetzt, bitte ich dich dich erst mal penibelst in die Materie einzulesen. Denn wenn du das Rechteschema des AD nicht komplett verstehst kannst du dir da schnell mal was im AD zerschießen.

Und noch was:

Falls du das testen solltest. Bitte bei jeder Änderung der Berechtigung im AD das Outlook des Clients vorher schließen und dann neu öffnen, sonst sind die Änderungen im Adressbuch nicht sofort sichtbar!

Grüße Uwe
Mitglied: 131381
131381 Nov 16, 2016 updated at 18:07:56 (UTC)
Goto Top
@colinardo Stimmt, ich hatte das nur mit OWA gecheckt, dort ist es so das nur die aufgelistet werden in welchen der User tatsächlich Rechte bekommt. Unter Outlook werden die Adresslisten wohl anders aufgelistet. Da wird das greifen was du geschildert hast... nicht schlecht Herr Specht, Danke für die detaillierte Schilderung face-smile.
Das ist doch mal was für einen Test an einem verregneten Wochenende face-wink
Member: desmondjames
desmondjames Nov 18, 2016 at 14:43:43 (UTC)
Goto Top
Hey! face-smile

Das Script tut zwar noch nicht ganz aber der List Object Mode hat das ganze gelöst.

Vielen Dank!!
Mitglied: 131381
131381 Nov 18, 2016 updated at 15:08:13 (UTC)
Goto Top
^^Zitat von @desmondjames:

Das Script tut zwar noch nicht ganz aber der List Object Mode hat das ganze gelöst.
Hey ho, hier geht's im Test einwandfrei. Mit "geht nicht" kann keiner was anfangen...