Azure AD の管理単位 (Administrative Units - プレビュー) で実現するユーザー管理権限の委譲

こんにちは、コラボレーション担当の和田です。

組織内やグループ内のシームレスな情報共有やコラボレーション、コミュニケーションを目的に、1 つのテナント (シングル テナント) をグローバルで展開したり、1 つのテナントを複数のグループ会社でご利用になる場合、テナント全体に関わるような構成設定については本社で一元的に管理しつつ、ユーザーの管理だけは各地域や各関連会社の担当者に権限を委任したいというケースがあると思います。

Office 365 を使用して生産性をあげて、機動的な働き方に革新していくには、エンド ユーザーにとってもシステム運用者にとっても、組織全体・グループ全体でシングル テナントで構成することが、利便性も管理性も向上するため、最大限のメリットを得ることができます。Office 365 ではリージョナル DNS の仕組みが採用されていますので、例えばデータセンターが日本にあっても、日本以外の地域からアクセスする場合には、最寄りのマイクロソフト データセンター経由で高速アクセスできるようになっていますので、ネットワークの懸念も解消できるこのメリットも最大限活かしたいところです。また、今後提供予定のマルチジオ(Multi-Geo)機能を利用すると、シングル テナントで構成しつつ、Exchange のユーザー メールボックスや OneDrive for Business のユーザー データを、各地域のデータセンターに格納できるようになりますので、シングル テナントの利便性はそのままに、データ レジデンシーを確保しつつ、ガバナンスを維持することができます。テナントを分散してしまうと、テナント間で必要なアドレス帳同期や各種機能連携を行うためには、追加の構成が必要だったり管理負荷が増大してしまったりするので、管理者としては出来れば避けたいと思います。また、今後施行される GDPR においても、個人データがどこにあるか確実に把握して管理・保護・報告することが求められますので、データ保管場所の把握や対処、アクセス ログ・監査ログの確認など、1つの管理画面で全体を管理できるようにしておくことは非常に重要になってくると思います。

今までの Office 365 では、サービスや役割毎に管理権限を分けることは出来ましたが、冒頭にお話ししたような権限の委譲を行いたいと思った際、以下のようなことが課題として挙がり、仕方なく複数テナント構成を選ばざるを得ない場合がありました。

  • 各拠点の担当者には、担当外となる別拠点のユーザーの管理ができないようにしたい
  • 各拠点の管理者には、管理できるユーザーのみを Office 365 管理センター上に表示したい (担当範囲ではない別拠点のユーザー オブジェクトは表示されないようにしたい)
  • アクセスはできないとしても、不必要な管理メニューも表示されてしまう (設定メニューやセキュリティ/コンプライアンス センター、各サービスの管理センター 等)

Azure AD 側では長らくパブリック プレビューとして提供されている管理単位 (Administrative Units) 機能ですが、先月この機能が Office 365 にもプレビューとして拡張され、すべてのテナントでご利用可能になりました。現時点ではまだ提供されている機能は少ないのですが、グローバル展開している組織や大規模な組織では、今後確実に利用したい機能のひとつになっていくと思います。

TITLE: Azure AD の管理単位 - パブリック プレビュー
URL: /ja-jp/azure/active-directory/active-directory-administrative-units-management

 

現時点での前提条件

2018 年 3 月時点での前提条件は以下の通りです。今後変更になる場合はありますので、最新情報については上記の Docs サイトをご参照ください。

  • 対象の管理者 (例 : 拠点の IT 担当者、グループ会社の IT 担当者) には Azure AD Premium のライセンスが必要です
  • 管理単位の対象のすべてのユーザーに Azure AD Basic 以上 (Azure AD Premium は Basic を包含しています) のライセンスが必要です
  • 現時点のリリースで管理できるのはユーザー オブジェクトのみです
  • 現時点のリリースでは、Office 365 管理センターに対しての制御であり、Exchange 管理センターや SharePoint 管理センターは利用できません
  • 現時点で利用できる役割は「ユーザー管理者/ユーザーアカウント管理者 (User Account Administrator)」と「パスワード管理者/ヘルプデスク管理者 (Helpdesk Administrator)」の 2 つのみです。Azure AD における管理者ロールの詳細は以下をご参照ください

TITLE: Azure Active Directory での管理者ロールの割り当て
URL: /ja-jp/azure/active-directory/active-directory-assign-admin-roles-azure-portal

 

構成例

今回の構成例では、日本にある 1 つのテナントを全世界から利用することを想定して、以下のことを実現しています。

  • テナント全体設定や全体管理は、日本の本社 IT 部門で一括で実施しガバナンスを強化
  • ヘルプデスクを 4 箇所設置し、ユーザー数の多い日本と US にはユーザー管理者を配置。ユーザー数の少ない EU と中国にはパスワード管理者を配置
  • オンプレミスの AD からディレクトリ同期しているため、ユーザーの新規作成やセキュリティ グループ メンバーシップ等はオンプレミス側で一括で管理しているので、ヘルプデスク メンバーには、ユーザー情報の表示や Office 365 グループのメンバーシップ管理、パスワード リセット、サービス正常性の確認やライセンス管理、SR サポート問合せ等を実施させる
  • 各ヘルプデスク メンバーには、自分の担当範囲のユーザーの情報だけが Office 365 管理センター上に表示され、不必要な情報には触れないようにする

 

 

