RBAC: ActiveSync デバイスをワイプできる役割の作成についてのチュートリアル

原文の記事の投稿日: 2012 年 9 月 12 日 (水曜日)

ここ数か月の間に何度か寄せられた質問に、ごく限られた ActiveSync 管理機能のみを表示する RBAC の役割の作成方法を教えてください、というものがありました。

この質問に答える前に、RBAC (役割ベースのアクセス制御) の内容について簡単に確認します。

Exchange 2010 より前は、DSACLS や ADSIEdit などのツールを使用してアクセス許可を定義していました。この方法では、ユーザーまたはグループがアクセスできるオブジェクト、およびユーザーまたはグループがオブジェクト全体に対して実行できる操作を指定できます。しかし、ユーザーがオブジェクトの特定のプロパティに対する書き込みアクセス権を必要とするが、オブジェクトのその他のプロパティに対するアクセス権は必要でない場合、このことを実現する簡単な方法はありませんでした。RBAC では、オブジェクトに対するアクセス許可ではなく、オブジェクトを変更できる PowerShell コマンドレットに対するアクセス許可が定義されます。PowerShell コマンドレットが役割に追加され、ユーザーまたはグループがその役割に割り当てられます。必要なコマンドレットおよびパラメーターが参加している役割に含まれていると、そのコマンドレットを実行できます。

Exchange 管理シェルでは、(get-excommand).count を実行して、現在アクセスできる Exchange コマンドレットの数を確認できます。Exchange コントロール パネル (ECP) および Exchange 管理コンソールでは、アクセスできるコマンドレットによって、表示されるオプションの内容が決定されます。したがって、どちらかの GUI のウィンドウにおいて、役割に特定の PowerShell コマンドレットへのアクセス権が必要であるにもかかわらずそのアクセス権がない場合は、次のどちらかの結果となります。

  • ウィンドウは表示されません (多くの場合、ウィンドウを表示するオプション自体が表示されません)。
  • ウィンドウは表示されますが、すべての内容が無効になります (関連する Get- コマンドレットへのアクセス権はあるが、Set、New、Add などのコマンドレットへのアクセス権がない場合はこの結果になります)。

RBAC の詳細については、次の記事を参照してください。

Exchange 2010 SP2 には、71 の RBAC の役割が含まれていますが、これらの役割には、ヘルプ デスク スタッフに割り当て可能な限られた ActiveSync コマンドのサブセットのみを提供するものはありません。このような役割は、各自で作成する必要があります。ヘルプデスクで PowerShell を使用する場合は、必要な PowerShell コマンドレットおよびパラメーターのみを持つ役割を作成すればよいため、作成作業は比較的簡単です。しかし、ユーザーが ECP のみを使用して操作を行う場合は、操作を実施する場所までユーザーが移動できる必要があるため、作成作業は複雑になります。

ここで示す例では、お客様は、ヘルプデスク スタッフが Exchange コントロール パネルを使用して ActiveSync デバイスをワイプできるようにする必要がありました。問題は、Organization Management のメンバーのみが ECP の該当するウィンドウに移動でき、デバイスのワイプを実行できることでした。Organization Management に付与されている権限が多すぎるため、ヘルプデスク ユーザーを Organization Management 役割グループに追加することもできませんでした。

管理者は、Clear-ActiveSyncDevice コマンドレットのみを含む RBAC の役割を作成しようと考えていましたが、このような役割では ECP でこの機能にアクセスすることができませんでした。[デバイスのワイプ] ボタンは数階層下位にネストされているため、ユーザーは、ECP 内でこのボタンが表示される場所まで移動できませんでした。ユーザーは、組織内のユーザーを一覧表示し、これらのユーザーの電話と音声のプロパティを表示して、それらを表示する途中で必要となるダイアログ ボックスを開くことができなければなりません。Clear-ActiveSyncDevice コマンドレットのみを含む役割には、ECP でのこれらその他の手順で必要な他のコマンドレットが含まれていません。以下では、ウィンドウに移動して [デバイスのワイプ] ボタンをクリックできるようにするためにこの役割に追加する必要がある項目について検討します。

最初に、Organization Management 役割グループがどのような役割で構成されているかを確認します。このためには、次のコマンドを実行します。

[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}

この中から、デバイスのワイプに直接関連しない役割を削除する必要があります。"Remote and Accepted Domains" など一部の役割は、明らかに関連するコマンドレットを含んでいません。次に、関連があると思われる役割に対して、その内容を確認します。そのためには、次のようなコマンドレットを実行します。

