目次
はじめに
Microsoft Entra Connect(以降、Entra Connectと表記)では、オンプレミスのActive Directory(以降、ADと表記)とクラウドのMicrosoft Entra ID(以降、Entra IDと表記)との間でユーザーやグループ、コンピュータなどのオブジェクトを同期します。このとき、どのADオブジェクトとどのEntra IDオブジェクトが同一であるかを識別する仕組みとして、sourceAnchorが使われています。
基本的に、Entra ConnectではADオブジェクトから新規のEntra IDオブジェクトを同期して作成しますが、既存のEntra IDオブジェクトをあとからADオブジェクトと同期する場合には、ハードマッチやソフトマッチの動作も理解しておく必要があります。
この記事では、Entra Connectを設定・利用したことがあっても、sourceAnchorの定義やsourceAnchorに用いられるobjectGUIDとms-DS-ConsistencyGuid、OnPremisesImmutableId属性の説明、さらにハードマッチとソフトマッチの違いがよく分からない方向けに解説します。
この記事では、ユーザーやグループ、コンピュータなどのオブジェクトのうち、最も基本的なユーザーオブジェクトについての内容を取り扱います。
sourceAnchorとは
sourceAnchorとは、Entra Connectにおける設定値の一つで、AD上のユーザーをEntra ID上で一意に識別するために使用されます。例えば、sourceAnchorにms-DS-ConsistencyGuidを設定した場合、ADユーザーのms-DS-ConsistencyGuid属性と、Entra IDユーザーのOnPremisesImmutableId属性が一致したユーザーを同一ユーザーとみなします。(実際には後述するエンコード処理が行われるため、そのまま属性を比較することはできません)
sourceAnchorの値が変化すると、Entra ID側で既存ユーザーとの対応関係を維持できなくなるため、sourceAnchorに設定する属性は原則変更することができず、また、Entra Connectの初回インストール時にのみ設定できます。sourceAnchorの設定値は、以前はObjectGUIDが使用されていましたが、現在はms-DS-ConsistencyGuidが既定値です。
警告
sourceAnchorの設定値は原則変更不可ですが、ms-DS-ConsistencyGuidへの変更のみサポートされています。詳細は、この記事内のsourceAnchorをms-DS-ConsistencyGuidに変更する方法を確認してください。
ObjectGUID
objectGUIDは、ADオブジェクト作成時に自動で付与される固有の値(GUID)です。バージョン 1.1.486.0 以前のEntra Connect(2017年4月リリース)ではsourceAnchorの既定値でした。ただし、objectGUIDは、フォレスト間の移動によって値が変わるため、フォレスト移動に対応できない問題がありました。
ms-DS-ConsistencyGuid
ms-DS-ConsistencyGuidはEntra Connectによって、objectGUIDの値をコピーして設定される値です。バージョン1.1.524.0以降のEntra Connect(2017年5月リリース)から、sourceAnchorの既定値になりました。ms-DS-ConsistencyGuidは初回同期時に一度だけobjectGUIDの値を設定し、その後は変わることが無いため、現在ではsourceAnchorにms-DS-ConsistencyGuidを使用することをMicrosoft社は推奨しています。
sourceAnchorの設定方法
先述の通り、sourceAnchorはEntra Connectの初回インストール時にのみ設定することができます。カスタムインストールを行い、インストールウィザード内の「一意のユーザー識別」画面においてsourceAnchorを選択します。

