本記事はアジアクエスト Advent Calendar 2024の記事です。
本記事では、Microsoft Entra Connect における特殊なケースとして、Entra ID がもつ ImmutableId を起点としたハードマッチを構成する方法を解説します。
# 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 は、オンプレミスの Active Directory (AD) と Microsoft Entra ID を同期させるツールです。
AD はオンプレミスの認証基盤、Entra ID はクラウドの認証基盤としてそれぞれ機能しますが、Entra Connect によって両者を統一的に管理することで運用工数を削減することができます。
Entra Connect に関連する用語や属性値について紹介します。
Entra Connect やフェデレーションなど、Entra ID と別の認証システムとの間でオブジェクトを一意に紐づけるための属性
Entra Connect においては別名「sourceAnchor (ソースアンカー)」とも呼ばれる
参考: Microsoft Entra Connect: 設計概念 - sourceAnchor
Entra Connect において、ImmutableId を用いてアカウントを直接的に同期させるマッチング方法
Entra Connect において、UPN やメールアドレスを用いてアカウントを同期させるマッチング方法
参考: ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法 - ソフトマッチとは?
属性値 | 用途 | 備考 |
---|---|---|
SMTP アドレス | プライマリアドレス | |
proxyAddresses | SMTP や SIP などのアドレス | 複数アドレスを設定可能 |
sAMAccountName | ユーザログオン名 | - |
userPrincipalName (UPN) | ドメインを付与したユーザサインイン名 | <sAMAccountName>@ドメイン名 形式 |
mS-DS-ConsistencyGuid | ImmutableId の値を登録する | ユーザオブジェクトの ImmutableId 既定値 |
objectGUID | オブジェクト作成時に設定される一意識別子 | - |
参考: Microsoft Entra Connect: 設計概念 - sourceAnchor としての ms-DS-ConsistencyGuid の使用
属性値 | 用途 | 備考 |
---|---|---|
OnPremisesImmutableId | ImmutableId の値が格納される属性 | |
UserPrincipalName (UPN) | ユーザサインイン名 |
Entra Connect におけるアカウントマッチングの評価順序は以下のようになっています。
参考: ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法 - マッチング順位
ここで注意点として、ImmutableId を持つ Entra ID オブジェクトにはソフトマッチの評価が行われません。
基本的には Entra ID オブジェクトは ImmutableId を持ちませんが、Entra ID がフェデレーションを構成している(していた)場合は ImmutableId を持ちます。
このような状況下で Entra Connect を構成するためには、ImmutableId の値を AD に登録しハードマッチを行う必要があります。
では、具体的な手順に入りましょう。
AD サーバにて PowerShell を管理者権限で起動してください。
本記事用に、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 を AD に格納するためにバイト配列形式に変換します。
以下の PowerShell コマンドを使用します。
$strings = [System.Convert]::FromBase64String($ImmutableId.OnPremisesImmutableId)
※ このように変換する理由は、AD の mS-DS-ConsistencyGuid 属性がバイト配列形式のオブジェクトとして格納されているためです。
最後に、バイト変換された 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 ベースで手順を記載したため、本番環境のようにアカウントが多数存在する場合でもスクリプト化して対応できると思います。
ソフトマッチによる Azure AD (Office 365) 上のユーザーをオンプレミス Active Directory ユーザーと紐付ける方法
Microsoft Entra Connect のカスタム インストール