[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,...

ここでは出力を一部省略して、デモンストレーション用に数行のみを表示しています (実際のコマンドレットでは 96 件の結果が表示されます)。

次に、ここでの目的に役立つと思われる役割の新しい子の役割を作成します。次に例を示します。

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

ここでは、Mail Recipients の子の役割を作成したため、親のすべてのアクセス許可が含まれています。Mail Recipients 役割自体を使用しない理由は、最小限のアクセス許可のみを含むように、後でこの役割からいくつかのアクセス許可を削除するためです。Mail Recipients などの組み込みの役割を変更するとこれらの役割を使用する機能に影響があるため、組み込みの役割は変更しないでください。また、子の役割には、親の機能のみを割り当てることができます。親に含まれていない機能に対する権限やアクセス権を付与することはできません。

役割を作成したら、役割グループを作成する必要があります。役割グループを作成しておくと、今後ユーザーに役割を割り当てるときに作業が簡単になります。ここでは、テストのために WipeTest というアカウントを使用します。テストが完了したら、WipeTest を目的のアカウントまたはグループに置き換えます。

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

WipeTest では、OWA にログインし、ECP にアクセスできます。ECP で必要なオプションへの移動はほとんどが可能になりましたが、一部移動できない場所があることがわかりました。つまり、追加の役割が必要です。

Exchange ディレクトリ (既定で c:\Program Files\Microsoft\Exchange) には、"ClientAccess\ecp\PhoneVoice" というパスが含まれています。このフォルダー内のファイルに、次に追加する項目のヒントがあります。Web.Config ファイルには OrganizationConfig に関する数多くの記述がありますが、具体性が十分ではありません。使用する可能性があるが定義済みの役割に含まれていない具体的なコマンドレットが記述されたファイルがないか、フォルダー内を探します。(QuarantinedDevices.ASCX にある) Set-CasMailbox が見つかったので、このコマンドレットが含まれている役割を確認しました。

[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}

それぞれパラメーターが異なっていることがわかります。MyBaseOptions と User Options のパラメーターは、デバイスのワイプには役立たないため、これらは除外できます。Mail Recipients の子の役割はすでに試しましたが、うまくいきませんでした。そこで、残された "Organization Client Access" 役割を使用してみます。この役割では、Mail Recipients 役割ではアクセスできない ActiveSyncAllowedDeviceIDs および ActiveSyncBlockedDeviceIDs パラメーターにアクセスできます。

ファイルに Set-CasMailbox が記述されていることを確認したため、"Organization Client Access" の新しい子の役割を作成して、Set-CasMailbox 以外のコマンドレットをすべて削除します。

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

この新しい役割を、前に作成した役割グループに追加します。

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

WipeTest でデバイスのワイプを試みると、ECP のボタンにアクセスできます。ただし、StrictlyRecipActiveSyncDeviceWipe ("Mail Recipients" の子) に付与されている権限が多すぎるという問題が残っています。次のコマンドレットを使用して、StrictlyRecipActiveSyncDeviceWipe からほとんどのコマンドレットを削除します。

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

次に、ECP 内の適切な場所まで移動し、デバイスのワイプを実行できるようになるまで、役割にコマンドレットを一度に 1 つずつ追加します。この作業は単純で、コマンドレットを追加して操作を試すだけです。うまくいかなければ、OWA からログアウトし、別のコマンドレットを追加して、再度操作を試みます。操作に成功したら、そこで作業をやめるか、または再度個別のコマンドレットを削除して最小レベルのアクセス許可を実現します。次に、使用できるコマンドレットの例をいくつか示します。

コマンドレットを再度追加するには、次のコマンドレットを実行します。

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

(補足)

複数のコマンドレットを再度追加するには、次の例に示す構文を使用できます。

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

このブログでは、一度に 1 つずつコマンドレットを挿入しますが、説明のために例を記載しました。

(補足終了)

役割から個別のコマンドレットを削除する場合は、次のコマンドレットを使用できます。

Remove-ManagementRoleEntry "StrictlyRecipActiveSyncDeviceWipe\Get-Mailbox"

("Are You Sure?" のプロンプトが表示されたら、[Yes] または [Yes to All] を選択します。)

このブログでは、最終的なコマンドレットのセットを得るまでに行った作業に関する詳細の多くを説明しました。単純な試行錯誤についてはほとんど省略しましたが、読者が各自でこの作業を実行するのに十分な詳細情報を記載してあります。

すべてを 1 か所でまとめて確認したい方のために、以下にすべてのコマンドレットをまとめました。

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

("Are you sure?" のプロンプトが表示されたら、[A] を選択します。)

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

("Are you sure?" のプロンプトが表示されたら、[A] を選択します。)

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

これらのコマンドレットを実行すると、WipeTest ユーザー (あるいは指定したユーザーまたはグループ) は、OWA を開き、ECP に移動して、デバイスをワイプできる場所に移動するのに必要なすべてのダイアログ ボックスを表示できます。

この記事の執筆を助けてくれた Matt Byrd と Brad Hughes に感謝します。

Chris Pollitt

これはローカライズされたブログ投稿です。原文の記事は、「RBAC: Walkthrough of creating a role that can wipe ActiveSync Devices」をご覧ください。