- 「Azure でソース アンカーを管理します」:下記の優先順位で
sourceAnchorに設定する値が決定されます(画面下部に、sourceAnchorとして設定される属性が表示されます)- 同期先のEntra IDテナントで過去にEntra Connectを構成していた場合:その属性を
sourceAnchorに設定します -
ms-DS-ConsistencyGuid属性が未使用の場合:ms-DS-ConsistencyGuidをsourceAnchorに設定します - いずれの条件も満たさない場合:
objectGUIDに設定します
- 同期先のEntra IDテナントで過去にEntra Connectを構成していた場合:その属性を
- 「特定の属性を選択します」:
objectGUIDやms-DS-ConsistencyGuidなど、任意の属性を選択します
sourceAnchorをms-DS-ConsistencyGuidに変更する方法
先述の通り、原則Entra Connectをインストール後にsourceAnchorを変更することはできません。ただし、例外としてms-DS-ConsistencyGuidへの変更のみ可能です。以下、ms-DS-ConsistencyGuidへ変更する手順です。
警告
sourceAnchorをms-DS-ConsistencyGuidに変更するには、ms-DS-ConsistencyGuidの値が空である必要があります。
警告
一度sourceAnchorをms-DS-ConsistencyGuidに変更すると、sourceAnchorを元の値に戻すことはできません。
ms-DS-ConsistencyGuidへ変更後、自動で再同期または手動同期が行われることでobjectGUIDの値がms-DS-ConsistencyGuidに保存されます。
sourceAnchorの確認方法
sourceAnchorに使用した属性の値を確認する方法
上記で説明した、objectGUID、ms-DS-ConsistencyGuidやOnPremisesImmutableId属性に実際に設定されている値は、PowerShellコマンドを使用して確認することができます。
# ADサーバー上で確認
Get-ADUser -Identity "ADユーザー名" -Properties Name, objectGUID, ms-DS-ConsistencyGuid | select Name, objectGUID, ms-DS-ConsistencyGuid
# Microsoft Graph PowerShellで確認
Connect-MgGraph -Scopes "User.Read.All"
Get-MgUser -UserId "Entra IDユーザーのUPN" -Select DisplayName,Userprincipalname,OnPremisesImmutableId | fl DisplayName,Userprincipalname,OnPremisesImmutableId
OnPremisesImmutableIdの値はbase64でエンコードされています。そのため、下記の方法でsourceAnchorとして設定した値と同じになることを確認できます。
# sourceAnchorとして設定した値をエンコードするPowerShellコマンド(sourceAnchorがobjectGUIDの場合)
[System.Convert]::ToBase64String((Get-ADUser "ADユーザー名" -Properties objectGUID).objectGUID.ToByteArray())
# sourceAnchorとして設定した値をエンコードするPowerShellコマンド(sourceAnchorがms-DS-ConsistencyGuidの場合)
[System.Convert]::ToBase64String((Get-ADUser "ADユーザー名" -Properties mS-DS-ConsistencyGuid).'mS-DS-ConsistencyGuid')
ADユーザーとEntra IDユーザーとのマッチング方式
Entra ConnectがADのユーザーを最初に同期する際、Entra ID上に対応するオブジェクトが既に存在しているか確認します。この確認処理にはハードマッチとソフトマッチの2種類があります。ハードマッチ、ソフトマッチの説明と利用しない場合の無効化設定は以下の通りです。
ハードマッチ
ハードマッチは、Entra ConnectでsourceAnchorとして指定した属性とEntra IDのOnPremisesImmutableId属性が一致するかの判定を行います。
Entra Connectの同期前に、Entra IDユーザーのOnPremisesImmutableIdの値を設定することでハードマッチが行われます。
ハードマッチを行わない場合には、BlockCloudObjectTakeoverThroughHardMatchEnabledを$trueにすることでハードマッチを無効化できます。
# ハードマッチの無効化設定
Connect-MgGraph -Scopes "OnPremDirectorySynchronization.ReadWrite.All"
$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.BlockCloudObjectTakeoverThroughHardMatchEnabled = $true
Update-MgDirectoryOnPremiseSynchronization `
-OnPremisesDirectorySynchronizationId $OnPremSync.Id `
-Features $OnPremSync.Features
ソフトマッチ
ソフトマッチは、Entra ConnectとEntra IDのuserPrincipalNameまたはproxyAddresses属性が一致するかの判定を行います。
UPNやメールアドレスが一致するユーザーはこの方法により紐づけられます。
ソフトマッチを行わない場合には、BlockSoftMatchEnabledを$trueにすることでソフトマッチを無効化できます。
# ソフトマッチの無効化設定
Connect-MgGraph -Scopes "OnPremDirectorySynchronization.ReadWrite.All"
$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.BlockSoftMatchEnabled = $true
Update-MgDirectoryOnPremiseSynchronization `
-OnPremisesDirectorySynchronizationId $OnPremSync.Id `
-Features $OnPremSync.Features
マッチング方式の優先順位
ハードマッチとソフトマッチは以下の優先順位で評価されます。ハードマッチとソフトマッチ両方の条件に満たない場合は、Entra ID上に対応するオブジェクトが存在しないものとみなし、Entra IDに新規オブジェクトを同期して作成します。
1~4の優先順位で、1の場合はハードマッチ、2, 3の場合はソフトマッチが行われます。
- Entra Connectの
sourceAnchorがEntra IDのOnPremisesImmutableId属性と一致 - ADのproxyAddresses/mailの値がEntra IDの同じ属性と一致
- ADのuserPrincipalNameの値がEntra IDの同じ属性と一致
- 1~3いずれにも該当しない場合、新規オブジェクトを同期して作成
既存のEntra IDオブジェクトをあとからADオブジェクトと同期する際には、事前にハードマッチかソフトマッチの準備を行ってからEntra Connectで同期することにより、Entra IDでのみ管理されていたユーザーがEntra Connect同期管理に切り替わります。
基本的に、UPNやメールアドレスが一致するユーザーの場合は、追加で値を設定する必要のあるハードマッチではなく、ソフトマッチにより紐づけることで設定の手間を省くことができます。一方で、UPNやメールアドレスが一致しない場合はハードマッチを行うことで、UPNやメールアドレスを変更することなく紐づけることができます。
まとめ
Entra Connectを利用する上で、sourceAnchorの設定値は原則として変更できないため、慎重に設定値を決定しADユーザーとEntra IDユーザーを紐づける必要があります。
また、既存のEntra IDユーザーにADユーザーを後から紐づける場合にはハードマッチとソフトマッチの仕組みを理解し、事前にマッチング方式を検討する必要があります。
参考情報
- Entra ConnectのsourceAnchorについて(Microsoft Learn)
- Entra Connectのハードマッチとソフトマッチについて(Microsoft Learn)
- Entra Connectのハードマッチについて(日本マイクロソフト サポート情報ブログ)
- Entra Connectのソフトマッチについて(日本マイクロソフト サポート情報ブログ)
We Are Hiring!









