RBAC: Exemplarische Vorgehensweise für das Erstellen einer Rolle zum Zurücksetzen von ActiveSync-Geräten

Veröffentlichung des Originalartikels: 12.09.2012

In den letzten Monaten kam folgende Frage mehrmals zur Sprache: Wie erstelle ich RBAC-Rollen, mit denen nur sehr begrenzte ActiveSync-Verwaltungsfunktionen bereitgestellt werden?

Bevor wir uns mit der Antwort befassen, sollte ich kurz die rollenbasierte Zugriffssteuerung (Role Based Access Control, RBAC) vorstellen.

Vor Exchange 2010 wurden Berechtigungen mithilfe von Tools wie DSACLS und ADSIEdit definiert. Hiermit konnten Sie angeben, auf welche Objekte ein Benutzer oder eine Gruppe Zugriff hat und welche Aktionen sie für das Objekt insgesamt ausführen konnten. Falls ein Benutzer Schreibzugriff für eine bestimmte Eigenschaft eines Objekts benötigte, jedoch nicht für die anderen Eigenschaften, gab es hierfür keine einfache Lösung. Mit RBAC werden keine Berechtigungen im Objekt definiert. Vielmehr werden Berechtigungen in den PowerShell-Cmdlets definiert, mit denen das Objekt geändert werden kann. PowerShell-Cmdlets werden einer Rolle hinzugefügt, und ein Benutzer oder eine Gruppe wird der Rolle zugewiesen. Falls das Cmdlet und die Parameter, die Sie benötigen, Teil einer Rolle sind, der Sie angehören, können Sie das Cmdlet ausführen.

In der Exchange-Verwaltungsshell können Sie (get-excommand).count ausführen, um festzustellen, auf wie viele Exchange-Cmdlets Sie aktuell Zugriff haben. In der Exchange-Systemsteuerung (Exchange Control Panel, ECP) und der Exchange-Verwaltungskonsole hängen die angezeigten Optionen von den Cmdlets ab, auf die Sie Zugriff haben. Wenn deshalb ein Fenster in einer dieser grafischen Benutzeroberflächen bestimmte PowerShell-Cmdlets in Ihrer Rolle erfordert, über die Sie aber nicht verfügen, gibt es zwei mögliche Ergebnisse:

  • Das Fenster wird nicht angezeigt (entsprechende Optionen, die dazu führen, werden wahrscheinlich überhaupt nicht angeboten)
  • Das Fenster wird angezeigt, aber der gesamte Inhalt wird deaktiviert (dies ist typisch, wenn Sie über die entsprechenden Get- Cmdlets verfügen, aber eines oder mehrere Set-, New- oder Add-Cmdlets usw. fehlen.)

Weitere Informationen zu RBAC finden Sie unter:

In Exchange 2010 SP2 gibt es 71 RBAC-Rollen. Jedoch enthält keine dieser Rollen begrenzte ActiveSync-Befehle, die Helpdeskmitarbeitern zugewiesen werden können. Um solche Rollen zu erstellen, müssen Sie sich selbst ans Werk machen. Wenn Ihr Helpdesk mit PowerShell arbeitet, ist das relativ einfach. Sie können nämlich eine Rolle erstellen, die nur das PowerShell-Cmdlet und die Parameter, die erforderlich sind, enthält. Wenn die Benutzer ausschließlich die Exchange-Systemsteuerung verwenden, ist dieser Vorgang komplexer, da der Benutzer in der Lage sein muss, zu der Stelle zu navigieren, an der der Vorgang ausgeführt wird.

In diesem Beispiel mussten Helpdeskmitarbeiter für den Kunden ActiveSync-Geräte über die Exchange-Systemsteuerung zurücksetzen können. Das Problem war, dass nur Mitglieder von Organization Management zum entsprechenden Fenster in der Exchange-Systemsteuerung navigieren und eine Gerätezurücksetzung ausführen konnten. Das Hinzufügen der Helpdeskbenutzer zur Rollengruppe Organization Management kam nicht in Frage, da sie einfach zu viele Rechte besitzt.

