GMSGSLAB.DE

Ein Blog über Microsoft Exchange

Einsatz von Address Book Policies in einer Exchange 2010 On-Premise Organisation

Im Projekt kam neulich die Frage auf, wie wir denn mit einfachen Mitteln eine Trennung verschiedener Firmen auf einer Exchange 2010 On-Premise Lösung bereitstellen können. Mit einfachen Mitteln war natürlich gemeint:

  • Geringer Aufwand
  • Geringe Kosten

Nachdem wir bereits Software von Drittanbietern unter die Lupe genommen hatten (großer Aufwand, große Kosten), kam für uns im ersten Schritt nur die Hosting Variante von Exchange 2010 sowie der Einsatz von Adress Book Policies in Frage. Die Entscheidung fiel auf Address Book Policies.

Warum Address Book Policies? Ganz einfach. Der Aufwand ist gering und ein Ergebnis schnell sichtbar (nicht zu vergessen die geringen Kosten). Und ich habe weiterhin die volle Funktionalität von Exchange 2010.

Somit war der Start für einen ersten Test gegeben. In diesem Artikel werde ich nun beschreiben, was nötig ist, um zwei Firmen in einer Exchange 2010 On-Premise Organisation mit ihren eigenen Adressbüchern (GAL, Räume…) zu versehen, so dass es beiden Firmen nicht möglich ist, jeweils die Adressen der anderen Firma einzusehen.

Die in diesem Artikel beschriebenen Schritte sowie die daraus resultierenden Screenshots sind alle in meiner virtuellen Testumgebung durchgeführt / erstellt worden.

 

Dokumentation

Online Dokumentation

http://technet.microsoft.com/en-us/library/hh529948.aspx

 

Ein paar generelle Punkte vorab:

Bei einer Hybrid Lösung, also einer kombinierten Exchange 2010 On-Premise sowie Office 365 Organisation ist das Verwenden von Address Book Policies nicht möglich, da als Resultat das komplette Adressbuch für Benutzer unter Office 365 sichtbar wäre.

Weiter ist zu beachten, dass mittels Address Book Policies keine gesetzliche Trennung von Benutzern durchgeführt wird. Es findet nur eine virtuelle Trennung über verschiedene Adressbuchansichten statt.

Jetzt noch einige Punkte, die in Verbindung mit Address Book Policies beachtet werden sollten:

  • Allen Postfächern, denen eine Address Book Policy zugewiesen werden soll, müssen sich auf einem Exchange 2010 Server mit Service Pack 2 befinden (ABP kamen erst mit Service Pack 2).
  • Lassen Sie die Client Access Server Rolle nicht auf einem Domänencontroller laufen, da ansonsten das Active Directory als Name Service Provider Interface anstelle des Microsoft Exchange Address Book Services verwendet wird und somit wieder alle Postfächer sichtbar wären.
  • Address Book Policies können nicht in Verbindung mit Hierarchical Address Books verwendet werden.
  • Jeder Benutzer, dem eine Address Book Policy zugewiesen wurde, muss sich in „seiner“ Globalen Adressliste befinden.
  • Sollte es Applikation erlaubt sein, das Active Directory über LDAP direkt abzufragen, so werden Address Book Policies umgangen und es könnnen wiederum alle Benutzer eingesehen werden. Vorzuheben sind hier Outlook 2011 / Entourage 2008, da diese über LDAP Abfragen auf das Active Directory zugreifen. Diese Applikation umgehen Address Book Policies, solange ihnen ein Domänencontroller oder Global Catalog Server über Autodiscovery zugewiesen wurde. Outlook 2011 kann Exchange Web Services oder ein lokales Offline Address Buch verwenden um an Verzeichnis Informationen zu gelangen. Sobald aber Outlook 2011 direkt auf LDAP zugreifen kann, versucht es dieses auch.
  • Address Book Policies kommen nicht zur Anwendung, wenn Benutzer von Entourage oder Outlook for Mac mit dem Firmennetzwerk verbunden sind. Wenn sich diese Clients innerhalb des Unternehmens befinden, so verwenden diese Clients immer einen Global Catalog Server, um das Active Directory abzufragen anstelle des Microsoft Exchange Address Book Services.
  • Benutzer, die Outlook für Mac 2011 verwenden und über das Internet zugreifen, können Exchange Web Services oder ein Offline Address Buch verwenden. Als Resultat daraus sehen diese Benutzer die Globale Adressliste basierend auf Address Book Policies.
  • Die Globale Adressliste, die in einer Address Book Policy zur Anwendung kommt, muss mindestens die Adresslisten beinhalten, die in einer Address Book Policy definiert sind (inklusive der Raum Adressliste).

