Tags:
create new tag
, view all tags

Verborgene Contact-Objekte

Ausgangslage

Für das Projekt Kontakt-DB müssen Contact-Objekte für die Allgemeinheit unsichtbar gemacht werden, für Exchange selber aber müssen die Objekte normal funktionieren, d.h. Verteiler, welche diese verborgenen Contact-Objekte enthalten, sollen korrekt ausliefern.

Wenn man die READ Permission auf einem Contact-Objekt für Authenticated Users entfernt, ist der Contact wie gewünscht für normale Benutzer nicht sichtbar, für Exchange aber schon. Leider werden Berechtigungen der übergeordneten OU nicht korrekt weitervererbt, d.h. auch wenn die Berechtigungen in der übergeordneten OU wie beschrieben gesetzt werden, bekommen neue Contact-Objekte automatisch READ-Berechtigung für Authenticated Users gesetzt.

Ein DENY für Authenticated Users würde zwar korrekt auf alle darin enthaltenen Objekte vererbt, hat aber die Folge, das gar kein User mehr diese Contacts mehr sehen kann, weil ein DENY immer die höchste Priorität geniesst und auch alle Domänen Admins zu den Authenticated Users zählen.

Microsoft schlägt vor ein Template-Contact-Objekt zu erstellen, welches die erwünschten Berechtigungen besitzt. In der PowerShell werden dann die Berechtigungen ausgelesen und auf das neu erstellte Contact-Objekt appliziert:

  • PS > Import-Module ActiveDirectory
  • PS > $CONTACT_ACL = Get-ACL "AD:\CN=dummy_hidden_contact,OU=EthHiddenContacts,DC=dt,DC=ethz,DC=ch"
  • PS > Set-Acl -path "AD:\CN=swen.vermeul@gmail.com,OU=EthHiddenContacts,DC=dt,DC=ethz,DC=ch" -AclObject $CONTACT_ACL

In einem produktiven PowerShell-Skript muss darauf geachtet werden, dass $CONTACT_ACL nicht Null ist, sonst kann das Zielobjekt nur noch mit speziellen Werkzeugen entfernt werden.

Implementationsdetails

  • alle zu versteckenden Contact-Objekte werden in eine spezielle OU namens OU=EthHiddenContacts,DC=d,DC=ethz,DC=ch geschrieben
  • diese OU hat für Authenticated Users keine Read-Berechtigung, d.h. es ist weder Allow noch Deny angekreuzt
  • in dieser OU existiert ein Dummy-Contact-Objekt CN=dummy_hidden_contact,OU=EthHiddenContacts,DC=dt,DC=ethz,DC=ch, welches als Template für alle zu erstellenden Contact-Objekte eingesetzt wird
  • dieses Dummy-Objekt hat ebenfalls für Authenticated Users keine Read-Berechtigung, d.h. es ist weder Allow noch Deny angekreuzt
  • ein periodisch ausgeführtes Powershell liest die ACLs aus diesem Dummy-Objekt aus und appliziert es auf die neu erstellten Contact-Objekte (siehe unten)
  • auf den Contact-Objekten wird zusätzlich das Attribut msExchHideFromAddressLists=TRUE gesetzt
  • die Contact-Objekte werden ganz normal zu einem sichtbaren Verteiler hinzugefügt
  • das Admin-Tool muss so angepasst werden, dass diese unsichtbaren Contacts ebenfalls nicht sichtbar sind
  • der Versand an die Verteilerlisten müssen Restricted sein.
  • die Contact-Objekte dürfen die Mail Adresse nicht im DisplayName haben, da der DisplayName über das ADUC/Powershell von Domain Usern ausgelesen werden kann

Aufgabe des ScheduledTask

  • alle zu versteckenden Contact-Objekte auslesen mit adTask=hide
  • ACL des bestehenden Dummy-Hidden-Contact-Objekts auslesen
  • sicherstellen, dass dieses Objekt exisitert und die ausgelesene ACL nicht Null ist
  • diese ACL auf alle zu verbergenden Contact-Objekte applizieren
  • Quittierung in das Attribut adTask schreiben, z.B. hidden on 2013-04-03 oder (bei einem Fehler) hide FAILED!

Aktuelle Implementationsschwierigkeiten

  • wird ein Mail an die Verteilerliste geschickt und ein Delivery Report verlangt, sind sämtliche Mail Adressen der Hidden Contacts sichtbar. Delivery Reports sind für den Empfänger nicht transparent.

-- SwenVermeul - 2013-03-13

Topic revision: r6 - 2013-04-19 - fumathia
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback