RBAC -Rolle für EAS Quarantäne

Exchange 2010 hat die Funktion EAS Quarantäne eingeführt, mit der neue Mobilgeräte nicht sofort "drin" sind, sondern erst zugelassen werden müssen. Diese Funktion kann per Default natürlich der Exchange Administrator ausüben aber der hat sicher besseres zu tun.

Delegierung erwünscht

Daher steht die Aufgabe an, diese Funktion über eine Managementrolle zu zu delegieren, dass z.B. ein Helpdesk Mitarbeiter diese Aufgabe übernehmen kann. Exchange hat selbst schon einige Rollen vordefiniert, die hier interessant sind:

  • Helpdesk
    Diese Mitglieder dieser Gruppe haben schon mal "READ"-Rechte auf viele Einstellungen der Anwender und können so diese z.B. auch im Exchange Control Panel einige Informationen einsehen. Aber nicht genug zum ändern
  • Organization Client Access
    Diese Gruppe könnte den relevanten "Set-CASMailbox"-Befehl mit den Optionen AllowedActiveSyncDevice und BlockedActiveSyncDevice ausführen. Dummerweise hat diese Gruppe noch ganz andere Rechte, die man besser nicht einem Helpdesk gibt, z.B. Abschalten der Quarantäne

Eine neue Rolle kann man nun basierend auf einer bestehenden Rolle machen, der man Befehle entfernt oder durch eine ganz neu aufgebaute Rolle, die dann sogar eigene Befehle enthalten kann. Ich habe es hier den Weg einer Kopie gewählt. In aller Kürze:

  • Anlegen einer neuen managementRolle als „Kopie“ von „Organization Client Access"
  • Entfernen aller „unerwünschten“ ManagementRoleEntries
    Es blieb nur set-casmailbox und ein paar „get-*“ Commandlets über
  • Zuweisen dieser neuen ManagementRole an die Gruppe „msxfaq EAS-Management“
  • Entfernen der „Organization Client Access" von „msxfaq EAS-Management“

Das Ergebnis ist, dass der Helpdesk nun über /ECP zwar noch die ActiveSync Richtlinien einsehen darf aber nicht mehr ändern. Er darf nur noch „AllowedDevice“ und „BlockedDevice“ ausführen.

Interessant am Rande: Die bisherige als auch die Rolle hat nicht den Befehl „Clear-ActiveSyncDevice“ enthalten.

Ausführliche Beschreibung

Hinweis zum Namenskonzept
Ich vermeide Veränderungen an den Exchange Standardrollen und Gruppen. Wer weiß ob nicht ein Servicepack hier Erweiterungen bringt. für eigene Anpassungen lege ich neue Objekte an um Benutzern zusätzliche Rechte zu geben. Damit auch erkennbar ist, dass diese Objekte nicht zum "Standard" gehören, bietet sich ein Prefix an. Hier im Beispiel nutze ich "msxfaq". Sie können auch ihren Firmennamen verwenden.

Wichtig ist immer eine gute aktuelle Dokumentation der Schritte und Änderungen , ein Namenskonzept und ein Berechtigungskonzept.

Für die Verwaltung der EAS Quarantäne wird eine Adminrolle gebraucht, die nur diese Rechte bereitstellt. Die Rolle „Organization Client Access" darf folgende Commandlets ausführen.

(Get-ManagementRole "Organization Client Access").roleentries
Write-AdminAuditLog
Set-CASMailbox
Get-ActiveSyncDeviceClass,Set-ActiveSyncOrganizationSettings,Get-CASMailbox
Remove-ActiveSyncDeviceClass
Set-RpcClientAccess,Set-OutlookProvider,Set-ClientAccessArray,Set-ActiveSyncDeviceAccessRule
Remove-RpcClientAccess,Remove-OutlookProvider,Remove-ClientAccessArray,Remove-ActiveSyncDeviceAccessRule
New-RpcClientAccess,New-OutlookProvider,New-ClientAccessArray,New-ActiveSyncDeviceAccessRule
Get-RpcClientAccess,Get-OutlookProvider,Get-DomainController,Get-ClientAccessArray,Get-ActiveSyncOrganizationSettings,Get-ActiveSyncDeviceAccessRule
Export-AutoDiscoverConfig

Dies sind auf jeden Fall zu viele Funktionen. Daher wird eine eigene „ManagementRole“ angelegt. In Exchange können neue Rollen entweder „leer und unscoped“ oder als Kopie einer bestehenden Rolle angelegt werden. Es ist nicht klar, woran /ECP aber festmacht, welche Menüs der Anwender zu sehen bekommt. Wir starten daher mit einer Kopie der Rolle, in der wir die kritischen Einträge entfernen.

