オンプレミスのActive Directory(AD)とAzure AD(Entra)を連携させるハイブリッド構成では、既存のクラウドユーザーと重複エラーが起こることがあります。本記事では、そうしたトラブルの原因や解決策、具体的な操作方法までを詳しく解説します。
背景と問題の概要
オンプレミスのActive Directory(AD)とAzure AD(Entra)を連携させる場合、通常はAzure AD Connectを用いてアカウント情報を同期し、シングルサインオン(SSO)やパスワードハッシュ同期などを行います。しかし、既にMicrosoft 365(Office 365)などを利用しており、クラウド上にアカウントが存在する状態でオンプレミスADを同期すると、「重複するアカウントがある」「属性が競合している」というエラーが発生してスムーズにアカウント統合できないケースがよく見られます。
例えば、オンプレミスADユーザーとクラウド上のユーザーが同じメールアドレス(ProxyAddresses)を持つにもかかわらず、Azure AD Connectの同期では別のユーザーと認識されてしまい、マージ(統合)されないことがあります。さらに、SoftMatch(UPNやSMTPアドレスによる自動マッチング)を有効にしても、既にクラウドに存在していた重複エラーのユーザーが正しく同期されずに取り残される場合も少なくありません。
オンプレミスADとクラウド側のアカウントが重複する主な原因
重複エラーが起こる背景には複数の要因があります。ここでは代表的な原因を整理して解説します。
原因1: ProxyAddresses属性の競合
- オンプレミスADユーザーのProxyAddresses(メールアドレス)と、クラウド上の既存ユーザーが持つSMTPアドレスが同一になっている
- 大文字と小文字の違いのみで実質同一のアドレスが競合している
- 別のユーザーに同じSMTPアドレスが設定されている
同じメールアドレスが複数のユーザーに割り当てられている場合、同期時に重複エラー(duplicate attribute error)が発生し、Azure AD Connectが同期処理を中断または失敗することがあります。
原因2: SoftMatchのマッチング失敗
SoftMatchは、Azure AD ConnectがUPN(ユーザープリンシパル名)やSMTPアドレスなどの属性を照合して「同一ユーザーである」と自動判定する仕組みです。しかし、以下のような状況で正しくマッチングが行われないケースがあります。
- クラウド側のユーザーUPNがオンプレミス側のユーザーUPNと完全に一致していない
- 既に競合が起きたユーザーに対しては、SoftMatchを有効にしても再試行されない
- ProxyAddressesやsignInNamesなどの重要属性に重複があり、同期がブロックされている
解決策のステップ
重複エラーを解消して、オンプレミスADユーザーをクラウド上の既存アカウントと統合するためには、以下のステップを踏むことが一般的です。
1. SoftMatchの有効化
まずは、SoftMatchが機能する状態を確認します。以下のPowerShellコマンドで、UPNやSMTPアドレスによるSoftMatchを有効化できます。
Set-MsolDirSyncFeature -Feature EnableSoftMatchOnUpn -Enable $true
この設定を有効にしておくことで、新規に同期を行うユーザー同士であれば、Azure AD ConnectがUPNやSMTPアドレスを照合して自動的にマージしてくれます。ただし、既に重複エラーを起こしているユーザーに対しては、このSoftMatchのみでは解決しない場合があります。
2. ProxyAddressesの重複確認と修正
既存ユーザーとの重複を招いている場合、オンプレミスADとクラウド上のユーザーそれぞれのProxyAddresses(特にSMTPアドレス)を丁寧にチェックし、不要な値や誤った値を修正または削除します。以下に簡単な確認手順の例を示します。
PowerShellコマンド例(オンプレミスAD側)
# 例: 重複している可能性のあるメールアドレスで検索
Get-ADUser -Filter {ProxyAddresses -like "*smtp:重複アドレス*"} -Properties ProxyAddresses |
Select-Object SamAccountName, ProxyAddresses
オンプレミスAD側で上記のコマンドを実行して、目的のメールアドレスが設定されているユーザーを確認し、意図しない重複がないか精査します。
PowerShellコマンド例(クラウド側/Azure AD側)
# Azure AD PowerShell (旧MSOnlineモジュール) を使用している例
Get-MsolUser -All | Where-Object {$_.ProxyAddresses -match "重複アドレス"} |
Select-Object UserPrincipalName, ProxyAddresses
上記コマンドでクラウド上のユーザーについても同様に確認します。もし同一のメールアドレスが複数ユーザーに設定されていれば、いずれかを修正・削除するなどの対策が必要です。
| ステータス | 対策例 |
|---|---|
| 同じアドレスが2人以上で利用 | どちらか正しい所有者のみに割り当て、片方は削除 |
| 大文字/小文字の揺れ | 一貫した形式(通常は小文字)で再設定 |
| 不要なエイリアス | 適切なメールアドレスのみ残し、不要なエイリアスは削除 |
3. ImmutableID(ハードマッチ)による強制マージ
SoftMatchが働かない、あるいは既に重複エラーとなっていてどうにもならないユーザーに対しては、「ImmutableID(不変のID)」を使ったハードマッチという手法があります。オンプレミスADユーザーのObjectGUIDをBase64変換した値をクラウド上のユーザーのImmutableID属性に直接設定し、強制的に「同一人物」として認識させる方法です。
Microsoft Graph PowerShellを使用した手順例
Microsoft Graph PowerShellは今後推奨されるモジュールの一つです。MSOnlineモジュールの代わりに、こちらでImmutableIDを設定する手順を例示します。
- オンプレミスユーザーのObjectGUIDを取得し、Base64変換する
# オンプレミスADのユーザーを取得
$OnPremUser = Get-ADUser -Identity "<sAMAccountName>" -Properties ObjectGUID
# ObjectGUIDをBase64文字列に変換 (ImmutableIDとして利用)
$immutableId = [System.Convert]::ToBase64String($OnPremUser.ObjectGUID.ToByteArray())
- Microsoft Graph PowerShellモジュールのインストールと接続
Install-Module Microsoft.Graph -Scope CurrentUser
Connect-MgGraph -Scopes "User.ReadWrite.All"
- Azure AD上の既存ユーザーにImmutableIDを設定
Update-MgUser -UserId "<クラウドユーザーのUPNまたはオブジェクトID>" -OnPremisesImmutableId $immutableId
このコマンドで、クラウド側のユーザーにオンプレミスADのObjectGUID(Base64)を上書き設定します。これによりAzure AD Connectが「オンプレミスのユーザーとクラウドユーザーは同一」であると認識し、同期時にマージされます。
- Delta Sync(差分同期)の実行
ImmutableIDを設定した後は、Azure AD Connect側でDelta Syncを走らせて同期状態を更新します。Azure AD Connectサーバーで以下のコマンドを実行するなどして差分同期を行います。
Start-ADSyncSyncCycle -PolicyType Delta
同期が完了すると、当該ユーザーがオンプレミスADとクラウドで同一ユーザーとして統合されているかを確認できます。
もしAzure ADユーザーに別のImmutableIDが既に設定されている場合は、以下のように一度$nullを指定してクリアしてから再度設定すると解決するケースがあります。
Update-MgUser -UserId "<クラウドユーザーのUPN>" -OnPremisesImmutableId $null
Update-MgUser -UserId "<クラウドユーザーのUPN>" -OnPremisesImmutableId $immutableId
トラブルシューティングと注意点
ハードマッチを実施しても統合が進まない場合や、別のエラーが表示される場合のチェックポイントをいくつか紹介します。
Delta Sync実行時のエラーログ確認
Azure AD ConnectのSynchronisation Service ManagerやEvent Viewer(イベントビューア)を確認し、同期の詳細ログやエラーが出ていないかを確認します。特にProxyAddressesの重複や、すでに別のアカウントと紐づいていることが原因でエラーが続いている場合は、ログに具体的なエラーメッセージが表示されることが多いです。
SoftMatchが効かない場合の確認ポイント
- クラウドユーザーのUPNやメールアドレス: オンプレミス側と完全に一致しているか
- サインイン可能な状態: 既に削除済み(Soft Delete)のユーザーではないか
- ProxyAddresses設定が正しいか: メインのSMTPアドレス(大文字・小文字含め)が揃っているか
これらの点を見落としていると、SoftMatchがうまく効かずにエラーが残り続ける可能性があります。
まとめ
オンプレミスADとAzure ADをハイブリッド構成で統合する際に起こる重複エラーは、メールアドレス(ProxyAddresses)競合やSoftMatchの失敗が主な原因です。まずはProxyAddressesの整理やSoftMatchの有効化を行い、それでも解決しない場合はImmutableID(ハードマッチ)によって強制的に統合する方法が効果的です。
特に、既存のクラウドユーザーとオンプレミスADユーザーが同じメールアドレスを持っているにもかかわらず同期できないケースでは、ImmutableIDをセットすることで正しくマージを実行できます。さらに、同期後にはAzure AD Connectの管理コンソールやMicrosoft 365管理ポータルでユーザー属性が統一されているかを入念にチェックしましょう。これらの対応を行うことで、重複エラーを回避し、スムーズなハイブリッド運用を実現できるはずです。

コメント