Beim Erstellen von Verteilerlisten is darauf zu achten, dass diese nicht firmenübergreifend konfiguriert werden (Verteilerlisten mit Mitgliedern aus Firma A und B). Sollte dies doch der Fall sein, dann bitte um Beachtung der folgenden Punkte:

  • Wenn Mitglieder von Verteilerlisten Sende / Zustellberichte beim Senden an diese Verteilerlisten anfordern, so ist es ihnen möglich, die E-Mail Adresse der Gruppenmitglieder aus anderen Firmen zu sehen.
  • Beim Senden einer verschlüsselten Nachricht an eine Verteilerliste, in der nicht alle Mitglieder über eine gültige digitale ID verfügen, erhält der Sender eine Warnung mit der Anzahl der Benutzer, die keine gültige digitale ID verfügen sowie deren E-Mail Adressen. Sollte dies nun an eine Verteilerliste gesendet werden, die Mitglieder aus verschiedenen Firmen hat, so wird wieder die Anzahl der Benutzer angezeigt, die keine gültige digitale ID besitzen. Nur diesmal werden keine E-Mail Adressen der Benutzer aus der anderen Firma übermittelt. Das Resultat ist, dass die Anzahl der Benutzer mit der Liste der Benutzer nicht übereinstimmt.
  • Wenn ein Benutzer das Recht hat, über die Shell den Befehl Get-Group abzusetzen, so sieht dieser Benutzer alle Mitglieder dieser Gruppe. Es wird empfohlen, über das Exchange Control Panel die Möglichkeit abzuschalten, Gruppen zu verwalten.
  • Alle Address Book Policies müssen eine Raum Adressliste beinhalten. Auch wenn in der Firma eine Raumliste nicht benötigt wird, ist eine zu erstellen (kann leer gelassen werden).
  • Durch Erstellen von Address Book Policies werden Benutzer in einer Firma nicht daran gehindert, E-Mails an die andere Firma zu senden. Sollte das benötigt werden, dann sollte dies über eine Transportregel sichergestellt werden.
  • Sollten Address Book Policies auch in Lync durchgesetzt werden müssen, so ist das Attribut msRTCSIP-GroupingID bei definierten Benutzern zu setzen (näheres hierzu unter folgendem Link: http://technet.microsoft.com/en-us/library/gg429725.aspx

Folgende Abschnitte werden nun näher beschrieben:

  • Funktionsweise
  • Vorbereitungen
  • Erstellen der Adresslisten
  • Erstellen der Address Book Policies
  • Zuweisen der Address Book Policies
  • Testen der Address Book Policies
  • Zuweisen einer Role Assignment Policy

 

Funktionsweise:

Address Book Polices enthalten mindestens folgende Adresslisten:

  • 1 Globale Adressliste
  • 1 Offline Adressbuch
  • 1 Raumliste
  • 1 oder mehrere Adresslisten

Der Screenshot zeigt die folgenden Bereiche:

  • Address Book Policy „ABP Test Company A“
  • Vorhandene Adressbücher in Exchange Organisation

 

Die Address Book Policy „ABP Test Company A“ beinhaltet einen Teil der in der Organisation vorhandenen Adressbücher (AL01TCA, AL02TCA, ALR01TCA, OABTCA GALTCA). Der Bereich der Address Book Policy ist der gleiche wie die in der Address Book Policy vorhandenen Globalen Adressliste „GALTCA“. Nach Erstellen und Zuweisen der Address Book Policy an den jeweiligen Benutzer hat dieser nur noch die Möglichkeit, die in der Policy vorhandenen Adresslisten einzusehen.

Wann „zieht“ eine Address Book Policy?

Eine Address Book Policy wird immer dann angewendet, wenn sich die Applikation des Benutzers (Outlook, OWApp) mit dem Dienst Microsoft Exchange Address Book auf dem Client Access Server verbindet. Sollte sich eine Policy ändern, reicht es aus, wenn der Benutzer Outlook / OWApp neu startet. Weiterhin besteht die Möglichkeit, den betroffenen Dienst neu zu starten (was man aber normalerweise während des Betriebes nicht machen sollte). Der Vorschlag wäre hier, die Zuweisung der Address Book Policy in den Abendstunden durchzuführen, damit am nächsten Morgen alle Benutzer die neuen Einstellungen zugewiesen bekommen.

 

Vorbereitungen:

Um auch gleich die Trennung der beiden Testfirmen im Active Directory vorzunehmen, habe ich zwei neue Organisationseinheiten erstellt (Test Company A und Test Company B). Pro Firma habe ich jeweils 5 Benutzer sowie eine Verteilerliste erstellt.

Dann bin ich „rüber“ zu Exchange und habe dort die Benutzer mit Postfächern versehen, die Verteilerlisten „mail-enabled“, Dynamische Verteilerlisten, Besprechungsraumpostfächer und Kontakte erstellt sowie Postfächer als Mitglieder von Verteilerlisten eingetragen.

AD-seitig sind die beiden Firmen getrennt (basierend auf verschiedenen Organisationseinheiten), fehlt nur noch die Trennung auf Seiten Exchange. Ich habe mich dafür entschieden, die Trennung basierend auf einem Custom Attribute vorzunehmen (CustomAttribute15). Objekte aus der „Test Company A“ bekamen den Wert „TestCompanyA“ und Objekte aus der „Test Company B“ den Wert „TestCompanyB“ in das Feld eingetragen. Somit hatte ich eine recht einfache Möglichkeit geschaffen, die beiden Firmen voneinander zu trennen. Man darf nur nicht vergessen, diese Anpassung bei neu erstellten Objekten durchzuführen, sonst passiert es, dass Objekte in Adresslisten nicht erscheinen. Ein weiterer Grund war auch, dass dieses Feld (bzw. auch die restlichen 14 Custom Attributes) bei all meinen Testobjekten vorhanden ist.

 

Erstellen der Adresslisten:

Benutzer / Verteilerlisten und Kontakte

Jetzt ist es an der Zeit, die jeweiligen benötigten Adresslisten zu erstellen, damit diese später ihrer Address Book Policy hinzugefügt werden können. Die folgenden Adresslisten werden benötigt:

  •  AL01TCA                   Adressliste 01 Test Company A (Benutzer und Verteilerlisten)
  •  AL02TCA                   Adressliste 02 Test Company A (Kontakte)
  •  AL01TCB                   Adressliste 01 Test Company B (Benutzer und Verteilerlisten)
  •  AL02TCB                   Adressliste 02 Test Company B (Kontakte)

Im folgenden Abschnitt wird nun eine Adressliste für Benutzer / Verteilerlisten und eine Adressliste für Kontakte erstellt. Die weiteren Adresslisten sind analog zu erstellen.

Ich öffne dazu in der Exchange Management Konsole den Assistenten zur Erstellung einer neuen Adressliste, gebe die folgenden Daten ein und klicke auf Next.

  • Name:              AL01TCA
  • Displayname:  Adresslist 01 Test Company A
  • Container:        bleibt unverändert

Ich wähle die OU aus, in der sich die Objekte der Test Company A befinden. Weiterhin wähle ich die Empfängertypen „Users with Exchange mailboxes“ und „Mail-enabled groups“ aus und klicke auf Next.

Unter den Conditions wähle ich das CustomAttribut15 aus und gebe den Wert „TestCompanyA“ ein. Zum Prüfen klicke ich auf Preview. Es sollten alle Postfächer sowie Verteilerlisten der Test Company A angezeigt werden. Ich klicke auf OK und anschließend auf Next.

Ich belasse die vorhandene Einstellung und klicke auf Next.

Ich prüfe die Angaben und klicke auf New.

Ich klicke auf Finish. Die erste Adressliste ist somit erstellt. Weiter geht es nun mit der Adressliste für die Kontakte der Test Company A.

 

Ich öffne erneut den Assistenten, gebe die folgenden Daten ein und klicke auf Next:

  • Name:              AL02TCA
  • Displayname:  Adresslist 02 Test Company A
  • Container:       bleibt unverändert

Ich wähle die OU aus, in der sich die Objekte der Test Company A befinden. Zusätzlich wähle ich den Empfängertyp „Contacts with external email addresses“ aus und klicke auf Next.

Ich wähle unter den Conditions das CustomAttribut15 aus und gebe den Wert „TestCompanyA“ ein. Zum Prüfen klicke ich auf Preview. Es sollten alle Kontakte der Test Company A angezeigt werden. Ich klicke auf OK und anschließend auf Next.

Ich belasse die vorhandenen Einstellungen und klicke auf Next.

Ich prüfe die Angaben und klicke auf New.

Ich klicke auf Finish. Ich habe jetzt die zweite Adressliste erstellt. Jetzt führe ich das Ganze nochmal für die Benutzer / Verteilerlisten sowie Kontakte der Test Company B aus.

 

Besprechungsräume

Als nächstes erstelle ich für jede Test Company eine Adressliste für Besprechungsräume. Auch wenn keine Besprechungsräume vorhanden sind, muss eine Adressliste erstellt werden (bleibt dann einfach leer). Wie bereits zuvor beschrieben, habe ich für jede Test Company bereits ein Besprechungsraumpostfach erstellt. Die Erstellung dieser Adresslisten werde ich zur Abwechslung über die Exchange Management Shell durchführen.

  • ALR01TCA                  Adressliste Besprechungsräume Test Company A
  • ALR01TCB                  Adressliste Besprechungsräume Test Company B

In der Exchange Management Shell erstelle ich zuerst die Adressliste für Besprechungsräume der Test Company A und anschließend die der Test Company B.

New-Addresslist -Name ALR01TCA -DisplayName „Adresslist Room 01 Test Company A“ -RecipientFilter {(Alias -ne $null) -and (CustomAttribute15 -eq „TestCompanyA“) -and (RecipientDisplayType -eq „ConferenceRoomMailbox“) -or (RecipientDisplayType -eq „SyncedConferenceRoomMailbox“)}

New-Addresslist -Name ALR01TCB -DisplayName „Adresslist Room 01 Test Company B“ -RecipientFilter {(Alias -ne $null) -and (CustomAttribute15 -eq „TestCompanyB“) -and (RecipientDisplayType -eq „ConferenceRoomMailbox“) -or (RecipientDisplayType -eq „SyncedConferenceRoomMailbox“)}

 

Globale Adresslisten

Im folgenden Abschnitt erstelle ich die benötigten Globalen Adresslisten für Test Company A und B erstellt. Diese erstelle ich ebenfalls über die Exchange Management Shell (Globale Adresslisten können nur über die Exchange Management Shell erstellt werden).

  • GALTCA                   Globale Adressliste Test Company A
  • GALTCB                   Globale Adressliste Test Company B                                         

Hinweis:

Da ich beide GAL`s mit der Exchange Management Shell erstellen werde, müssen künftige Änderungen ebenfalls mit der Shell durchgeführt werden (über die Konsole können die Eigenschaften nicht geöffnet werden).

New-GlobalAddressList -Name „GALTCA“ -RecipientFilter {(CustomAttribute15 -eq „TestCompanyA“)}

New-GlobalAddressList -Name „GALTCB“ -RecipientFilter {(CustomAttribute15 -eq „TestCompanyB“)}

 

Offline Adressbücher

Als letzte Adressbücher werden die Offline Adressbücher (OAB) für die jeweiligen Test Companies erstellt. Ich verwende beim Erstellen des OAB die Exchange Management Shell, da es über die Konsole nicht möglich ist, zusätzlich erstellte GAL`s hinzuzufügen (diese sind in der Konsole nicht auswählbar). Es besteht nur die Möglichkeit, die bereits vorhandene Standard GAL hinzuzufügen. Also rein in die Exchange Management Shell und folgende Befehle absetzen, um die beiden benötigten OAB`s zu erstellen.

  • OABTCA                  Offline Adressbuch Test Company A
  • OABTCB                  Offline Adressbuch Test Company B

New-OfflineAddressBook -Name „OAB Test Company A“ -AddressLists „GALTCA“

New-OfflineAddressBook -Name „OAB Test Company B“ -AddressLists „GALTCB“

 

Hinweis:

Die beiden OAB`s wurden mit der Exchange Management Shell erstellt, somit sind künftige Änderungen ebenfalls mit der Shell durchzuführen (siehe auch Hinweis auf der Registerkarte AddressLists, wenn man die Eigenschaften des OAB über die Konsole prüft).

 

Nach dem Erstellen der Globalen Adresslisten sowie der Offline Adressbücher ist es sinnvoll, diese zu aktualisieren, damit später in Outlook auch wirklich alle Objekte in den jeweiligen Adressbüchern vorhanden sind (das Update ist pro Adressliste auszuführen).

Für die Globalen Adresslisten:

Update-GlobalAddressList GALTCA / GALTCB

Für die Offline Adressbücher:

Update-OfflineAddressBook „OAB Test Company A“ / „OAB Test Company B“

 

Erstellen der Address Book Policies

Als vorletzten Schritt erstelle ich die benötigten Adress Book Polices. Diesen Schritt führe ich über die Exchange Management Konsole aus. Es wird eine Address Book Policy pro Test Company erstellt. Ich starte den Assistenten zur Erstellung einer neuen Address Book Policy. Hier nun die Daten:

  • Name: ABP Test Company A / ABP Test Company B
  • Global Address List: GALTCA / GAL TCB
  • Offline Address Book: OAB Test Company A / OAB Test Company B
  • Room List: ALR01TCA / ALR01TCB
  • Address Lists: AL01TCA, AL02TCA / AL01TCB, AL02TCB

Nach dem ich die Daten für die Test Company A eingegeben /ausgewählt habe, klicke ich auf New und nach Fertigstellung auf Finish.

 

Zuweisen der Address Book Policies

Abschließend weise ich die neu erstellten Address Book Policies den jeweiligen Postfächern hinzu. Dazu wähle ich über die Exchange Management Shell die Benutzer aus der Test Company A aus und weise diesen die Address Book Policy ABP Test Company A zu. Anschließend führe ich diesen Schritt für die Benutzer der Test Company B durch.

Get-Mailbox | Where {$_.CustomAttribute15 -eq „TestCompanyA“} |Set-Mailbox -AddressBookPolicy „ABP Test Company A“

Get-Mailbox | Where {$_.CustomAttribute15 -eq „TestCompanyB“} | Set-Mailbox -AddressBookPolicy „ABP Test Company B“

 

Ein letzter Befehl noch, um die Zuweisung zu prüfen, und schon kann es mit den Tests losgehen.

Get-Mailbox | Where {$_.CustomAttribute15 -ne „“} | ft Name, addressboo*

 

Testen der Address Book Polices

Ich melde mich an Client 01 mit einem Benutzer aus der Test Company A und an Client 02 mit einem Benutzer aus der Test Company B an und öffne anschließend Outlook. Ich öffne das Adressbuch und prüfe, welche Benutzer auf dem jeweiligen Client sichtbar sind. Wenn alles korrekt gesetzt wurde, dann sollten die folgenden Adressbücher sichtbar sein (jeweils für Benutzer aus Test Company A und Benutzer aus Test Company B):

Global Addresss List (GALTCA / GALTCB)

Benutzer und Verteilerlisten (beinhaltet auch Raumpostfächer, AL01TCA / AL01TCB)

Kontakte (AL02TCA / AL02TCB)

Besprechungsräume (ALR01TCA / ALR01TCB)

 

Zu Beginn habe ich darauf hingewiesen, dass ein Benutzer per Default die Möglichkeit hat, Gruppen über das Exchange Control Panel zu verwalten mit dem Ergebnis, dass ALLE in der Exchange Organisation vorhandenen Verteilerlisten angezeigt werden (Test Company A und B).

Um dies zu vermeiden, muss dem Benutzer das Recht genommen werden, Gruppen zu verwalten. Es gibt hier verschiedene Möglichkeiten, dies durchzuführen:

  • Erstellen einer neuen Role Assignment Policy
  • Anpassen der Default Role Assignment Policy

Ich habe mich für Option 1, das Erstellen einer neuen Role Assignment Policy entschieden. Hier nun die Schritte dazu (bitte beachten, dass dies nicht über die Exchange Management Konsole durchgeführt werden kann). Ich öffne die Exchange Management Shell und gebe folgenden Befehl ein:

New-RoleAssignmentPolicy „No Distribution Group Management“

 

Im nächsten Schritt lese ich die RoleAssignments der Default Role Assignment Policy in die Variable $Roles ein. Im zweiten Schritt lese ich aus der Variable $Roles alle RoleAssignments aus, in denen das Wort „Distribution“ nicht vorkommt und weise diese über den Befehl New-ManagementRoleAssignment der RoleAssignmentPolicy „No Distribution Group Management“ zu.

$Roles = Get-ManagementRoleAssignment -RoleAssignee „Default Role Assignment Policy“

$Roles | Where {$_.Role -NotLike „*Distribution*“} | New-ManagementRoleAssignment -Policy „No Distribution Group Management“

 

Mit folgendem Befehl weise ich die Policy nun den Benutzern zu, so dass diese ab jetzt keine Möglichkeit mehr haben, Gruppen über das Exchange Control Panel zu verwalten.

Get-Mailbox | Where {$_.CustomAttribute15 -eq „TestCompanyA“} | Set-Mailbox -RoleAssignmentPolicy „No Distribution Group Management“

Get-Mailbox | Where {$_.CustomAttribute15 -eq „TestCompanyB“} | Set-Mailbox -RoleAssignmentPolicy „No Distribution Group Management“

 

Ich melde mich jetzt mit einem Benutzer aus der Test Company A sowie einem Benutzer der Test Company B an meinen Clients CL01 / CL02 an, öffne das Exchange Control Panel und sehe, dass die Verwaltungsmöglichkeit für Gruppen nicht mehr vorhanden ist.

Mein Fazit:

Mittels Address Book Policies kan ich mit einfachen Mitteln sehr schnell eine (wenn auch nur auf Ansichtsebene basierende) Trennung von einzelnen Firmen erzielen, die sich innerhalb einer Exchange 2010 SP2 On-Premise Organisation befinden.

, , , ,

Schreibe einen Kommentar