非ルーティング（".local"）ドメイン の ハイブリッドID を Azure AD Connect Cloud Sync で構成する

# ハイブリッド ID を Azure AD Connect Cloud Sync で用意する

オンプレミス と Azure を連携させた環境で検証を行いたかったので、まずは ハイブリッドID を Azure AD Connect Cloud Sync で構成してみました。以下のような環境です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/d521c191-dd48-4c6f-12bf-017c266e7df5.png)

- オンプレミス側に Active Directory (contoso.local) 構築済み
- Azure AD Connect Cloud Sync のエージェント を導入するサーバーを用意（ドメイン参加済み）済み
- Azure AD は デフォルトのドメイン (****.onmicrosoft.com) の状態
- AADSyncUsers OU 内の ユーザーのみ を Azure AD と同期させたい

# Azure AD Connect と Azure AD Connect Cloud Sync

オンプレミスの Active Directory のアカウントを Azure AD に同期して、ハイブリッド ID を実現する場合には、Azure AD Connect と Azure AD Connect Cloud Sync の 2つの方法があります。
Azure AD Connect の方が細かな制御ができるイメージがあり、利用されている場合も多いかとは思うのですが、Azure AD Connect Cloud Sync では、Azure AD Connect では実現できないシナリオが実現できる場合もあります。

例えば、一つの Azure AD テナントに対して、複数の Azure AD Connect を立てるような場合です。
オンプレミス 2拠点以上 に異なる AD があり、拠点間がWAN回線網などで繋がっていないというような場合にも、対応できます。

- Azure AD Connect Cloud Sync (対応している）
  - [既存のハイブリッド AD フォレストで Azure AD Connect クラウド同期をパイロットする](https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/plan-cloud-sync-topologies#piloting-azure-ad-connect-cloud-sync-in-an-existing-hybrid-ad-forest )
- Azure AD Connect (対応していない）
  - [複数のフォレスト、1 つの Azure AD テナントに対する複数の同期サーバー](https://learn.microsoft.com/ja-jp/azure/active-directory/hybrid/plan-connect-topologies#multiple-forests-multiple-sync-servers-to-one-azure-ad-tenant )

また、いつの間にか、同期する際の推奨が Azure AD Connect Cloud Sync となっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/96908188-6804-8b44-f59e-d1354cfd2849.png)

こまかな機能比較はこちらです。

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/what-is-cloud-sync?toc=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fazure%2Factive-directory%2Fcloud-sync%2Ftoc.json&bc=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fazure%2Fbread%2Ftoc.json#comparison-between-azure-ad-connect-and-cloud-sync

また、動作のしくみはこちらです。

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/concept-how-it-works#synchronization-flow



# Step 1. 非ルーティング ドメインの準備を整える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/d521c191-dd48-4c6f-12bf-017c266e7df5.png)

オンプレミス Active Directory (contoso.local) と Azure Active Directory のドメイン(****.onmicrosoft.com) を合わせていきます。

- Step 1-1. Azure Active Directory に カスタムドメイン を追加する
- Step 1-2. オンプレミス Active Directory  プライマリ ドメイン を変更する

という順番で進めます。
なお、その他もろもろの前提条件は、以下を参照してください。

 - [Azure AD Connect の前提条件](https://learn.microsoft.com/ja-jp/azure/active-directory/hybrid/how-to-connect-install-prerequisites?source=recommendations )
 - [Azure AD Connect クラウド同期の前提条件](https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/how-to-prerequisites?tabs=public-cloud )



## Step 1-1. Azure Active Directory に カスタムドメインを追加する
この手順は必須ではありませんが、デフォルトの *.onmicrosoft.com のままというのも、なんだかなぁ～　と思い、変更してあります。

Azure AD テナントを作成した際には、 *.onmicrosoft.com ドメイン でテナントが作成されています。
この初期ドメイン名は、変更したり削除したりすることはできませんが、自分の所有するドメインを追加することならできます。
以下の通り、 "uuesama.com" を設定してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/da3354ae-a917-38fc-ec75-66d385b87e95.png)

設定方法は簡単です。
Azure Portal より Azure AD を開き、[管理] – [カスタムドメイン名] へと進みます。
[カスタムドメインの追加] より、追加したいカスタムドメインを指定すると、以下のような TXT レコード が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/90748bd1-3155-d333-16a5-a926b4dcb029.png)

ドメイン レジストラーに DNS 情報を追加（表示された TXTレコード を作成）すれば、利用可能になります。
公開情報は [こちら](https://learn.microsoft.com/ja-jp/azure/active-directory/fundamentals/add-custom-domain )です。


## Step 1-2. オンプレミス Active Directory で 代替 UPN サフィックスを追加して プライマリ ドメイン を変更する

非ルーティング（".local"）ドメイン の場合、Azure AD のカスタムドメインとして追加することはできません。
しかしながら、オンプレミスの Active Directory のドメインが .local ドメインであることは、時々あります。
そんな場合には、オンプレミスの Active Directory で 代替 UPN サフィックス の追加をすることで、対応することができます。

なお、参考までに、 UPN ってどこだっけ？　を、まとめてみました。

- [ユーザーの名前付け属性](https://learn.microsoft.com/ja-jp/windows/win32/ad/naming-properties
 )
- [User Name Formats](https://learn.microsoft.com/en-us/windows/win32/secauthn/user-name-formats#user-principal-name )

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/adfea6ee-28e6-82c1-d512-14f52558cc84.png)

では以下の手順で、代替 UPN サフィックス "uuesama.com" を追加して、AzureAD と UPN サフィックス が一致するように、変更します。
AD DS ドメイン コントローラーで、サーバー マネージャーで [ツール] - [Active Directory ドメインと信頼] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/7a57a1cf-1dd5-05bd-8357-75b2d1b7d4de.png)


[Active Directory ドメインと信頼関係] を右クリックし、 [プロパティ] を選択します。
[UPN サフィックス] タブの [代替 UPN サフィックス] ボックスに、新しい UPN サフィックスを入力して追加します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/3f4f5233-cb7b-5e47-c4b2-e30ba1698960.png)

これで 代替UPNサフィックス を追加できました。
試しにユーザーのプロパティを開き、[アカウント] のタブを確認してみると、追加したUPNサフィックスが利用できるようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/8f7b58cb-f809-456d-e0c1-4c60722125ce.png)