Der Administrator versuchte, eine RBAC-Rolle zu erstellen, die nur das Clear-ActiveSyncDevice-Cmdlet enthält. Allerdings erlaubte die neue Rolle den Benutzern über die Exchange-Systemsteuerung nicht den Zugriff auf die Funktionen. Die Benutzer konnten in der Exchange-Systemsteuerung nicht zu der Stelle navigieren, an der die Schaltfläche Gerät zurücksetzen (Wipe Device) angezeigt wird, da sich die Schaltfläche ein paar Ebenen tiefer in der Hierarchie befindet. Der Benutzer muss in der Lage sein, die Benutzer in der Organisation aufzulisten, deren Telefon- und Spracheigenschaften anzuzeigen sowie die entsprechenden Dialogfelder zu öffnen. Einer Rolle, die nur das Clear-ActiveSyncDevice-Cmdlet enthält, fehlen die anderen Cmdlets, die für diese anderen Schritte in der Exchange-Systemsteuerung erforderlich sind. Deshalb müssen wir feststellen, was dieser Rolle hinzugefügt werden muss, um zu dem Fenster navigieren und auf die Schaltfläche Gerät zurücksetzen (Wipe Device) klicken zu können.

Dazu müssen wir zunächst einmal feststellen, welche Rollen die Rollengruppe Organization Management enthält. Zu diesem Zweck führen wir folgenden Befehl aus:

[PS] C:\>$FormatEnumerationLimit=999
[PS] C:\>get-rolegroup "organization management" | fl roles

Roles : {Active Directory Permissions, Address Lists, ApplicationImpersonation, Audit Logs, Cmdlet Extension Agents, Database Availability Groups, Database Copies, Databases, Disaster Recovery, Distribution Groups, Edge Subscriptions, E-Mail Address Policies, Exchange Connectors, Exchange Server Certificates, Exchange Servers, Exchange Virtual Directories, Federated Sharing, Information Rights Management, Journaling, Legal Hold, Mail Enabled Public Folders, Mail Recipient Creation, Mail Recipients, Mail Tips, Mailbox Import Export, Mailbox Search, Message Tracking, Migration, Monitoring, Move Mailboxes, Organization Client Access, Organization Configuration, Organization Transport Settings, POP3 And IMAP4 Protocols, Public Folder Replication, Public Folders, Receive Connectors, Recipient Policies, Remote and Accepted Domains, Retention Management, Role Management, Security Group Creation and Membership, Send Connectors, Support Diagnostics, Transport Agents, Transport Hygiene, Transport Queues, Transport Rules, UM Mailboxes, UM Prompts, UnScoped Role Management, Unified Messaging, User Options, View-Only Audit Logs, View-Only Configuration, View-Only Recipients, MyBaseOptions, MyContactInformation, MyDiagnostics, MyDistributionGroupMembership, MyDistributionGroups, MyProfileInformation, RetentionPolicies, MyTextMessaging, MyVoiceMail, MyMailboxDelegation}

Nun müssen wir Rollen verwerfen, die nicht in unmittelbarem Zusammenhang mit dem Zurücksetzen eines Geräts stehen. Einige der Rollen wie z. B. Remote and Accepted Domains enthalten ganz offensichtlich keine entsprechenden Cmdlets. Für die potenziell interessanten Rollen müssen wir im nächsten Schritt herausfinden, was sie enthalten. Dazu führen wir ein Cmdlet wie das Folgende aus:

[PS] C:\storage>Get-ManagementRoleEntry "Mail Recipients\*"