# Anlegen einer Kopie
New-ManagementRole msxfaq-EASQuarantineManagement -Parent "Organization Client Access"

Alternativ könnte eine neue Rolle mit "New-ManagementRole -Name "xxxx" -UnScopedTopLevel" angelegt werden, ist hier aber nicht erforderlich

#Anzeigen der aktuellen Einstellungen
Get-ManagementRoleEntry msxfaq-EASManagement\*

[PS] C:\>Get-ManagementRoleEntry msxfaq-EASQuarantineManagement \*

Name                           Role
----                           ----
Export-AutoDiscoverConfig      msxfaq-EASQuarantineManagement
Get-ActiveSyncDeviceAccessRule msxfaq-EASQuarantineManagement
Get-ActiveSyncDeviceClass      msxfaq-EASQuarantineManagement
Get-ActiveSyncOrganizationS... msxfaq-EASQuarantineManagement
Get-CASMailbox                 msxfaq-EASQuarantineManagement
Get-ClientAccessArray          msxfaq-EASQuarantineManagement
Get-DomainController           msxfaq-EASQuarantineManagement
Get-OutlookProvider            msxfaq-EASQuarantineManagement
Get-RpcClientAccess            msxfaq-EASQuarantineManagement
Remove-ActiveSyncDeviceAcce... msxfaq-EASQuarantineManagement
Remove-ActiveSyncDeviceClass   msxfaq-EASQuarantineManagement
Remove-ClientAccessArray       msxfaq-EASQuarantineManagement
Remove-OutlookProvider         msxfaq-EASQuarantineManagement
Remove-RpcClientAccess         msxfaq-EASQuarantineManagement
Set-ActiveSyncDeviceAccessRule msxfaq-EASQuarantineManagement
Set-ActiveSyncOrganizationS... msxfaq-EASQuarantineManagement
Set-CASMailbox                 msxfaq-EASQuarantineManagement
Set-ClientAccessArray          msxfaq-EASQuarantineManagement
Set-OutlookProvider            msxfaq-EASQuarantineManagement
Set-RpcClientAccess            msxfaq-EASQuarantineManagement
Write-AdminAuditLog            msxfaq-EASQuarantineManagement

Hier sind natürlich viel zu viele Commandlets dabei, die ich nicht haben möchte , Die Rolle soll ja "nur" die Quarantäne bedienen. Also weg mit den Einsträgen

#  Entfernen unerwünschter Einträge
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\New-* ` 
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Export-* `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Remove-* `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Set-clientaccessarray `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Set-OutlookProvider `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Set-RPCClientAccess `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Set-ActiveSync* `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Get-ClientAccessArray `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Get-OutlookProvider `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Get-DomainController `
   | Remove-ManagementRoleEntry -Confirm:$false
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\Get-RPCClientAccess `
   | Remove-ManagementRoleEntry -Confirm:$false

Danach kontrolliere ich noch mal die nun geänderte Rolle:

# Verbliebene Einträge:
Get-ManagementRoleEntry msxfaq-EASQuarantineManagement\*

Name                           Role                      Parameters
----                           ----                      ----------
Get-ActiveSyncDeviceAccessRule msxfaq-EASQuarantineMan..
Get-ActiveSyncOrganizationS... msxfaq-EASQuarantineMan...
Get-CASMailbox                 msxfaq-EASQuarantineMan...
Get-ActiveSyncDeviceClass      msxfaq-EASQuarantineMan..
Set-CASMailbox                 msxfaq-EASQuarantineMan...
Write-AdminAuditLog            msxfaq-EASQuarantineMan..

Der kritische Befehl “Set-CAS-Mailbox” hat nur folgende Parameter (gekürzt um Standardparameter)

(Get-ManagementRoleEntry msxfaq-EASManagement\set-casmailbox).parameters
ActiveSyncAllowedDeviceIDs
ActiveSyncBlockedDeviceIDs

Damit ist diese Rolle entsprechend abgespeckt und zum Einsatz bereit. muss man die Rolle natürlich einer Gruppe zuweisen. Das kann eine bestehende Gruppe wie z.B. Helpdesk sein oder eine neue Gruppe:

# Neue Gruppe anlegen
New-RoleGroup `
   -Name "msxfaq EASManagement" `
   -Roles "msxfaq-EASQuarantineManagement"

# Alternativ Zuweisen der Rolle an eine bestehnede Gruppe
New-ManagementRoleAssignment `
   -Name msxfaq-EASQuarantineManagement `
   -SecurityGroup "msxfaq EASManagement" `
   -Role "msxfaq-EASQuarantineManagement"

Damit ist das Werk schon fast vollbracht. Sie müssen natürlich noch die Anwender in die Gruppe addieren, um die Berechtigungen auch zu erhalten.

Weitere Links