Verteiler und ManagedBy

Die hier beschriebene Einschränkung betrifft nur die EMC von Exchange 2010 SP1 bis RU2. In Exchange 2010 RU3 wuwrde der Fehler korrigiert, so dass Sie nun nur noch die PowerShell-Kommandozeile eventuell erweitern müssen.

Exchange nutzt Windows Sicherheitsgruppen als Mailverteiler. Seit den frühen Exchange Versionen konnten dabei Anwender auch die Verteiler in Grenzen selbst verwalten. Sie mussten dem Anwender nur die entsprechenden Berechtigungen im Active Directory geben und schon konnten diese Anwender z.B. die Mitgliedschaften selbst pflegen. Dies wurde über Active Directory Berechtigungen gelöst.

Mit Exchange 2010 erfolgt die Administration allerding nun per RBAC, so dass zumindest die Verwaltung per PowerShell, Exchange Management Console oder Exchange Control Panel nicht mehr auf den AD-Berechtigungen basiert, sondern auf dem Rollen-Konzept von RBAC. Die Änderungen am Active Directory werden dann durch den Exchange Server mit den  Berechtigungen des "Exchange Trusted Subsystem" ausgeführt."

Die Erwartung

Nun geht man ja erst mal davon aus, dass die Standardeinstellungen von Exchange eine sinnvolle Arbeit mit diesen Rollen zulassen. Aber genau das ist erst mal nicht der Fall:

  • Verwaltung durch den Anwender
    Dies ist erschwert, da es in Exchange 2010 noch keine administrative Rolle gibt, womit der Anwender "seine" Verteiler denn auch verwalten kann. Hier gibt es aber Abhilfe in Form eines PowerShell-Scripts, welches die Rolle anlegt. Alternativ können Sie natürlich auch die Standardrolle um dieses Recht erweitern
    (Siehe auch How to Manage Groups that I already own in Exchange 2010 auf http://blogs.technet.com/b/exchange/archive/2009/11/18/3408844.aspx)
  • Verwaltung durch "Organisation Administrators" und "Recipient Administrators"
    In der Exchange Hilfe steht, dass für die Verwaltung von Verteilern einer der beiden administrativen Rollen ausreichend wären. Aber auch dem ist nichts so. Die Fehlermeldung ist eindeutig:
--------------------------------------------------------
Microsoft Exchange Error
--------------------------------------------------------
The following error(s) occurred while saving changes:

Set-DistributionGroup Failed
Error: You don't have sufficient permissions. This operation can only 
be performed by a manager of the group.

Anhand dieser "Probleme" öffne ich die Tür in die Hintergründe der "Manager"-Funktion bei Verteilerlisten

Schritt für Schritt zum Ziel

Wer schon länger mit dem Active Directory unterwegs ist, kennt zum einen die Karteikarte "Managed by" bei den Gruppen als auch das dahinter verborgene Feld "ManagedBy". Das Feld ist erst mal leer

Bis Exchange 2007 wurde auch hierüber gesteuert, wer die Mitgliedschaften der Gruppe pflegen kann, zumindest wenn die Checkbox aktiviert wurde, damit auch die ACLs im Hintergrund ergänzt wurden.

Schaut man sich die gleiche Gruppe, die schon ein Verteiler ist, in der Exchange Management Console an, dann stimmt das Bild noch.

Nun bin ich ja als "Administrator" angemeldet, welcher zugleich auch in der Gruppe der "Exchange Organization Administratoren" ist und zudem auch noch "Recipient Operator". Also möchte ich einfach die Verwaltung delegieren und addiere eine Person. Das erste was hier auffällt, dass nur Mailbox-User und Mail-User addiert werden können

Es ist in Exchange nicht möglich, eine Gruppe zu addieren. Ich erkläre mir dass so, dass es für die ECP sehr aufwändig wäre, die Verteiler  zu ermitteln, die eine bestimmte Person verwalten darf. Genau genommen müsste diese ja von allen Verteilern die Manager lesen und Gruppen auch noch rekursiv auflösen. Oder sie sucht alle Gruppen für den Benutzer und sucht dann in allen Verteilen nach allen Gruppen.

Letztlich ist dies aber eine Vorgabe, die nicht zu ändern ist. Also addiere ich einen Benutzer und möchte diese Änderungen übernehmen. Zur Überraschung wird dies mit einem Fehler quittiert.

Obwohl ich also umfangreiche Rechte und vor allem auch Mitglied in den entsprechenden RBAC-Rollen bin, kann ich diese einfache Änderung nicht durchführen. Die Fehlermeldung führt schon mal darauf hin, dass die Exchange Commandlets einfach prüfen, ob die ausführende Person ein Manager ist und das Feld ist ja bislang noch leer. Also wieder zurück zur MMC für User&Computer und hier den Manager gepflegt. Nun habe ich einfach die Exchange Organization Administratoren addiert. Hier kann ich ja eine Gruppe addieren.

Die Änderung wird im Active Directory natürlich durchgeführt:

Identity : CN=grp1,OU=msxfaq,DC=E2010,DC=local
Action   : Modify
Field    : managedby;range=0-0
Value    : CN=Exchange Organization Administrators,OU=Microsoft Exchange Security Groups,DC=E2010,DC=local

Schaut man sich dann die gleiche Gruppe wieder in der ESM an, dann ist die Gruppe ersichtlich, aber mit einem roten X.

Die ESM liest also das gleiche Feld aus aber kennzeichnet es. Wenn ich nun aber eine weitere Person addiere, dann kann ich dies immer noch nicht machen , d.h. RBAC unterstützt nicht die Verwendung von Gruppen. Das haben wir ja aber schon vermutet. Wir bemühen also erneut die alte MMC, um diesmal den Administrator als "Manager" zu addieren.

Die Checkbox "Manager can Update membership list" setze ich absichtlich nicht. Zum einen braucht dies der Administrator nicht, da er eh die Berechtigungen hat und zum anderen sind diese Berechtigungen sowieso irrelevant beim Einsatz von RBAC. In der ESM wird nun auch der Administrator sauber angezeigt, zumal er auch ein Postfach hat:

Und nun kann ich auch als Administrator die weiteren Manager pflegen. Das addieren eines Benutzers "Sales1" geht ohne Probleme:

Natürlich mache ich so eine Änderung nicht ohne auch die LDAP-Felder im Blick zu haben. Und da tut sich Erstaunliches:

identity   : CN=grp1,OU=msxfaq,DC=E2010,DC=local
action     : Modify
field      : msexchcomanagedbylink;range=1-1
value      : CN=Sales1,CN=Users,DC=E2010,DC=local

Der neue Manager "Sales" wird nicht mit in das Feld "ManagedBy" geschrieben, sondern in ein Exchange-spezifisches Feld "msexchcomanagedbylink". Der "Manager" im Active Directory bleibt also mein Administrator. Das ist auch erforderlich, da das Feld "ManagedBy" im Schema als "Single Valued" ausgewiesen ist. Es kann also auch nur einen "DistinguishedName" enthalten

Anders ist es bei msExchCoManagedByLink, welches ein "Multivalue"-Feld ist.

Nun bin ich natürlich gespannt, ob ich mir selbst den Ast absägen kann, auf dem ich sitze und lösche den Administrator aus der "Manager"-Liste:

Und auch das funktioniert. ein Blick in die Änderungen der LDAP-Felder zeigt interessantes:

identity   : CN=grp1,OU=msxfaq,DC=E2010,DC=local
action     : Del
field      : managedby
value      : CN=Administrator,CN=Users,DC=E2010,DC=local

action     : Del
field      : msexchcomanagedbylink
value      : CN=Sales1,CN=Users,DC=E2010,DC=local

action     : Add
field      : managedby
value      : CN=Sales1,CN=Users,DC=E2010,DC=local

Der Administrator wird aus dem Feld "ManagedBy" entfernt, d.h. Exchange beachtet schon dieses Feld. Aber der Benutzer "Sales1" wird ebenfalls aus dem Exchange Feld msexchcomanagedbylink entfernt und in das Feld "ManagedBy" eingetragen.

Nun kommt natürlich die Generalprobe: Als Administrator versuche ich nun wieder die Manager zu pflegen und ich habe es nicht anders erwartet:

Ich habe den alten Stand, dass ich als Administrator trotz meiner allgemeinen Berechtigungen nicht diese Eigenschaft der Verteiler pflegen kann.

Lösung mit PowerShell

Der Fehler ist aber scheinbar nicht in der PowerShell oder RBAC begründet, sondern eher in der Exchange Management Console, welches einen kleinen aber wichtigen Parameter vergisst. Wenn Sie nämlich den PowerShell-Befehl mit der Option "bypassSecurityGroupManagerCheck" versehen, dann können Mitglieder von "Recipient Manager" oder "Organization Management" problemlos auch diese Felder bearbeiten.

# Befehl der EMC siet Sp1 RU3
Set-DistributionGroup
   -BypassSecurityGroupManagerCheck
   -ManagedBy 'E2010.local/Users/User2','E2010.local/Users/Administrator'
   -Identity 'E2010.local/msxfaq/grp1'

In früheren Versionen (vor SP1 RU3) der EMC hat das nicht funktioniert. Anscheinend hat man nur in der EMC vergessen, diesen Parameter zu addieren. Mit Exchange 2010 SP1 RU3 wurde dies gefixt. Beachten Sie aber, dass Sie bei der Verwaltung per PowerShell ebenfalls mit "BypassSecurityGroupManagerCheck" arbeiten müssen.

Auswirkung auf die Praxis

Die Auswirkungen sind meiner Ansicht nach erst mal nicht besonders groß, sonst wäre dieses seltsame Verhalten der Commandlets sicher schon früher aufgefallen. Allerdings müssen Sie schon ein Stück weit berücksichtigen, dass Änderungen am Feld "ManagedBy", welches per MMC für Benutzer und Computer problemlos erreichbar sind, auch Auswirkungen auf Exchange haben und dass die MMC im Active Directory nicht alle ">Manager" anzeigen kann.

Zudem können die Exchange Manager auch nicht über eine Analyse der ACLs der Gruppe ermittelt werden. RBAC ist eine parallele Welt.

Weitere Links