AADCを利用したオブジェクトの同期処理の流れを順を追って確認してみた。

#はじめに

本投稿では、Azure AD Connect(以下、AADC)を用いて、オンプレミスADからAzureADへユーザーオブジェクト
の同期を行い、AADC内で実行される一連を処理を順を追って詳細に確認してみた。
ここでは、ユーザーオブジェクトをオンプレミスAD上に新規作成をし、AADCのDeltaSynchronization(差分同期)
機能を用いて、AzureADへオブジェクトの同期を行った。

#同期処理の概略図
AADCでDeltaSync(差分同期)を行った際の一連の処理の流れの概略図となる。
![同期処理概略図.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/72db2fa2-b9cc-e555-274d-131002987e33.png)
①Delta Import (オンプレAD)
②Delta Import (AzureAD)
③Delta Synchronization (オンプレAD)
④Delta Synchronization (AzureAD)
⑤Export(AzureAD)
⑥Export(オンプレAD)

#一連の処理を一つひとつ確認してみた。

**①Delta Import (オンプレAD)**
ここの処理で、オンプレAD用のコネクタスペースにオンプレADとのオブジェクトの
差分が取り込まれる。ここではオンプレAD用のコネクタから、手動でDelta Importを行ってみる。
![pic1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/a3754082-a47e-141d-f6d4-2bf65a802f0e.png)
ここでは、新規にユーザーオブジェクト(testuser3)を作成したので、以下の画面の通り、
コネクタスペースに新規にオブジェクトが取り込まれたことが確認できる。
![pic12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/65c434cb-5032-69fe-80b9-268e78bf9ef9.png)




**②Delta Import (AzureAD)**
ここの処理で、AzureAD用のコネクタスペースにAzureADとのオブジェクトの
差分が取り込まれる。ここではAzureAD用のコネクタから、手動でDelta Importを行ってみる。
![pic6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/a606d876-f2cb-7cba-ca74-b8bb9212aabd.png)

ここでは、オンプレADからAzureADへの一方向の同期処理であるため、コネクタスペースに新規オブジェクトは取り込まれない。
![pic8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/8bc9315f-0ae3-ec80-e963-0aefa6b6e866.png)

**③Delta Synchronization (オンプレAD)**
オンプレADのコネクタスペースとメタバース間でオブジェクトの同期を行います。オンプレAD用のコネクタから手動実行。
![pic3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/5db25d81-e168-e3cf-52e0-f30646a7b2f0.png)
以下の通り、先ほどコネクタスペースに取り込まれたオブジェクトがメタバースにも取り込まれたことが確認できる。
![pic4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/7a9bdde3-c59f-294a-0721-e789ab3ff61b.png)
取り込まれたオブジェクトをダブルクリックすると詳細を確認できる。各属性がどの同期規則よって取り込まれたかを確認することができる、
![pic13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/94dff8de-b86d-89bf-a3a3-2918656062d6.png)


なお、ここではSourceAnchorにObjectGUID属性を用いている。ObjectGUIDをBse64 encodeしたものが、SourceAnchorにセットされる。以下のPowershellコマンドをAD上で実行すると、今回用いたユーザーのObjectGUID属性をBase64 encodeしたものがSourceAnchorに設定されていることが分かる。この値は最終的に、AzureAD上のImmutableIDといった属性にセットされる。

```powershell
$guid = (get-aduser -filter 'Name -like "*testuser3*"').objectguid
$immutableid = [System.Convert]::ToBase64String($guid.ToByteArray())
$immutableid
wMJSnS0INUmaGM5BrQoNAA==
```

**④Delta Synchronization (AzureAD)**
AzureADのコネクタスペースとメタバース間でオブジェクトの同期を行う。AzureAD用のコネクタから手動実行。
![pic7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/8ba08f6c-07fc-78c0-ef73-084e0bbf6e71.png)


**⑤Export (AzureAD)**
ここで、AzureAD用コネクタスペースからAzureADにユーザーの同期を行う。先ほどメタバースに取り込まれた新規ユーザーオブジェクトが、AzureAD用コネクタスペースのステージングオブジェクトとして、AzureADに同期される。
![pic9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/a583b2d1-6790-7d69-29b7-1d609af70388.png)

Exportをした結果、先ほど作成したオブジェクトがAzureAD側に取り込まれたことが分かる。
![pic14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/9a372f4d-3ad5-0a53-17e8-5424d07477d3.png)

**⑥Export (オンプレAD)**
オンプレAD用コネクタスペースでExportを行う。
![pic15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/b1ce5508-d7e7-31a2-a24b-6fe8894c024c.png)
もちろんこの処理によって、オンプレAD側には何も取り込まれない。
![pic16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688695/aa0f9fc7-c00c-5a82-d853-c36af748517a.png)