Azure AD管理権限の委任

皆さんこんにちは。国井です。

Azure ADでもOUって作れますか?

これまでに多くの人に質問を受け、その都度「できるけど面倒ですよ」とお答えしてきました。
つい先日、「じゃあどうやって設定するのですか?」と聞かれ、あっさりネットで調べたら出てくるだろうと思っていたら、意外にも無かったので、ここに書き留めておくことにしました。

Azure ADの管理者ロールには、いくつかのものがありますが、全体管理者のロールが割り当てられているユーザーがAzure AD全体に対する管理ができるユーザーであることはご存知かと思います。
これに対して、一部のユーザー/グループだけを管理する、いわゆるOU的な管理のしかたをしたい場合、Azure ADではAdministrative Unit、略してAUというものが用意されています。

image

AUはOUと同じで、

1. AUの作成
2. AUのメンバーの定義
3. AUの管理者と管理権限の定義

の3つを設定すればよいのですが、AUはOUと違ってGUIから設定できません
これが冒頭に「できるけど面倒ですよ」と言った理由です。

じゃあ、今日は重い腰を上げて、その面倒な設定を行ってみることにしますか。

0. 準備

AUの設定はPowerShellから行います。Azure AD用のPowerShellモジュールは

Install-Module AzureAD

を実行すればインストールされます。
なお、インストール後にコンソールを閉じたので、再度ロードしたいというときは「Import-Module AzureAD」でどうぞ。
インストールが完了したら、「Connect-AzureAD」コマンドレットで接続しましょう。

1. AUの作成

AUを新規作成するときはNew-AzureADAdministrativeUnitコマンドレットを使います。例えば、US Officeという名前のAUを作る場合なら、こんな感じ。

New-AzureADAdministrativeUnit -Description "United States" -DisplayName "US Office"

実行すると、AUが作成されるのと同時にオブジェクトIDが割り当てられます。このIDが後で必要になるので、

$USOffice=Get-AzureADAdministrativeUnit | Where-Object{$_.displayname -match "US"}

$USOffice変数にセットしておきましょう。そうすれば後で$USOffice.ObjectIdって感じで呼び出せます。

2. AUのメンバーの定義

作成したAUのメンバーはAdd-AzureADAdministrativeUnitMemberコマンドレットを使います。ObjectIdオプションでAUのメンバーとなるユーザーやグループのオブジェクトID、RefObjectIdオプションでAUのオブジェクトIDをそれぞれ指定します。

Add-AzureADAdministrativeUnitMember –ObjectId <ユーザーのオブジェクトID> -RefObjectId $USOffice.ObjectId

もし、場所が米国に設定されているユーザー全員をAUのメンバーにしたいということであれば、

Get-AzureADUser -Filter "UsageLocation eq 'US'" | Foreach-Object{
Add-AzureADAdministrativeUnitMember –ObjectId $_.ObjectId -RefObjectId $USOffice.ObjectId
}

これでいけます。

3. AUの管理と管理権限の定義

AUに対して設定可能な管理権限(ロール)はHelpdesk AdministratorとUser Account Administratorの2つだけです。ですので、どちらのロールを割り当てるのですが、割り当て可能なロール一覧を見てみると、

image

いない!

ということで、ロールテンプレートから上記のロールを有効化するという手順が必要になります。まずはGet-AzureADDirectoryRoleTemplateコマンドレットでロールテンプレートに登録されているロールからUser Account AdministratorのオブジェクトIDを確認し、

image

Enable-AzureADDirectoryRoleコマンドレットで有効化します。

Enable-AzureADDirectoryRole -RoleTemplateId fe930be7-5e62-47db-91af-98c3a49a38b1

もう一度、Get-AzureADDirectoryRoleコマンドレットで確認すると、今度はUser Account Administratorが出てきます。
(テンプレートのオブジェクトIDとロール一覧のオブジェクトIDは異なるので注意)

image

それからロール割り当てをするとき、割り当てるユーザーをMicrosoft.Open.AzureAD.Model.RoleMemberInfoオブジェクトの変数にセットするという面倒なことをしなければなりません。
事前にGet-AzureADUser コマンドレットで管理ユーザーのオブジェクトIDを確認し、$user01変数にユーザーの情報をセットします。

$user01=Get-AzureADUser -ObjectId b013e28a-7cf6-4988-8929-cb3da96e721b

その上で、Microsoft.Open.AzureAD.Model.RoleMemberInfoオブジェクトの変数$RoleMemberをご覧のような感じで作ります。

$RoleMember = New-Object -TypeName Microsoft.Open.AzureAD.Model.RoleMemberInfo
$RoleMember.ObjectId = $user01.ObjectId

$RoleMember 変数ができたら、いよいよuser01@xxxxx ユーザーにUS Office AUを対象としてUser Account Administratorロールを割り当てます。
割り当てるときはAdd-AzureADScopedRoleMembershipコマンドレットを使います。
3a08e84c-4318-4cb7-a83e-dc5a6d8474f0というのはUser Account AdministratorのオブジェクトIDです。

Add-AzureADScopedRoleMembership -ObjectId $USOffice.ObjectId -RoleObjectId 3a08e84c-4318-4cb7-a83e-dc5a6d8474f0 -RoleMemberInfo $RoleMember

これで出来上がり。実際に該当のユーザーでサインインして、Microsoft 365管理センター (https://portal.office.com) にアクセスすると、

image

AUのメンバーとなっているユーザーだけがユーザー一覧に表示され、管理できることがわかります。