オンプレの Active Directory(AD)と Microsoft Entra ID を一緒に使う環境では、AD のユーザーを Entra ID にコピーする「同期」が欠かせません。この同期を受け持つのが Microsoft Entra Connect(以下、Entra Connect)です。同期のおかげで、利用者は AD と同じユーザー名とパスワードで Microsoft 365 にサインインでき、Entra 参加の PC から社内のファイルサーバにも入れます。
この記事では、Entra Connect が何を、どのように同期しているのかを、属性に注目して説明します。AD と Entra ID のユーザーを結び付ける「ソースアンカー」、サインイン名になる UPN、社内のリソースへの SSO に使われる属性、パスワードのハッシュの同期、書き戻しまでを図で整理します。
- Entra Connect が同期するものと、同期のしくみ
- AD と Entra ID のユーザーを結び付けるソースアンカー(immutableId)と、ハードマッチ・ソフトマッチ
- UPN の決まりと、確認済みのドメインが必要な理由
- 社内の SSO やハイブリッド参加に使われる属性
Entra Connect がしていること
Entra Connect は、社内のサーバにインストールして使う同期のソフトウェアです。AD からユーザーやグループなどを読み取り、Entra ID に書き込みます。
| 同期するもの | 間隔 | 内容 |
|---|---|---|
| ユーザー・グループ・連絡先 | 既定で30分ごと | 名前、メールアドレス、所属などの属性。グループのメンバーも含む |
| コンピューター | 既定で30分ごと | userCertificate 属性に値がある Windows 10 以降のコンピューター。ハイブリッド参加に使う |
| パスワードのハッシュ | 2分ごと | パスワードハッシュ同期を有効にしたとき |
同期は基本的に AD から Entra ID への一方通行で、AD が正です。同期されたユーザーの名前や部署を Entra ID 側で直接変えることはできず、AD で変えると次の同期で Entra ID に反映されます。
同期のしくみ
Entra Connect の中には、データを一時的に置く場所が3つあります。AD の写しを置く「AD のコネクタースペース」、Entra ID の写しを置く「Entra ID のコネクタースペース」、そしてその間で全体をまとめる「メタバース」です。
- インポート:AD の変更を、AD のコネクタースペースに写す
- 同期:同期のルールに従って、メタバースでユーザーの属性を組み立て、Entra ID のコネクタースペースに「書き込む予定の変更」を作る
- エクスポート:その変更を Entra ID に書き込む
ふだんは差分だけを扱う「デルタ同期」が、既定で30分ごとに自動で回ります。急ぎで反映したいときは、Entra Connect のサーバで Start-ADSyncSyncCycle -PolicyType Delta を実行すると、すぐに1回分を回せます。
同じ人だと見分ける:ソースアンカー
同期でいちばん大事なのは、「AD の user01」と「Entra ID の user01」を、確実に同じ人として結び付けることです。名前やメールアドレスは結婚や異動で変わることがあるので、結び付けには使えません。そこで、一度決めたら変わらない値を使います。これがソースアンカー(sourceAnchor)で、Entra ID 側では immutableId と呼びます。
今の Entra Connect(1.1.524.0 以降)では、ユーザーのソースアンカーに AD の mS-DS-ConsistencyGuid 属性を使うのが既定です。この属性が空のユーザーを見つけると、Entra Connect は AD が自動で決めた objectGUID の値をそこにコピーして書き込み、それから Entra ID に送ります。Entra ID の immutableId は、この値を base64 にしたものです。
objectGUID をそのまま使わずに mS-DS-ConsistencyGuid にコピーするのは、ユーザーを別のフォレストやドメインに移したときにも同じ値を持ち運べるようにするためです。objectGUID は AD が決めるので、移した先では新しい値になってしまいますが、mS-DS-ConsistencyGuid なら一緒にコピーできます。
どの属性をソースアンカーにするかは、Entra Connect を最初にインストールするときに決めます。あとから変えるにはアンインストールし直す必要があり、2台目の Entra Connect を入れるときも同じ属性を選ぶ必要があります。また、Entra ID に送ったあとで AD 側の値を変えると、同期エラーになってそのユーザーの同期が止まります。
既存のクラウドのユーザーと結び付ける:ハードマッチとソフトマッチ
Microsoft 365 を先にクラウドだけで使い始め、あとから Entra Connect を入れることもよくあります。このとき、AD から届いたユーザーを、すでにクラウドにいる同じ人のユーザーと結び付ける必要があります。Entra ID は、新しく届いたユーザーについて次の順で相手を探します。
| 方法 | 比べる属性 | 使う場面 |
|---|---|---|
| ハードマッチ | ソースアンカー(immutableId) | Entra Connect のサーバを作り直したときや、クラウドのユーザーに immutableId を設定して結び付けるとき |
| ソフトマッチ | UPN、または proxyAddresses のうち主の SMTP アドレス(大文字の「SMTP:」の値) | クラウドだけで作ったユーザーを、AD のユーザーに引き継ぐとき |
結び付けが成功すると、そのユーザーは「AD から同期されたユーザー」に変わり、AD に値がある属性はすべて AD の値で上書きされます。クラウド側だけで最新にしていた情報(メールアドレスなど)が AD 側で古いままだと、その情報が失われるので、同期の前に AD の値を整えておくことが大切です。
なお、すでに別の immutableId を持つクラウドのユーザーとはソフトマッチしません(InvalidSoftMatch のエラーになります)。また、乗っ取りを防ぐため、管理者ロールを持つクラウドのユーザーともソフトマッチしません。Microsoft は、クラウドのユーザーを引き継ぐ必要がないときはハードマッチを止めておくことも勧めています。
サインイン名:UPN
Entra ID は、UPN(userPrincipalName)をサインイン名として使います。既定では、AD の userPrincipalName 属性がそのまま Entra ID の UPN になります。ここで注意が必要なのは、UPN のサフィックス(@ の後ろ)が、Entra ID で確認済みのドメインでなければならないことです。
AD のドメイン名が corp.local のような、インターネットでは使えない名前(ルーティングできないドメイン)の場合、そのドメインを Entra ID で確認することはできません。そのまま同期すると、UPN のサフィックスが テナント名.onmicrosoft.com に置き換わり、利用者が覚えにくい名前になります。
この場合は、AD に「UPN サフィックス」として自社のドメイン(corp.example.com など)を追加し、Entra ID でそのドメインを確認したうえで、ユーザーの UPN を新しいサフィックスに変えてから同期します。UPN はメールアドレスと同じ形にしておくと、利用者が迷いません。
主な属性と、使われる場面
ユーザーについて同期される主な属性を、使われる場面と一緒にまとめます。Entra ID 側の名前は、Microsoft Graph での呼び方です。
| AD の属性 | Entra ID の属性 | 使われる場面 |
|---|---|---|
| userPrincipalName | userPrincipalName | サインイン名。ソフトマッチにも使う |
| mS-DS- | onPremises | AD と Entra ID のユーザーの結び付け |
| mail・proxyAddresses | mail・proxyAddresses | メールの宛先。ソフトマッチにも使う |
| sAMAccountName | onPremises | Entra 参加の PC が、社内のリソースに「CORP\user01」として認証するとき |
| ドメインの DNS 名・NetBIOS 名 | onPremises | Entra 参加の PC が、どのドメインの DC に名乗ればよいかを知る |
| objectSid | onPremises | オンプレの SID。Microsoft Entra Kerberos などで使う。テナントの中で重複できない |
| distinguishedName | onPremises | AD のどこにいるユーザーかを示す |
| displayName・department など | displayName・department など | アドレス帳や組織図に表示される情報 |
Entra 参加の PC での使われ方
表の中で、Entra 参加の PC が社内のファイルサーバに入るときに使われるのが、onPremisesSamAccountName やドメインの情報です。Entra 参加の PC は AD に参加していないので、自分ではどのドメインに属しているかを知りません。サインインのときに Entra ID がこれらの情報を PC に渡すことで、PC は社内の DC を見つけて Kerberos の認証ができるようになります。
Entra 参加とハイブリッド参加の違いは「ドメイン参加・Entra参加・ハイブリッド参加の違い」の記事で、Windows Hello for Business などでサインインしたときにオンプレのチケットをもらうしくみは「Microsoft Entra Kerberosとは?」の記事で説明しています。
コンピューターの同期とハイブリッド参加
ユーザーと違って、コンピューターは AD にあるものがすべて同期されるわけではありません。同期されるのは、userCertificate 属性に値があるコンピューターだけです。この属性は、ふだんは空のことが多く、ハイブリッド参加の準備をした Windows 10 以降の PC が、自分で値を書き込みます。
図7の PC01$ は、userCertificate に値があるので同期され、Entra ID にデバイスができます。PC02$ は userCertificate が空なので同期されません。PC03$ は、userCertificate があっても、Entra Connect で同期しない OU にいるので同期されません。ハイブリッド参加がうまくいかないときは、PC の userCertificate に値が入っているか、その PC のいる OU が同期の対象に入っているかを、まず確かめます。
同期されるときは、AD のコンピューターの属性が、Entra ID のデバイスの属性に次のように写されます。
AD の objectGUID が Entra ID の deviceId になるので、AD のコンピューターと Entra ID のデバイスは1対1で結び付きます。dsregcmd /status に表示される DeviceId と、AD のコンピューターの objectGUID を比べると、同じ値になっています。
では、なぜわざわざ証明書を AD 経由で同期するのでしょうか。それは、Entra ID が「いま名乗ってきた PC は、本当に AD の PC01$ なのか」を確かめるためです。
- PC01 は、自分で作った証明書の公開鍵を、AD の自分のコンピューターアカウント(PC01$)の userCertificate に書きます
- Entra Connect がそれを同期すると、Entra ID に「保留中」のデバイスができ、公開鍵も一緒に届きます
- PC01 は、証明書の秘密鍵を使って Entra ID に名乗ります。Entra ID は、AD から届いた公開鍵と合うことで、AD の PC01$ と同じコンピューターだと分かり、デバイスを「登録済み」にします
つまり、AD と Entra Connect という信頼できる経路を通して公開鍵を先に届けておくことで、PC の本人確認をしているわけです。そのため、ドメイン参加した直後は、②の同期(既定で30分ごと)が終わるまでハイブリッド参加が完了せず、Entra 管理センターでは「保留中」と表示されます。登録の流れ全体は「ドメイン参加・Entra参加・ハイブリッド参加の違い」の記事でも説明しています。
パスワードハッシュ同期
AD と同じパスワードで Microsoft 365 にサインインできるようにする方法の1つが、パスワードハッシュ同期(PHS)です。名前のとおり、パスワードそのものではなく、パスワードのハッシュをもとにした値を同期します。
Entra Connect は、AD が持っているパスワードのハッシュに、ユーザーごとのソルトを足してさらにハッシュにかけ、その値を TLS で Entra ID に送ります。Entra ID は、サインインのときに入力されたパスワードに同じ計算をして、保存した値と比べます。パスワードの平文は、Entra Connect にも Entra ID にも渡りません。また、AD が持つ元のハッシュは Entra ID に送られないので、Entra ID 側の値を AD の認証に使うことはできません。ハッシュやソルトのしくみは「暗号の基礎」の記事で説明しています。
サインインの方法には、ほかにパススルー認証(PTA)とフェデレーション(AD FS など)があります。パスワードハッシュ同期は追加のサーバがいらず、AD FS が止まったときの予備としても使えます。
書き戻し:AD への書き込み
同期は基本的に AD から Entra ID への一方通行ですが、一部の情報は AD にも書き込まれます。これを「書き戻し」と呼びます。ここで大事なのは、AD に書き込むのは、いつも社内にある Entra Connectだという点です。Entra ID はクラウドにあり、社内の AD に直接書き込むことはできません。Entra Connect が Entra ID から変更を受け取り、同期用のアカウント(AD DS コネクタのアカウント)の権限で AD に書き込みます。
| 書き戻し | 内容 |
|---|---|
| mS-DS- | Entra ID から来る情報ではない。Entra Connect が、AD の objectGUID を同じユーザーの mS-DS-ConsistencyGuid にコピーして書く。そのために、同期用のアカウントにこの属性への書き込み権限が要る |
| パスワードの書き戻し | セルフサービスのパスワードリセット(SSPR)でクラウドで変えたパスワードを、Entra Connect が受け取って AD に設定する |
| デバイスの書き戻し | Entra ID のデバイスを、Entra Connect が AD にも作る |
| グループの書き戻し | Microsoft 365 グループを AD に作る(v1)。クラウドのセキュリティグループを AD に作る v2 はプレビューのまま廃止され、Microsoft Entra Cloud Sync の機能に置き換わった |
同期する範囲を絞る
Entra Connect は、AD のすべてを同期する必要はありません。ドメインや OU 単位で、同期する範囲を絞れます。たとえば、サービスアカウントや退職者用の OU を外しておくと、不要なユーザーがクラウドに出ていきません。いっぽうで、次のものは範囲に入れておく必要があります。
- ハイブリッド参加させる PC がいる OU(コンピューターも同期が必要)
- Entra 参加の PC から社内のリソースを使うユーザーのドメイン(複数のドメインがあるとき)
Entra Connect の 2.x は、新しいバージョンが出てから12か月で古いバージョンのサポートが終わります。1.x はすでに同期が動きません。さらに Microsoft は、2027年4月7日までにバージョン 2.6.84.0 以降に上げ、アプリケーションベースの認証を構成するよう求めています。間に合わないと、その日以降は同期が止まります。インストール用のファイルは Entra 管理センターから入手します。
また、新しく入れる場合や作り直す場合は、軽いエージェントで動く Microsoft Entra Cloud Sync で要件を満たせないかを先に確かめるよう、Microsoft は案内しています。
確認に使うコマンド
Entra Connect のサーバ(PowerShell・管理者):同期の間隔と次の実行時刻を表示する
Get-ADSyncScheduler
Entra Connect のサーバ(PowerShell・管理者):差分の同期を、今すぐ1回実行する
Start-ADSyncSyncCycle -PolicyType Delta
DC01(PowerShell):user01 の UPN・メールアドレス・ソースアンカーの値を表示する
Get-ADUser user01 -Properties mS-DS-ConsistencyGuid, proxyAddresses | Select-Object UserPrincipalName, ObjectGUID, mS-DS-ConsistencyGuid, proxyAddresses
DC01(PowerShell):user01 の objectGUID を base64 にする(immutableId と比べるため)
[Convert]::ToBase64String((Get-ADUser user01).ObjectGUID.ToByteArray())
管理用の PC(PowerShell):Entra ID 側の user01 の同期された属性を表示する
Connect-MgGraph -Scopes "User.Read.All" Get-MgUser -UserId user01@corp.example.com -Property UserPrincipalName, OnPremisesImmutableId, OnPremisesSamAccountName, OnPremisesDomainName, OnPremisesSecurityIdentifier, OnPremisesSyncEnabled | Format-List UserPrincipalName, OnPremises*
まとめ
| 項目 | ひとことで |
|---|---|
| Entra Connect | AD のユーザー・グループ・コンピューターを Entra ID に同期する。AD が正 |
| 同期のしくみ | インポート → 同期 → エクスポート。差分を既定で30分ごと |
| ソースアンカー | mS-DS-ConsistencyGuid(もとは objectGUID)を base64 にした immutableId。一度決めたら変えない |
| ハード・ソフトマッチ | immutableId、または UPN・主の SMTP アドレスで既存のクラウドのユーザーと結び付ける |
| UPN | サフィックスは確認済みのドメインに。corp.local のままだと onmicrosoft.com になる |
| SSO 用の属性 | onPremisesSamAccountName・ドメイン名・SID で、Entra 参加の PC が社内の DC に名乗れる |
| パスワードハッシュ同期 | ハッシュにソルトを足してさらにハッシュにかけた値を2分ごとに送る。平文は渡らない |
Entra Connect は「入れておけば勝手に同期してくれるもの」と思われがちですが、どの属性で同じ人を見分けているか、どの属性がどこで使われているかを知っておくと、同期エラーやハイブリッド参加、社内リソースへの SSO のトラブルを切り分けやすくなります。
- Microsoft Entra Connect: Design concepts(Microsoft Learn)
- Microsoft Entra Connect Sync: Understanding the architecture(Microsoft Learn)
- Microsoft Entra Connect Sync: Scheduler(Microsoft Learn)
- Configure Microsoft Entra Connect for an existing tenant(Microsoft Learn)
- Understanding errors during Microsoft Entra synchronization(Microsoft Learn)
- Microsoft Entra Connect Sync: Attributes synchronized to Microsoft Entra ID(Microsoft Learn)
- Microsoft Entra Connect Sync: Understanding the default configuration(Microsoft Learn)
- How SSO to on-premises resources works on Microsoft Entra joined devices(Microsoft Learn)
- Implement password hash synchronization with Microsoft Entra Connect Sync(Microsoft Learn)
- Group writeback for Microsoft 365 groups(Microsoft Learn)
- Microsoft Entra Connect: Version release history(Microsoft Learn)
- Security improvements to Microsoft Entra Connect Sync autoupgrade(Microsoft Learn)
コメント