ハイブリッドID として構成したいアカウントについて、UPNサフィックス を変更しておきます。
今回は demouser01 と demouser02 しかいませんので GUI でそのまま変更して保存しておきますが、ユーザー数が多い場合には公開ドキュメントで紹介されている以下の PowerShell を利用して一気に変更すればよいかと。

```Powershell
$LocalUsers = Get-ADUser -Filter "UserPrincipalName -like '*contoso.local'" -Properties userPrincipalName -ResultSetSize $null
$LocalUsers | foreach {$newUpn = $_.UserPrincipalName.Replace("@contoso.local","@contoso.com"); $_ | Set-ADUser -UserPrincipalName $newUpn}
```

https://learn.microsoft.com/ja-jp/microsoft-365/enterprise/prepare-a-non-routable-domain-for-directory-synchronization?view=o365-worldwide#use-powershell-to-change-the-upn-suffix-for-all-of-your-users


# Step2. Azure AD Connect Cloud Sync を構成する

事前準備が整ったので、Azure AD Connect Cloud Sync を構成していきます。
概ね以下のようなステップになります。

- Step2-1. (Azure Portal）Azure AD Connect プロビジョニング エージェント をダウンロードする
- Step2-2. (オンプレミス）ドメイン参加済みの サーバー に エージェントをインストールする
- Step2-3. (Azure Portal） Azure AD Connect Cloud Sync の設定を行う
- Step2-4. (Azure Portal）同期を有効化する
- Step2-5. (Azure Portal） Azure AD 上にユーザーが作成されたことを確認する


## Step 2-1. (Azure Portal）Azure AD Connect プロビジョニング エージェント をダウンロードする

Azure Portal より Azure AD を開き、[管理] - [Azure AD Connect] をクリックします。
Azure AD Connect のページに遷移するはずですので、左端 [クラウド同期] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/f9e23d9a-e326-0765-32bd-5c11a1b741f6.png)

[Agents] - [オンプレミスのエージェントをダウンロードします] - [使用条件に同意してダウンロードする] と進むと、 AADConnectProvisioningAgentSetup.exe (23MB程度) がダウンロードできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/f32fd0f4-e3a3-19c7-ad6e-a6beddc30756.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/3747b20f-bf0c-ccb4-2555-0c6699540936.png)


## Step 2-2. (オンプレミス）ドメイン参加済みの サーバー に エージェントをインストールする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/d521c191-dd48-4c6f-12bf-017c266e7df5.png)

エージェントを導入したいサーバーで、ダウンロードした AADConnectProvisioningAgentSetup.exe を実行します。
このサーバーが ADに対してのクエリ実行や、結果のフィルタ、Azure AD プロビジョニング サービス への送信などの役割を担います。
なお、送信接続のみで動作します（オンプレミス FW の受信の穴あけがいらない）。
動作の詳細は [こちら 「クラウド同期の詳細情報 - しくみ」　](https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/concept-how-it-works ) です。


基本的に [公開情報通り](https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/how-to-install ) ですが、実施した際のキャプチャも以下に載せておきます。

<details><summary>手順例</summary>

AADConnectProvisioningAgentSetup.exe をダブルクリックしてインストールを開始します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/b23c3188-ac2d-c5a9-9def-f2667ee4481f.png)

同意してインストールを実行します。
インストールが完了すると、デスクトップ上にアイコンが追加され、初期設定が始まります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/486bdb10-a3c5-cd04-46a2-4ba6085dc406.png)

次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/52abafcf-8277-2163-2814-c15b0b39ff89.png)

