Office365のディレクトリ同期で残ったゴミを削除する

※この手法はMicrosoft社によってサポートされていません。

テスト用に作った検証環境から本番環境への移行や、Active Directoryのロールバックなどにより、ローカルのActive Directory上に無いユーザがOffice365側に残ってしまうことがあります。通常の利用の中ではなかなか発生しませんが、一度発生してしまうとなかなかハマってしまう事象です。

というのも、Office365ではディレクトリ同期で作成したアカウントはディレクトリ同期ツールによってしか削除ができません。ところが、ディレクトリ同期ツールは、ローカルアカウントのGUIDから生成したsourceAnchorをキーにしてアカウントの関連付けをしますので、同じ名前のアカウントを後から作成しても、違うオブジェクトとしてOffice365側に作成されてしまいます。なおかつ、同じ名前で再作成しますが、既に存在するため、名前が_____(アンダーバー)@example.comのようなアカウントになってしまい、実効上使い物にならなくなってしまいます。

アカウントのGUIDが分かっている場合は、同じGUIDでAD上にアカウントを作成→同期→ADでアカウント削除→再同期で消せますが、分からない場合はちょっと面倒です。(sourceAnchorからGUIDが生成できればいけるのかな?)

1.例えば、「adfs service」「testuser one」「testuser two」 のアカウントを消す場合を考えます。

2.ディレクトリ同期ツールのインストールされたサーバ上から、Identity Managerを起動し、【Joiner】をクリックします。
インストールしてもショートカットは登録されませんが、プログラムは以下にあります。よく使うのでショートカットを作成しておくと良いでしょう。MIISAdminグループのメンバ(デフォルトは同期ツールをセットアップしたユーザ)で起動します。

C:Program FilesMicrosoft Online Directory SyncSYNCBUSUIShellmiisclient.exe

3.Management Agent: 【TargetWebService】、Disconnector Type:【All Disconnector Types】を選択し、【Search】をクリックするとDisconnectorsの一覧が表示されます。これが、同期が外れているOffice365側のユーザの一覧です。

4.Disconnectorを開くと、各オブジェクトの種別(Object type)、ユーザ名(displayName)が分かりますので、対象ユーザを特定しsourceAnchorを保存しておきます。

5.(念のため)既存のユーザ分のsourceAnchorも保存しておきます。【Metaverse Search】を開き、Scope by Object Type:【person】を選択して【Search】を押すとユーザ一覧が出ますので、右クリックで表示項目をdisplayNameとsourceAnchorにして一覧を保存します。

6.sourceAnchorを仮に収納できる未使用のフィールドを決めます。今回はメモを利用します。Active Directoryユーザとコンピュータなどで、既存ユーザのメモ欄に5で取得したsourceAnchorの値を入力します。

7.【Management Agents】メニューから【SourceAD】を右クリックし、【Properties】を開きます。

8.【Configure Join and Projection Rule】から、【user】の【Join Rule】を開きます。既存のルールが記載されてますので、ここを保存しておきます。

objectGUID , Rules Extentioin - join::ad:objectGUID->mv:sourceAnchor , sourceAnchor

9.既存のルールを【Remove Condition】で削除し、メモ(info)から直接(Direct)Metaverseの項目(sourceAnchor)にインポートされるようにし、【Use rules extension to resolve】のチェックを外して【Add Condition】します。

10.【Configure Attribute Flow】をクリックし【Object Type: user】を展開します。

11.objectGUIDからsourceAnchorを生成する既存の設定をメモしておきます。Editを開いて詳細もメモします。

 Flow rule name: import::ad:objectGUID->mv:sourceAnchor

12.【Management Agents】から【SourceAD】【Run】を開き、【Full Import Full Sync】を実行します。(ルールを変えた場合は、DeltaではなくFullで実行します)

13.エラーが出てないことを確認し、削除するユーザ用のダミーアカウントを作成し、そのアカウントのメモ欄に4番の値を設定します。

14.①SourceAD – Full Import Full Sync ②TargetWebService – Full Confirming Import ③TargetWebService – Exportの順に実行して、フル同期をかける。

15.ここでOffice365ポータルに接続して確認すると、削除対象のユーザがダミーユーザに名前が変更されて同期されています。ここまで来ればあと一歩です。

16.Active Directoryユーザーとコンピュータからダミーアカウントを削除します。

17.差分同期を実施すると、ローカルのActive Directoryで削除された3アカウントが、Office365側でも削除されます。

18.8・9で設定したJoin Ruleを元に戻します。

19.10・11で設定したAttribute Flowを元に戻します。

20.既存アカウントのメモ欄を消去し、再度フル同期をかけて作業は完了です。
なお、グループも同じようなgroupルールがあるので、上記と同様の手順で実行すれば対応可能です。

One thought on “Office365のディレクトリ同期で残ったゴミを削除する

  1. Pingback: ADFS+Office365 フェデレーションドメイン登録時のトラブルシューティング(2) « Always on the clock

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です