AQ Tech Blog

Entra Connect でハードマッチを構成する

作成者: yuta.minematsu|2024年12月08日

本記事はアジアクエスト Advent Calendar 2024の記事です。

はじめに

本記事では、Microsoft Entra Connect における特殊なケースとして、Entra ID がもつ ImmutableId を起点としたハードマッチを構成する方法を解説します。

 

先にまとめ

  • ImmutableId とは、Entra ID と別の認証システムとの間でオブジェクトを一意に紐づけるために使用される(Entra Connect やフェデレーションなど)
  • Entra Connect において、ImmutableId を基準にユーザオブジェクトを直接的に紐づける方法をハードマッチと呼ぶ
  • ImmutableId をもつ Entra ID オブジェクトに対して Entra Connect を構成する場合、ImmutableId を AD オブジェクトの属性に登録する必要がある
# ImmutableId を取得
Connect-MgGraph -Scopes "User.ReadWrite.All"
$ImmutableId = Get-MgUser -UserId <UPN> -Select OnPremisesImmutableId | Select-Object OnPremisesImmutableId

# ImmutableId をバイト配列形式に変換
$strings = [System.Convert]::FromBase64String($ImmutableId.OnPremisesImmutableId)

# バイト配列形式の ImmutableId を AD に登録
Set-ADUser -Identity <sAMAccountName> -Replace @{'mS-DS-ConsistencyGuid' = $strings}

Microsoft Entra Connect とは

Microsoft Entra Connect は、オンプレミスの Active Directory (AD) と Microsoft Entra ID を同期させるツールです。

AD はオンプレミスの認証基盤、Entra ID はクラウドの認証基盤としてそれぞれ機能しますが、Entra Connect によって両者を統一的に管理することで運用工数を削減することができます。

Entra Connect に関連する用語や属性値について紹介します。

 

用語

ImmutableId

Entra Connect やフェデレーションなど、Entra ID と別の認証システムとの間でオブジェクトを一意に紐づけるための属性
Entra Connect においては別名「sourceAnchor (ソースアンカー)」とも呼ばれる

参考: Microsoft Entra Connect: 設計概念 - sourceAnchor

ハードマッチ

Entra Connect において、ImmutableId を用いてアカウントを直接的に同期させるマッチング方法

ソフトマッチ

Entra Connect において、UPN やメールアドレスを用いてアカウントを同期させるマッチング方法

参考: ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法 - ソフトマッチとは?

 

AD 属性値

属性値 用途 備考
mail SMTP アドレス プライマリアドレス
proxyAddresses SMTP や SIP などのアドレス 複数アドレスを設定可能
sAMAccountName ユーザログオン名 -
userPrincipalName (UPN) ドメインを付与したユーザサインイン名 <sAMAccountName>@ドメイン名 形式
mS-DS-ConsistencyGuid ImmutableId の値を登録する ユーザオブジェクトの ImmutableId 既定値
objectGUID オブジェクト作成時に設定される一意識別子 -

参考: Microsoft Entra Connect: 設計概念 - sourceAnchor としての ms-DS-ConsistencyGuid の使用

 

Entra ID 属性

属性値 用途 備考
OnPremisesImmutableId ImmutableId の値が格納される属性  
UserPrincipalName (UPN) ユーザサインイン名  

アカウントのマッチング方法

Entra Connect におけるアカウントマッチングの評価順序は以下のようになっています。

参考: ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法 - マッチング順位

  1. ImmutableId の値で一致するオブジェクトがあるか → ハードマッチ
  2. proxyAddresses や mail 属性で一致するオブジェクトがあるか → SMTP ソフトマッチ
  3. UPN で一致するオブジェクトがあるか → UPN ソフトマッチ
  4. 上記以外 → 新規オブジェクトの作成

ここで注意点として、ImmutableId を持つ Entra ID オブジェクトにはソフトマッチの評価が行われません。

基本的には Entra ID オブジェクトは ImmutableId を持ちませんが、Entra ID がフェデレーションを構成している(していた)場合は ImmutableId を持ちます。
このような状況下で Entra Connect を構成するためには、ImmutableId の値を AD に登録しハードマッチを行う必要があります。

