EntraIDのハードマッチのやり方

オンプレミスのADとEntraIDを同期している環境において
オンプレミスADが壊れた(使用できなくなった)場合の対処を検証したので
備忘録として残すことにしました。


オンプレミスADとEntraIDについても細かい説明は別の記事を参照するとして
実際にやったことを残しています

ざっくりした内容としては
旧ADとEntraIDで同期済
新ADを作成し、旧ADと同じ名前でドメイン名、ユーザ、オブジェクトを作成する
新ADとEntraIDでハードマッチを実施する


# 環境
①オンプレミスADとEntraIDで特定のOUのユーザ、グループを同期している環境
②オンプレミスADに何かしらの問題が発生しサーバにログインおよびデータの取り出しが不可となる
③EntraIDについては特に影響なく正常に使用できる状態


# やりたいこと
EntraIDのユーザ、グループのオブジェクトは既に壊れたADと同期済だが継続して利用したい
新しくオンプレに作成した同じドメイン名のADに同じ名前のユーザ、グループを作成して
新AD上のオブジェクトとEntraIDのオブジェクトを同期したい


# どうやってやるか
既に同期済なのでハードマッチと呼ばれる方法を使用して新ADのオブジェクトと紐づける
オンプレミスADとEntraIDで新しく作ったオブジェクトについてはソフトマッチと呼ばれる方法で紐づける(後述)


# 実際の手順
①オンプレミス環境にADを新規作成　ドメイン名は元々使用していたものと同じ名前にする
②新ADでユーザ、グループを新規作成(オブジェクトの名前は旧ADの時に作成していたものと同じ名前で作成する)
オンプレミスとEntraIDを同期する際にEnterprise Adminsの権限をもったドメインアカウントが必要なので作成する

③AzureAD Connect(AADC)をインストール　AADCサーバを作成したが ADにインストールしても良い
AADCサーバをADと別に作成する場合はドメイン参加する
画像がないところはデフォルトを指定している
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/98e814c8-d36d-cb9c-a5da-2b8dca9f4415.png)
カスタマイズを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/805c5b11-96a8-c44e-6af3-37395080cbc8.png)
EntraIDの管理者ユーザとパスワードを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/bdd06dc2-518c-3de7-0591-f28c2a1d8548.png)
ディレクトリの追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/a45dce00-67c9-7a01-69f9-095d24047c08.png)
予め作成しておいたEnterprise Adminsの権限をもったドメインアカウントを指定する
なぜかわからないが新しいADアカウントを作成にチェックを入れる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/b92e8e80-af96-0eb7-5493-30a25188d3a0.png)
ユーザープリンシパル名は環境に合わせて設定　UPNとかMailとか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/4614e718-587e-0931-2929-424cc47f58a8.png)
同期対象のOUを指定する場合はここで設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/cd35f86a-258d-2807-8675-c014d0aea321.png)
ユーザー識別方法は mS-DS-ConsistencyGuidを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/9d805e3b-7f69-64d6-2827-752f297a41ec.png)
インストールの最後の画面で構成が完了したら、同期プロセスを開始するのチェックを外しておく
チェックをいれたままで進めるとインストール直後に自動で同期が開始されるため
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/ba1c78ce-8501-4809-6ebe-82b98dcaebcc.png)

④EntraIDからimmutableIdを取得する
ユーザオブジェクトについてはGUIからimmutableIdが参照できるがグループは参照できないので別の方法を使用する
AADCをインストールした端末にはSynchronization Serviceのツールがインストールされているのでこれを使用する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/5cbee959-1b15-71f3-805b-dfd3a8305c41.png)
ツールを起動してConnectorsを選択するとオンプレミスのADとEntraIDが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/1a46b6c6-d09b-33ea-a845-9a128f9c3c72.png)
オンプレミスADおよびEntraIDをそれぞれ指定して右クリックからRunを実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/e440e51d-674c-2acb-6f29-31653bca665e.png)
Full Importを指定してOKを実行するとオンプレミスの情報がツールにインポートされて情報を参照することができる
ここで見たいのはEntraIDのImmutableIDなのでインポートするのはEntraID側だけでもよい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/64efad14-7db1-3a87-7c67-07430752274d.png)
インポートが完了するとOparationsに表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/15a038c3-3294-07de-6a27-b060dfd006ef.png)
ConnectorsからEntraIDを指定して右クリックからSearch Connector Space..を実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/a441a1ac-27f3-d131-2c3c-fe63c819bd1d.png)
Column Settings..を実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/a42c7ae3-86bf-bf85-f3ed-cfe480f4903e.png)
必要な項目をSelected Columnsに入れていく
sourceAnchorはimmutableIDなので必須であり他にはユーザー名やグループ名を判別するための要素を追加する
cloudAnchorが個人的にはよさそう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/02d73fa5-9314-1967-40de-ad5772ea3840.png)
Serchを実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/c8879982-6ede-4cb1-a179-45bdd76af6ab.png)
指定した項目の情報が表示される
sourceAnchorにはImmutableIDが表示されるcloudAnchorにはEntraIDのオブジェクトIDが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/792857da-6d5f-c89d-d5c5-01caecdebd79.png)
これで各オブジェクトのImmutableIDの取得ができる
エクスポートの方法がよくわからなかったのでコピーペーストでExcelに・・
⑤取得したimmutableIdをオンプレミスのADのms-ds-consistencyguidに設定する
 そのままの値では設定できないため16進数に変換して設定する
 大量にあると思うのでExcel等を使ってコマンドを作成する
 
Powershellでのコマンド例 
16進数に変換
```
$guid001=[GUID][system.convert]::frombase64string("ここにImmutableIDを入れる")
```
オンプレミスのユーザオブジェクトに設定 グループの場合はset-adgroup
```
set-aduser -Identity "ユーザ名" -replace @{'mS-DS-ConsistencyGuid' = $guid001}
```

⑥同期する

同期後はオンプレミスのデータが正となりEntraIDに反映されるため
必要な情報はあらかじめオンプレミスADのオブジェクトに設定しておくこと
グループのメンバーについても同じEntraID側だけ更新している場合はオンプレミスの情報で上書きされる

AADCの自動同期は止めているので手動で同期を実施する
AADCサーバでPowershellを開きコマンドを実行
```
Start-AdSyncSyncCycle Initial
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3857934/3863649d-9e1f-9dc8-8660-198ddae1534e.png)



⑦自動化する
AADCの自動同期を有効にする
```
Set-ADSyncScheduler -SyncCycleEnabled $true
```



# 付録
ソフトマッチ
詳細はいつか・・・