Azure AD Connect Cloud Sync を構成しますので、上部を選択して次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/40edb745-3c6d-87d7-37fe-b761d9347ca5.png)

AzureAD Global Admin でサインインします。
IEのエラーが出る場合には、IEセキュリティ強化の構成を調整します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/208b3ca5-0429-8eec-5b68-47e62712f401.png)

DomainAdmin でログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/1633bc66-47bc-ae1a-4cf4-e70088b756d8.png)

次へ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/edac3adb-d7f8-52f9-b24f-19e54bb285b9.png)

完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/666be688-af8c-49b9-db65-b13029bedae6.png)

エージェントを導入した サーバー には、以下のように、Agent本体 と、Agent をアップデートするサービスがインストールされ、サービスが稼働していることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/ca5addb5-a815-ed33-3e4c-f94d5a1127a6.png)

また、AD には provAgentgMSA が作成されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/93372611-44af-dc26-82e1-4e434a7b9663.png)

</details>

## Step2-3. (Azure Portal） Azure AD Connect Cloud Sync の設定を行う

Azure AD Connect Cloud Sync の設定を行います。
今回は、ADの全ユーザーではなく、AADSyncUsers OU 内のユーザーのみに限定して Azure AD に同期するように設定してみます。


Azure Portal より Azure AD を開き、[管理] - [Azure AD Connect] をクリックします。
Azure AD Connect のページに遷移するはずですので、左端 [クラウド同期] を選択します。
Step2-2. が上手くいっていれば、Agents の ところに、エージェントを導入したサーバーが表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/7eae93f9-f793-86c1-2d2c-d5d732f463e9.png)

[構成] を開き、[新しい構成] を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/7b7f6e26-e852-9f83-a6e9-a5d295c9813f.png)

この構成を適用する Active Directory ドメインを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/e3e8850e-766d-a1a1-8dd5-bf45bffb3308.png)