ハードマッチの構成手順

では、具体的な手順に入りましょう。

AD サーバにて PowerShell を管理者権限で起動してください。

 

Entra ID の ImmutableId を取得

本記事用に、Entra ID に "テストユーザ 001" というアカウントを作成しています。

 

まず、テストユーザに登録されている ImmutableId の値を取得します。

以下の PowerShell コマンドを使用します。

# Microsoft Entra テナントへ接続(管理者アカウントでブラウザ認証)
Connect-MgGraph -Scopes "User.ReadWrite.All"

# ImmutableId の値を取得
$ImmutableId = Get-MgUser -UserId <UPN> -Select OnPremisesImmutableId | Select-Object OnPremisesImmutableId

 

ImmutableId をバイト配列形式に変換

次に、ImmutableId を AD に格納するためにバイト配列形式に変換します。

以下の PowerShell コマンドを使用します。

$strings = [System.Convert]::FromBase64String($ImmutableId.OnPremisesImmutableId)

※ このように変換する理由は、AD の mS-DS-ConsistencyGuid 属性がバイト配列形式のオブジェクトとして格納されているためです。

 

ImmutableId を AD に登録

最後に、バイト変換された ImmutableId を mS-DS-ConsistencyGuid 属性に登録します。

以下の PowerShell コマンドを使用します。

Set-ADUser -Identity <sAMAccountName> -Replace @{'mS-DS-ConsistencyGuid' = $strings}

mS-DS-ConsistencyGuid の属性エディタにおいて、値の形式を 10 進数にすることで、テストユーザに値が正しく登録されたことが確認できます。

これで、テストユーザに対してハードマッチの準備が整いました。

同期の確認とテスト

ハードマッチの準備が整ったら Entra Connect をカスタムインストールで構成します。
本記事ではポイントとなる部分のみ解説します。
基本的なインストール手順は以下ドキュメントを参考にしてください。

参考: Microsoft Entra Connect のカスタム インストール

[ユーザーの識別] セクションで、以下のように設定します。

補足

本記事執筆時における Entra Connect 最新バージョンでは、
「Azure でソースアンカーを管理します」を選択した場合は mS-DS-ConsistencyGuid を ImmutableId として使用するのが既定となっています。
しかし、同期前に mS-DS-ConsistencyGuid に値が設定されている AD オブジェクトが存在する場合、objectGUID 属性が ImmutableId として使用されてしまいます。(objectGUID は一意の値であることが保証されているため)
これを防ぐために、明示的に mS-DS-ConsistencyGuid 属性を指定します。

[構成] セクションで、ms-DS-ConsistencyGuid をソースアンカーとして使用するよう構成されていることを確認します。

同期実行後、ハードマッチが成功しているかどうかの確認を行います。

Entra 管理センター に管理者アカウントでサインインし、対象アカウントの「オンプレミスからの同期が有効」欄が「はい」になっていることを確認します。

AD 側で属性値を変更してみましょう。

Set-ADUser -Identity <sAMAccountName> -Replace @{'displayName' = "テストユーザ001update"}

AD 側テストユーザの表示名が変更されていることを確認します。

Entra Connect をインストールしたサーバで PowerShell を起動し、以下のコマンドを実行して手動同期を行います。

Start-ADSyncSyncCycle -PolicyType Delta

Entra ID 側でも変更が反映されており、ハードマッチが正しく構成されていることが確認できます。

 

まとめ

本記事では、Microsoft Entra Connect におけるハードマッチの構成方法を解説しました。

Entra ID でフェデレーションを構成している場合、ハードマッチは正確な同期のために重要なプロセスであり、
ImmutableId を起点として既存の Entra ID と AD 間で一意のアカウントマッチングが可能になります。

また今回は CLI ベースで手順を記載したため、本番環境のようにアカウントが多数存在する場合でもスクリプト化して対応できると思います。

参考

Microsoft Entra Connect: 設計概念

ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法

Microsoft Entra Connect のカスタム インストール