実装イメージ

管理単位を構成すると、ヘルプデスクのメンバーが Office 365 管理センターにアクセスをすると、右上に「範囲」という表示行われるようになり、「アクティブなユーザー」リストには、自分がアクセス権限のあるユーザーのみが表示されるようになります。テナント管理者視点ではアクセスさせたくないユーザーを非表示にすることができますし、ヘルプデスク担当者視点でも不必要なユーザーが表示されないのでオペレーション効率の向上やミスオペレーションの抑止効果が見込まれます。

 

<米国の担当者の管理画面>

 

<ヨーロッパ担当者の管理画面>

 

<アジア担当者の管理画面>

 

左ペインに表示されるメニュー画面も簡素化させることができます。Office 365 標準の「ユーザー管理者」や「パスワード管理者」では、「設定」メニューや「管理センター」メニューが表示されてしまいます。権限がないのでアクセスが出来なかったり設定変更は行えないのですが、メニューとして目に触れてしまうので、余計なリスクを増やしたくたいと考える場合には非表示としたい思われる部分でした。

テナント管理者の画面メニュー Office 365 標準のユーザー管理者画面メニュー 管理単位で制御した場合の管理画面メニュー

 

構成手順例

今回ご紹介した構成を実装するには、PowerShell コマンドレットを使用して、主に以下の手順で設定していきます。

0.  Azure AD Preview PowerShell モジュールのインストール
1.  管理単位での利用用にディレクトリ ロール (管理者の種類) の有効化
2.  管理単位の作成
3.  管理単位への管理権限の設定
4.  管理単位へのメンバー追加

 

0. Azure AD Preview PowerShell モジュールのインストール

管理単位を構成するためには Azure AD Preview の PowerShell モジュールが必要になります。現在提供されている GA 版 (v2.0.1.3) では管理単位を構成するためのコマンドレットがまだ提供されていません。Preview 版 (2.0.1.2) をインストールされていない場合は、以下のコマンドレットを実行して、Preview モジュールをインストールしてください。GA 版と Preview 版は同じマシンに同時にインストールすることはできませんので、もし GA 版がインストールされている場合には事前に Uninstall-Module コマンドレットでアンインストールします。

 Install-Module AzureADPreview

 

既にインストールされているかどうか、正常にインストールされたかどうかは以下のコマンドレットで確認してください。

 Get-InstalledModule

 

1. 管理単位での利用用にディレクトリ ロール (管理者の種類) の有効化

以下のコマンドレットを実行して、Azure AD に用意されているディレクトリ ロールを有効化します。

 Connect-AzureAD
Enable-AzureADDirectoryRole -RoleTemplateId 729827e3-9c14-49f7-bb1b-9608f156bbb8
Enable-AzureADDirectoryRole -RoleTemplateId fe930be7-5e62-47db-91af-98c3a49a38b1

 

もし、既に有効化が完了している場合にはエラーが表示されます。その場合は既に準備ができていますので本セクションは飛ばして、次手順の「管理単位の作成」に移ってください。

 

コマンドレットが正常に完了したら、以下のコマンドレットで結果を確認します。

 Get-AzureADDirectoryRole

”User Account Administrator” と “Helpdesk Administrator” の 2 つが追加で表示されていれば完了です。

 

2. 管理単位の作成

以下のコマンドレットを実行して、管理単位を新規作成します。名前は任意のものを指定します。ここで指定した名前が、Office 365 管理センター上に表示されます。

 New-AzureADAdministrativeUnit -DisplayName "[管理単位の名前]"

 

ここでは以下の 4 つの管理単位を作成しています。

 New-AzureADAdministrativeUnit -DisplayName "Japan region"
New-AzureADAdministrativeUnit -DisplayName "Asia region"
New-AzureADAdministrativeUnit -DisplayName "North America region"
New-AzureADAdministrativeUnit -DisplayName "Europe region"

 

作成後は以下のコマンドレットを実行して、作成された管理単位を確認できます。

 Get-AzureADAdministrativeUnit

 

3. 管理単位への管理権限の設定

以下ようなコマンドレットを実行して、作成した管理単位に対して、任意の管理権限を追加します。各値やパラメーターはご自身の環境に合わせて変更ください。

 foreach($i in $admins) {
    if($i.DisplayName -eq "User Account Administrator") {
        $uaAdmin = $i
        }
    if($i.DisplayName -eq "Helpdesk Administrator") {
        $helpDeskAdmin = $i
        }
    }