作成を押すと、まずは 構成 が作成されますが、この時点では特にアカウントの動機などは始まりません。
まずは構成の箱を作り、その中に詳細設定を詰めて、そして同期の有効化すると、同期がスタートする仕組みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/ba0bb67e-89c0-127a-28a0-4ea6ecf6613a.png)

構成 が作成されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/75c46214-7bfe-215e-30fd-6857114cb5ff.png)

作成した 構成 をクリックして、設定を行います。
スコープフィルタの追加を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/022d367d-93ec-03b3-3548-01a178ae506a.png)

[選択した組織単位] で、AADSyncUsers のみを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/6f262ed2-b39a-dd88-0672-a20eb274c3d5.png)

形式は次のような形式での指定となります。

``` txt
ou=AADSyncUsers,dc=contoso,dc=local
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/e0d937f4-e37a-f437-07fc-e0fa645d9a60.png)

スコープフィルタを保存します。


## Step2-4. (Azure Portal）同期を有効化する

属性のマップなど、他必要な設定があれば設定をおこなってから、有効化を行います。
有効化を行うと、ユーザーの同期が始まります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/a59d60e2-3ca7-4c8b-9800-895536236092.png)


なお、いきなり同期を開始するのではなく、推奨となっている テスト を試してからに同期へと進んだ方が良いかと思います。
プロビジョニングのテストでは、指定したユーザーに対してのみ同期を試すことができ、全体に適用する前に、意図したとおりに同期が行われるかどうかを確認できます。
[プロビジョニングのテスト] を選択すると、オンデマンドでプロビジョニング のページが開き、テスト が可能です。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/86e18d1e-4c1e-e131-9dd2-5c8b6b1f4d89.png)

形式は次のような形式での指定となります。
``` txt
CN=demouser01,ou=AADSyncUsers,dc=contoso,dc=local
```

テストした結果、問題なさそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/c2357490-9c36-eb85-b841-d6a0abadaaf3.png)


それでは、有効化を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/9102a9a3-2029-9740-984e-f2922fbeff22.png)



## Step2-5. (Azure Portal） Azure AD 上にユーザーが作成されたことを確認する

同期が有効化されたら、数分でアカウントが同期されてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/15bb9380-a58b-c743-871c-25ec098d9bad.png)

Azure Portal にもログインできることを確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/e1214960-5ee8-d7bc-24d1-e4dfb9d3fd23.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/19cc8b14-195d-41d7-daee-3820334d2557.png)

オンプレミス Active Directory で設定していた ID / PASS のまま、ログインできることが確認できました。
（実用の際は、 MFA 強制など、各種ケアが必要です。）


# まとめ
Azure AD Connect Cloud Sync、便利ですね。
 - Azure Portal から管理を行うのが、　Azure AD Connect Cloud Sync
 - オンプレミスで 管理ツールを使って管理を行うのが、Azure AD Connect
という位置づけで、Azure Portal からすぐ状況などが確認できる点など使いやすいです。

サクッと状況がわかり、いい感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461633/02a06ad6-d8d0-96c3-8bfd-83a7dbc16be6.png)


# 参考

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/how-to-prerequisites?tabs=public-cloud

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/plan-cloud-sync-topologies#piloting-azure-ad-connect-cloud-sync-in-an-existing-hybrid-ad-forest

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/what-is-cloud-sync?toc=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fazure%2Factive-directory%2Fcloud-sync%2Ftoc.json&bc=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fazure%2Fbread%2Ftoc.json#comparison-between-azure-ad-connect-and-cloud-sync

https://learn.microsoft.com/ja-jp/azure/active-directory/cloud-sync/concept-how-it-works#synchronization-flow

https://learn.microsoft.com/ja-jp/microsoft-365/enterprise/prepare-a-non-routable-domain-for-directory-synchronization?view=o365-worldwide#what-if-i-only-have-a-local-on-premises-domain

https://learn.microsoft.com/ja-jp/azure/active-directory/hybrid/plan-connect-userprincipalname#upn-format

https://learn.microsoft.com/ja-jp/azure/active-directory/fundamentals/add-custom-domain