Name Role Parameters
---- ---- ----------
Write-AdminAuditLog Mail Recipients {Comment, Confirm, Debug, DomainController, ErrorAction, Er...
Update-Recipient Mail Recipients {Confirm, Credential, Debug, DomainController, ErrorAction,...
Test-MAPIConnectivity Mail Recipients {Archive, Confirm, Debug, ErrorAction, ErrorVariable, Ident...
Set-User Mail Recipients {AssistantName, CertificateSubject, City, Company, Confirm,...

Ich habe die Ausgabe gekürzt und nur ein paar Zeilen zu Demonstrationszwecken verwendet (das Cmdlet produziert in Wirklichkeit 96 Ergebnisse).

Im nächsten Schritt erstellen wir dann neue untergeordnete Rollen für die Rollen, die wir für unsere Arbeit als hilfreich betrachten. Hier ein Beispiel:

new-managementrole -parent "Mail Recipients" -name StrictlyRecipActiveSyncDeviceWipe

Die soeben erstellte Rolle ist eine untergeordnete Rolle von Mail Recipients und verfügt über alle Berechtigungen der übergeordneten Rolle. Weshalb nicht die Rolle Mail Recipients selbst verwenden? Im weiteren Verlauf möchte ich Elemente aus dieser Rolle entfernen, um eine möglichst niedrige Berechtigungsebene zu erreichen. Sie sollten auf keinen Fall die integrierten Rollen wie z. B. Mail Recipients ändern, da dadurch die Funktionalität beschädigt wird. Außerdem sollte darauf hingewiesen werden, dass einer untergeordneten Rolle nur die Funktionalität der übergeordneten Rolle zugewiesen werden kann. Es ist nicht möglich, Rechte für bzw. Zugriff auf Funktionalität zu erteilen, die nicht bereits in der übergeordneten Rolle enthalten ist.

Nachdem wir unsere Rolle erstellt haben, müssen wir eine Rollengruppe erstellen. Dies vereinfacht die spätere Zuweisung der Rolle zu Benutzern. Für unseren Test verwenden wir das Konto WipeTest. Nach Abschluss des Tests ersetzen Sie WipeTest durch die gewünschten Konten oder Gruppen.

New-RoleGroup -Name "OnlyActiveSyncDeviceWipe" -Roles "StrictlyRecipActiveSyncDeviceWipe " -members WipeTest

WipeTest kann sich bei Outlook Web Access (OWA) anmelden und auf die Exchange-Systemsteuerung zugreifen. Wir stellen fest, dass wir in der Exchange-Systemsteuerung fast zur gewünschten Option navigieren können, jedoch nicht ganz bis zum Ziel. Dies bedeutet, dass eine zusätzliche Rolle erforderlich ist.

Im Exchange-Verzeichnis (standardmäßig c:\Programme\Microsoft\Exchange) gibt es den folgenden Pfad: ClientAccess\ecp\PhoneVoice. Wenn Sie sich die Dateien in diesem Pfad anschauen, können Sie feststellen, was Sie im nächsten Schritt hinzufügen sollten. In der Datei Web.Config ist OrganizationConfig oft erwähnt, aber das ist zu ungenau. Wir können in dem Ordner schauen, ob in Dateien bestimmte Cmdlets erwähnt sind, die wir verwenden können und die noch nicht in der von uns bereits definierten Rolle vorhanden sind. Set-CasMailbox (in QuarantinedDevices.ASCX) fällt auf. Anschließend stellen wir fest, wo dieses Cmdlet gespeichert ist:

[PS] C:\>Get-ManagementRoleEntry "*\set-casmailbox" | fl name,role,parameters

Name : Set-CASMailbox
Role : Mail Recipients
Parameters : {ActiveSyncDebugLogging, ActiveSyncEnabled, ActiveSyncMailboxPolicy, Confirm, Debug, DisplayName, DomainController, ECPEnabled, EmailAddresses, ErrorAction, ErrorVariable, EwsAllowEntourage, EwsAllowList, EwsAllowMacOutlook, EwsAllowOutlook, EwsApplicationAccessPolicy, EwsBlockList, EwsEnabled, HasActiveSyncDevicePartnership, Identity, IgnoreDefaultScope, ImapEnabled, ImapEnableExactRFC822Size, ImapMessagesRetrievalMimeFormat, ImapSuppressReadReceipt, ImapUseProtocolDefaults, MAPIBlockOutlookNonCachedMode, MAPIBlockOutlookRpcHttp, MAPIBlockOutlookVersions, MAPIEnabled, Name, OutBuffer, OutVariable, OWAEnabled, OwaMailboxPolicy, PopEnabled, PopEnableExactRFC822Size, PopMessagesRetrievalMimeFormat, PopSuppressReadReceipt, PopUseProtocolDefaults, PrimarySmtpAddress, SamAccountName, ShowGalAsDefaultView, Verbose, WarningAction, WarningVariable, WhatIf}

Name : Set-CASMailbox
Role : Organization Client Access
Parameters : {ActiveSyncAllowedDeviceIDs, ActiveSyncBlockedDeviceIDs, Confirm, Debug, DomainController, ErrorAction, ErrorVariable, Identity, OutBuffer, OutVariable, Verbose, WarningAction, WarningVariable, WhatIf}

Name : Set-CASMailbox
Role : User Options
Parameters : {ActiveSyncDebugLogging, Confirm, ErrorAction, ErrorVariable, Identity, ImapMessagesRetrievalMimeFormat, ImapSuppressReadReceipt, ImapUseProtocolDefaults, OutBuffer, OutVariable, PopMessagesRetrievalMimeFormat, PopSuppressReadReceipt, PopUseProtocolDefaults, ShowGalAsDefaultView, WarningAction, WarningVariable, WhatIf}

Name : Set-CASMailbox
Role : MyBaseOptions
Parameters : {ActiveSyncDebugLogging, Confirm, ErrorAction, ErrorVariable, Identity, ImapMessagesRetrievalMimeFormat, ImapSuppressReadReceipt, ImapUseProtocolDefaults, OutBuffer, OutVariable, PopMessagesRetrievalMimeFormat, PopSuppressReadReceipt, PopUseProtocolDefaults, ShowGalAsDefaultView, WarningAction, WarningVariable, WhatIf}

Die Unterschiede bei den Parametern sind interessant. MyBaseOptions und UserOptions können wir ausschließen, da deren Parameter beim Zurücksetzen eines Geräts nicht hilfreich wären. Wir haben es bereits mit einer untergeordneten Rolle von Mail Recipients versucht, was aber nicht funktioniert hat. Damit bleibt noch Organization Client Access als mögliche Rolle übrig. Wie Sie sehen, hat diese Rolle Zugriff auf die Parameter ActiveSyncAllowedDeviceIDs und ActiveSyncBlockedDeviceIDs, die nicht in der Rolle Mail Recipients vorhanden sind.

Wir haben gesehen, dass Set-CasMailbox in den Dateien aufgelistet wird. Deshalb können wir es mit dem Erstellen einer neuen untergeordneten Rolle von Organization Client Access versuchen und alles andere außer Set-CasMailbox löschen.

new-managementrole -parent "organization client access" -name OrgClientAccessWipeDeviceOnly
get-managementroleentry "OrgClientAccessWipeDeviceOnly\*" |where{$_.name -notlike "*set-casm*"}| Remove-ManagementRoleEntry

Nun fügen wir diese neue Rolle der zuvor von uns erstellten Rollengruppe zu:

New-ManagementRoleAssignment -Name "OCA Child ActiveSyncDevice Wipe" -SecurityGroup "OnlyActiveSyncDeviceWipe" -Role OrgClientAccessWipeDeviceOnly

Wenn nun WipeTest versucht, das Gerät zurückzusetzen, können die Benutzer auf die Schaltfläche in der Exchange-Systemsteuerung zugreifen. Ein Problem besteht allerdings weiterhin: StrictlyRecipActiveSyncDeviceWipe (eine untergeordnete Rolle von Mail Recipients) verfügt weiterhin über zu viele Rechte. Wir entfernen deshalb mithilfe des folgenden Cmdlets die meisten Cmdlets aus StrictlyRecipActiveSyncDeviceWipe:

get-managementroleentry "StrictlyRecipActiveSyncDeviceWipe\*" |where{$_.name -notlike "*activesync*"}| Remove-ManagementRoleEntry

Die nächste Phase beinhaltet das erneute einzelne Hinzufügen von Cmdlets zur Rolle, bis wir zur entsprechenden Stelle in der Exchange-Systemsteuerung navigieren und eine Gerätezurücksetzung ausführen können. Die Vorgehensweise ist einfach: fügen Sie ein Cmdlet hinzu, und testen Sie die Funktionsweise. Wenn die Abmeldung bei Outlook Web Access (OWA) fehlschlägt, fügen Sie ein anderes Cmdlet hinzu, und versuchen Sie es erneut. Wenn es funktioniert, können wir den Vorgang entweder abbrechen oder wieder einzelne Cmdlets entfernen, um eine möglichst niedrige Berechtigungsebene zu erreichen. Es folgen einige Beispiele für die Cmdlets, die wir verwenden können.

Geben Sie Folgendes ein, um ein Cmdlet wieder hinzuzufügen:

add-ManagementRoleEntry "Mail Recipients\get-mailbox" -role StrictlyRecipActiveSyncDeviceWipe

/Aside

Wenn Sie mehrere Cmdlets wieder hinzufügen möchten, können Sie die Syntax aus dem folgenden Beispiel verwenden:

Get-ManagementRoleEntry "Mail Recipients\*" | where{$_.name -like "get-m*"} | add-ManagementRoleEntry -role StrictlyRecipActiveSyncDeviceWipe

In diesem Blogbeitrag möchte ich jeweils immer nur ein Cmdlet einfügen, aber dies soll zur Veranschaulichung dienen.

/End Aside

Geben Sie Folgendes ein, um ein einzelnes Cmdlet aus der Rolle zu entfernen:

Remove-ManagementRoleEntry "StrictlyRecipActiveSyncDeviceWipe\Get-Mailbox"

(Wenn die Eingabeaufforderung Sind Sie sicher? (Are You Sure? ) angezeigt wird, klicken Sie auf Ja (Yes) oder Ja, alle (Yes to All))

In diesem Blogbeitrag habe ich detailliert beschrieben, wie ich den endgültigen Cmdlet-Satz erhalten habe. Das lästige Ausprobieren habe ich größtenteils weggelassen. Ich hoffe aber, dass ich ausreichend Informationen geliefert habe, damit Sie diese Schritte selbst ausführen können.

Im Folgenden finden Sie eine kurze Übersicht über alle verwendeten Cmdlets:

new-managementrole -parent "Mail Recipients" -name StrictlyRecipActiveSyncDeviceWipe
new-managementrole -parent "organization client access" -name OrgClientAccessWipeDeviceOnly
get-managementroleentry "OrgClientAccessWipeDeviceOnly\*" |where{$_.name -notlike "*set-casm*"}| Remove-ManagementRoleEntry

(Wenn die Eingabeaufforderung Sind Sie sicher? (Are You Sure? ) angezeigt wird, wählen Sie A aus)

get-managementroleentry "StrictlyRecipActiveSyncDeviceWipe\*" |where{$_.name -notlike "*activesync*"}| Remove-ManagementRoleEntry

(Wenn die Eingabeaufforderung Sind Sie sicher? (Are You Sure? ) angezeigt wird, wählen Sie A aus)

add-ManagementRoleEntry "Mail Recipients\get-mailbox" -role StrictlyRecipActiveSyncDeviceWipe
add-ManagementRoleEntry "Mail Recipients\get-user" -role StrictlyRecipActiveSyncDeviceWipe
add-ManagementRoleEntry "Mail Recipients\get-recipient" -role StrictlyRecipActiveSyncDeviceWipe
add-ManagementRoleEntry "Mail Recipients\get-casmailbox" -role StrictlyRecipActiveSyncDeviceWipe
New-RoleGroup -Name "OnlyActiveSyncDeviceWipe" -Roles StrictlyRecipActiveSyncDeviceWipe,OrgClientAccessWipeDeviceOnly -members WipeTest

Nachdem diese Cmdlets ausgeführt wurden, kann der WipeTest-Benutzer (oder der angegebene Benutzer oder die angegebene Gruppe) Outlook Web Access (OWA) öffnen, zur Exchange-Systemsteuerung navigieren und die Dialogfelder öffnen, um zu der Stelle zu navigieren, an der er eine Gerätezurücksetzung ausführen kann.

Vielen Dank an Matt Byrd und Brad Hughes, die an diesem Blogbeitrag mitgewirkt haben.

Chris Pollitt

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter RBAC: Walkthrough of creating a role that can wipe ActiveSync Devices.