$ChinaUA = Get-AzureADUser -Filter "UserPrincipalName eq 'LeeG@contosoau.onmicrosoft.com'"
$uaRoleMemberInfo = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo -Property @{ ObjectId =  $ChinaUA.ObjectId }
$ChinaUnit = Get-AzureADAdministrativeUnit | Where-Object -Property DisplayName -Eq -Value "Asia region"
Add-AzureADScopedRoleMembership -RoleObjectId $helpDeskAdmin.ObjectId -ObjectId $ChinaUnit.ObjectId -RoleMemberInfo $uaRoleMemberInfo

$EUUA = Get-AzureADUser -Filter "UserPrincipalName eq 'MiriamG@contosoau.onmicrosoft.com'"
$uaRoleMemberInfo = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo -Property @{ ObjectId =  $EUUA.ObjectId }
$EUUnit = Get-AzureADAdministrativeUnit | Where-Object -Property DisplayName -Eq -Value "Europe region"
Add-AzureADScopedRoleMembership -RoleObjectId $helpDeskAdmin.ObjectId -ObjectId $EUUnit.ObjectId -RoleMemberInfo $uaRoleMemberInfo

$USUA = Get-AzureADUser -Filter "UserPrincipalName eq 'JohannaL@contosoau.onmicrosoft.com'"
$uaRoleMemberInfo = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo -Property @{ ObjectId =  $USUA.ObjectId }
$USUnit = Get-AzureADAdministrativeUnit | Where-Object -Property DisplayName -Eq -Value "North America region"
Add-AzureADScopedRoleMembership -RoleObjectId $uaAdmin.ObjectId -ObjectId $USUnit.ObjectId -RoleMemberInfo $uaRoleMemberInfo

$JPUA = Get-AzureADUser -Filter "UserPrincipalName eq 'inoue@contosoau.onmicrosoft.com'"
$uaRoleMemberInfo = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo -Property @{ ObjectId =  $JPUA.ObjectId }
$JPUnit = Get-AzureADAdministrativeUnit | Where-Object -Property DisplayName -Eq -Value "Japan region"
Add-AzureADScopedRoleMembership -RoleObjectId $uaAdmin.ObjectId -ObjectId $JPUnit.ObjectId -RoleMemberInfo $uaRoleMemberInfo

$JPUA = Get-AzureADUser -Filter "UserPrincipalName eq 'matsumoto@contosoau.onmicrosoft.com'"
$uaRoleMemberInfo = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo -Property @{ ObjectId =  $JPUA.ObjectId }
$JPUnit = Get-AzureADAdministrativeUnit | Where-Object -Property DisplayName -Eq -Value "Japan region"
Add-AzureADScopedRoleMembership -RoleObjectId $helpDeskAdmin.ObjectId -ObjectId $JPUnit.ObjectId -RoleMemberInfo $uaRoleMemberInfo

 

設定完了後、以下のコマンドレットを実行して、各管理単位に追加された管理権限を確認することができます。

 Get-AzureADScopedRoleMembership -ObjectId [管理単位のオブジェクト ID] | FL

 

4. 管理単位へのメンバー追加

以下のようなコマンドレットを実行して、各管理単位に含めたいユーザーを追加していきます。全管理単位と全ユーザー分実行します。

 $USAU = Get-AzureADAdministrativeUnit -Filter “displayname eq 'North America region'”
$USUser1 = Get-AzureADUser -Filter "UserPrincipalName eq 'AlexW@contosoau.OnMicrosoft.com'"
Add-AzureADAdministrativeUnitMember -ObjectId $USAU.ObjectId -RefObjectId $USUser1.ObjectId
$USUser2 = Get-AzureADUser -Filter "UserPrincipalName eq 'ChristieC@contosoau.OnMicrosoft.com'"
Add-AzureADAdministrativeUnitMember -ObjectId $USAU.ObjectId -RefObjectId $USUser2.ObjectId
$JPAU = Get-AzureADAdministrativeUnit -Filter “displayname eq 'Japan region'”
$JPUser1 = Get-AzureADUser -Filter "UserPrincipalName eq 'maeda@contosoau.onmicrosoft.com'"
Add-AzureADAdministrativeUnitMember -ObjectId $JPAU.ObjectId -RefObjectId $JPUser1.ObjectId
$JPUser2 = Get-AzureADUser -Filter "UserPrincipalName eq 'imai@contosoau.onmicrosoft.com'"
Add-AzureADAdministrativeUnitMember -ObjectId $JPAU.ObjectId -RefObjectId $JPUser2.ObjectId
|
|  (対象となる管理単位とユーザー全てに対して実行します)
|

 

以上で設定は完了です。PowerShell のデモ スクリプトは以下のサイトをご参照ください。

TITLE: Working with Administrative Units
URL: /en-us/powershell/azure/active-directory/working-with-administrative-units?view=azureadps-2.0