Microsoft Entra Connect 同期を使用したパスワード ハッシュ同期のトラブルシューティング

このトピックでは、パスワード ハッシュ同期の問題のトラブルシューティングを行う手順を示します。 パスワードが想定どおりに同期しない場合、そのパスワードが、ユーザーのサブセット、またはすべてのユーザーを対象している可能性があります。

Microsoft Entra Connect バージョン 1.1.614.0 以降のデプロイについては、ウィザードのトラブルシューティング タスクを使用して、パスワード ハッシュ同期の問題のトラブルシューティングを行ってください。

バージョン 1.1.524.0 以降のデプロイについては、パスワード ハッシュ同期の問題のトラブルシューティングに使用できる診断コマンドレットが用意されています。

古いバージョンの Microsoft Entra Connect デプロイの場合:

パスワードが同期されない: トラブルシューティング タスクによるトラブルシューティング

トラブルシューティング タスクを使用して、パスワードが同期されない理由を確認できます。

Note

トラブルシューティング タスクは、Microsoft Entra Connect バージョン 1.1.614.0 以降のみで使用できます。

トラブルシューティング タスクを実行する

パスワードが同期されない問題のトラブルシューティングを行うには:

  1. [管理者として実行] オプションを指定して、Microsoft Entra Connect サーバーで新しい Windows PowerShell セッションを開きます。

  2. Set-ExecutionPolicy RemoteSigned または Set-ExecutionPolicy Unrestricted を実行します。

  3. Microsoft Entra Connect ウィザードを起動します。

  4. [追加のタスク] ページに移動し、 [トラブルシューティング] を選択して [次へ] をクリックします。

  5. トラブルシューティング ページで、 [起動] をクリックして PowerShell でトラブルシューティング メニューを起動します。

  6. メイン メニューで、 [Troubleshoot password hash synchronization]\(パスワード ハッシュ同期のトラブルシューティング\) を選択します。

  7. サブ メニューで、 [Password hash synchronization does not work at all]\(パスワード ハッシュ同期がまったく機能しない\) を選択します。

トラブルシューティング タスクの結果を理解する

トラブルシューティング タスクでは、次のチェックが実行されます。

  • パスワード ハッシュ同期機能が Microsoft Entra テナントに対して有効になっていることを検証します。

  • Microsoft Entra Connect サーバーがステージング モードになっていないことを検証します。

  • 既存のオンプレミスの Active Directory コネクタ (既存の Active Directory フォレストに対応) ごとに次の手順を実行します。

    • パスワード ハッシュ同期機能が有効になっていることを検証します。

    • Windows アプリケーション イベント ログでパスワード ハッシュ同期のハートビート イベントを検索します。

    • オンプレミスの Active Directory コネクタの Active Directory ドメインごとに次の手順を実行します。

      • Microsoft Entra Connect サーバーからドメインにアクセスできることを検証します。

      • オンプレミスの Active Directory コネクタで使用される Active Directory Domain Services (AD DS) アカウントに、パスワード ハッシュ同期に必要な適切なユーザー名、パスワード、およびアクセス許可が付与されていることを検証します。

次の図は、単一ドメインのオンプレミス Active Directory トポロジに対するコマンドレットの結果を示しています。

Diagnostic output for password hash synchronization

このセクションの残りの部分では、タスクによって返される具体的な結果と、それに対応する問題について説明します。

パスワード ハッシュ同期機能が有効になっていません

Microsoft Entra Connect ウィザードを使用してパスワード ハッシュ同期を有効にしていなかった場合は、次のエラーが返されます。

password hash synchronization isn't enabled

Microsoft Entra Connect サーバーがステージング モードである

Microsoft Entra Connect サーバーがステージング モードである場合、パスワード ハッシュ同期は一時的に無効になり、次のエラーが返されます。

Microsoft Entra Connect server is in staging mode

パスワード ハッシュ同期のハートビート イベントがない

オンプレミスの Active Directory コネクタごとに、独自のパスワード ハッシュ同期チャネルがあります。 パスワード ハッシュ同期チャネルが確立され、同期するパスワード変更がない場合は、Windows アプリケーション イベント ログでハートビート イベント (EventId 654) が 30 分に 1 回生成されます。 このコマンドレットは、オンプレミスの Active Directory コネクタごとに、過去 3 時間の対応するハートビートを検索します。 ハートビート イベントが見つからないと、次のエラーが返されます。

No password hash synchronization heart beat event

AD DS アカウントに適切なアクセス許可がない

パスワード ハッシュを同期するためにオンプレミスの Active Directory コネクタによって使用される AD DS アカウントに、適切なアクセス許可がない場合は、次のエラーが返されます。

Screenshot that shows the error that's returned when the AD DS account has an incorrect username or password.

AD DS アカウントのユーザー名またはパスワードが正しくない

パスワード ハッシュを同期するためにオンプレミスの Active Directory コネクタによって使用される AD DS アカウントに、誤ったユーザー名またはパスワードが指定さている場合は、次のエラーが返されます。

Incorrect credential

1 つのオブジェクトがパスワードを同期していない: トラブルシューティング タスクによるトラブルシューティング

トラブルシューティング タスクを使用して、1 つのオブジェクトがパスワードを同期していない理由を確認できます。

Note

トラブルシューティング タスクは、Microsoft Entra Connect バージョン 1.1.614.0 以降のみで使用できます。

診断コマンドレットを実行する

特定のユーザー オブジェクトに関する問題のトラブルシューティングを行うには:

  1. [管理者として実行] オプションを指定して、Microsoft Entra Connect サーバーで新しい Windows PowerShell セッションを開きます。

  2. Set-ExecutionPolicy RemoteSigned または Set-ExecutionPolicy Unrestricted を実行します。

  3. Microsoft Entra Connect ウィザードを起動します。

  4. [追加のタスク] ページに移動し、 [トラブルシューティング] を選択して [次へ] をクリックします。

  5. トラブルシューティング ページで、 [起動] をクリックして PowerShell でトラブルシューティング メニューを起動します。

  6. メイン メニューで、 [Troubleshoot password hash synchronization]\(パスワード ハッシュ同期のトラブルシューティング\) を選択します。

  7. サブ メニューで、 [Password is not synchronized for a specific user account]\(特定のユーザー アカウントのパスワードが同期されない\) を選択します。

トラブルシューティング タスクの結果を理解する

トラブルシューティング タスクでは、次のチェックが実行されます。

  • Active Directory コネクタ スペース、メタバース、および Microsoft Entra コネクタ スペースで、Active Directory オブジェクトの状態を調べます。

  • パスワード ハッシュ同期が有効で、Active Directory オブジェクトに適用されている同期規則があることを検証します。

  • オブジェクトに対するパスワード同期の前回の試行結果を取得および表示しようとします。

次の図は、1 つのオブジェクトに対するパスワード ハッシュ同期のトラブルシューティングを行ったときの、コマンドレットの結果を示しています。

Diagnostic output for password hash synchronization - single object

このセクションの残りの部分では、コマンドレットによって返される具体的な結果と、それに対応する問題について説明します。

Active Directory オブジェクトが Microsoft Entra ID にエクスポートされない

Microsoft Entra テナントに対応するオブジェクトがないため、このオンプレミス Active Directory アカウントのパスワード ハッシュ同期が失敗します。 次のエラーが返されます。

Microsoft Entra object is missing

ユーザーに一時パスワードがある

古いバージョンの Microsoft Entra Connect では、一時パスワードと Microsoft Entra ID の同期はサポートされていません。 オンプレミスの Active Directory ユーザーで [Change password at next logon](次回ログオン時にパスワード変更が必要) オプションが設定されている場合、パスワードは一時的なものと見なされます。 これらの古いバージョンでは、次のエラーが返されます。

Temporary password is not exported

一時パスワードの同期を有効にするには、Microsoft Entra Connect バージョン 2.0.3.0 以降がインストールされており、ForcePasswordChangeOnLogon 機能が有効になっている必要があります。

パスワード同期の前回の試行結果を使用できない

既定では、Microsoft Entra Connect では、パスワード ハッシュ同期の試行結果が 7 日間保存されます。 選択した Active Directory オブジェクトについて使用できる結果がない場合は、次の警告が返されます。

Diagnostic output for single object - no password sync history

パスワードが同期されない: 診断コマンドレットによるトラブルシューティング

パスワードが同期されない理由を確認するには、Invoke-ADSyncDiagnostics コマンドレットを使用できます。

Note

Invoke-ADSyncDiagnostics コマンドレットは、Microsoft Entra Connect バージョン 1.1.524.0 以降のみで使用できます。

診断コマンドレットを実行する

パスワードが同期されない問題のトラブルシューティングを行うには:

  1. [管理者として実行] オプションを指定して、Microsoft Entra Connect サーバーで新しい Windows PowerShell セッションを開きます。

  2. Set-ExecutionPolicy RemoteSigned または Set-ExecutionPolicy Unrestricted を実行します。

  3. Import-Module ADSyncDiagnostics を実行します。

  4. Invoke-ADSyncDiagnostics -PasswordSync を実行します。

1 つのオブジェクトがパスワードを同期していない: 診断コマンドレットによるトラブルシューティング

1 つのオブジェクトがパスワードを同期していない理由を確認するには、Invoke-ADSyncDiagnostics コマンドレットを使用できます。

Note

Invoke-ADSyncDiagnostics コマンドレットは、Microsoft Entra Connect バージョン 1.1.524.0 以降のみで使用できます。

診断コマンドレットを実行する

ユーザーのパスワードが同期されない問題のトラブルシューティングを行うには:

  1. [管理者として実行] オプションを指定して、Microsoft Entra Connect サーバーで新しい Windows PowerShell セッションを開きます。

  2. Set-ExecutionPolicy RemoteSigned または Set-ExecutionPolicy Unrestricted を実行します。

  3. Import-Module ADSyncDiagnostics を実行します。

  4. 次のコマンドレットを実行します。

    Invoke-ADSyncDiagnostics -PasswordSync -ADConnectorName <Name-of-AD-Connector> -DistinguishedName <DistinguishedName-of-AD-object>
    

    次に例を示します。

    Invoke-ADSyncDiagnostics -PasswordSync -ADConnectorName "contoso.com" -DistinguishedName "CN=TestUserCN=Users,DC=contoso,DC=com"
    

パスワードが同期されない: 手動によるトラブルシューティング手順

パスワードが同期されない理由を確認するには、次の手順に従います。

  1. Connect サーバーはステージング モードですか。 ステージング モードのサーバーは、パスワードを同期しません。

  2. パスワード同期設定の状態の取得」セクションにあるスクリプトを実行してください。 これにより、パスワード同期の構成の概要が示されます。

    PowerShell script output from password sync settings

  3. この機能が Microsoft Entra ID で有効ではない場合、または同期チャネルの状態が有効ではない場合は、Connect のインストール ウィザードを実行してください。 [同期オプションのカスタマイズ] を選択し、パスワード同期の選択を解除します。この変更により、一時的に機能が無効になります。 その後、もう一度ウィザードを実行し、パスワード同期を再度有効にします。スクリプトを再実行して、構成が正しいことを確認します。

  4. イベント ログでエラーを調べます。 問題を示す次のイベントを探します。

    • ソース:"Directory synchronization" ID: 0, 611, 652, 655" イベントが表示されている場合は、接続に問題があります。 イベント ログ メッセージに、問題のあるフォレストの情報が含まれています。
  5. ハートビートが表示されない場合、または他に何も動作していない場合は、「すべてのパスワードの完全同期の開始」を実行します。 スクリプトは 1 回のみ実行してください。

  6. 「パスワードを同期していない 1 つのオブジェクトのトラブルシューティング」セクションをお読みください。

接続に関する問題

Microsoft Entra ID との接続がありますか?

アカウントには、すべてのドメインでパスワード ハッシュを読み取るために必要なアクセス許可がありますか。 簡単設定を使用して Connect をインストールした場合、アクセス許可は既に正しい状態にあります。

カスタム インストールを使用した場合は、次の手順に従って、手動でアクセス許可を設定します。

  1. Active Directory コネクタで使用されるアカウントを検索するには、Synchronization Service Manager を起動します。

  2. [コネクタ] に移動し、トラブルシューティングを行うオンプレミスの Active Directory フォレストを検索します。

  3. コネクタを選択し、 [プロパティ] をクリックします。

  4. [Active Directory フォレストに接続] を選択します。

    Account used by Active Directory connector
    ユーザー名と、アカウントがあるドメインをメモしておきます。

  5. [Active Directory ユーザーとコンピューター] を起動し、前に見つけたアカウントで、フォレスト内のすべてのドメインのルートに対して、次のアクセス許可が設定されていることを確認します。

    • ディレクトリの変更のレプリケート
    • ディレクトリの変更をすべてにレプリケート
  6. ドメイン コントローラーは、Microsoft Entra Connect からアクセスできますか? Connect サーバーがすべてのドメイン コントローラーに接続できない場合は、 [Only use preferred domain controller]\(優先ドメイン コントローラーのみ使用する\) を構成します。

    Domain controller used by Active Directory connector

  7. Synchronization Service Manager[ディレクトリ パーティションの構成] に戻ります。

  8. [ディレクトリ パーティションの選択] でドメインを選択し、 [Only use preferred domain controller]\(優先ドメイン コントローラーのみ使用する\) チェック ボックスをオンにして、 [構成] をクリックします。

  9. 一覧で、Connect がパスワード同期に使用するドメイン コントローラーを入力します。同じ一覧がインポートとエクスポートにも使用されます。 すべてのドメインに対してこの手順を実行します。

Note

これらの変更を適用するには、Microsoft Entra ID 同期 (ADSync) サービスを再起動します。

  1. スクリプトによってハートビートがないことが示されたら、「すべてのパスワードの完全同期の開始」にあるスクリプトを実行します。

1 つのオブジェクトがパスワードを同期していない: 手動によるトラブルシューティング手順

オブジェクトの状態を確認することで、パスワード ハッシュ同期の問題を簡単に解決できます。

  1. [Active Directory ユーザーとコンピューター] で、ユーザーを検索し、 [ユーザーは次回ログオン時にパスワードの変更が必要] チェック ボックスがオフになっていることを確認します。

    Active Directory productive passwords

    チェック ボックスがオンになっている場合、ユーザーは、サインインしてパスワードを変更するよう求められます。 一時パスワードは、Microsoft Entra ID と同期されません。

  2. パスワードが Active Directory で正しく表示されたら、同期エンジンのユーザーをフォローします。 オンプレミスの Active Directory から Microsoft Entra ID までユーザーを追跡すると、オブジェクトに記述的なエラーが発生しているかどうかを確認できます。

    a. Synchronization Service Manager を起動します。

    b. [コネクタ] をクリックします。

    c. ユーザーが存在する Active Directory コネクタを選択します。

    d. [Search Connector Space (コネクタ スペースの検索)] を選択します。

    e. [スコープ] ボックスで、 [DN or Anchor]\(DN またはアンカー\) を選択し、トラブルシューティングを行うユーザーの完全な DN を入力します。

    Search for user in connector space with DN

    f. 探しているユーザーを特定し、 [プロパティ] をクリックして、すべての属性を参照します。 ユーザーが検索結果にない場合は、フィルター処理規則を確認し、ユーザーに対して変更の適用と検証を実行して Connect に表示します。

    g. 過去 1 週間のオブジェクトのパスワード同期の詳細を確認するには、 [ログ] をクリックします。

    Object log details

    オブジェクト ログが空の場合、Microsoft Entra Connect は Active Directory からパスワード ハッシュを読み取ることができていません。 接続エラーのトラブルシューティングに進みます。 [成功] 以外の値が表示される場合は、「パスワード同期ログ」の表をご覧ください。

    h. [系列] タブを選択し、 [PasswordSync] 列の少なくとも 1 つの同期規則が True であることを確認します。 既定の構成では、同期規則の名前は [In from AD - User AccountEnabled]\(AD からの受信 - ユーザー AccountEnabled) です。

    Lineage information about a user

    i. [Metaverse Object Properties]\(メタバース オブジェクトのプロパティ\) をクリックして、ユーザー属性の一覧を表示します。

    Screenshot that shows the list of user attributes for the Metaverse Object Properties.

    cloudFiltered 属性が存在しないことを確認します。 ドメイン属性 (domainFQDN と domainNetBios) に必要な値があることを確認します。

    j. [コネクタ] タブをクリックします。オンプレミスの Active Directory と Microsoft Entra ID の両方へのコネクタが表示されることを確認します。

    Metaverse information

    k. Microsoft Entra ID を表す行を選択し、[プロパティ][系列] タブの順にクリックします。コネクタ スペース オブジェクトでは、[PasswordSync] 列のアウトバウンド規則が True に設定されている必要があります。 既定の構成では、[Out to Microsoft Entra ID - User Join]という名前の同期規則です。

    Connector Space Object Properties dialog box

パスワード同期ログ

状態列には次の値が入ります。

Status 説明
Success パスワードが正常に同期されました。
FilteredByTarget パスワードは [ユーザーは次回ログオン時にパスワードの変更が必要] に設定されています。 パスワードは同期されていません。
NoTargetConnection メタバースまたは Microsoft Entra コネクタ スペースにオブジェクトがありません。
SourceConnectorNotPresent オンプレミスの Active Directory コネクタ スペースにオブジェクトがありません。
TargetNotExportedToDirectory Microsoft Entra コネクタ スペースのオブジェクトはまだエクスポートされていません。
MigratedCheckDetailsForMoreInfo ログ エントリはビルド 1.0.9125.0 より前に作成されており、従来の状態で表示されます。
エラー サービスから不明なエラーが返されました。
Unknown パスワード ハッシュのバッチを処理するときにエラーが発生しました。
MissingAttribute Microsoft Entra Domain Services で必要な特定の属性 (たとえば、Kerberos ハッシュ) を使用できません。
RetryRequestedByTarget 以前、Microsoft Entra Domain Services で必要な特定の属性 (たとえば、Kerberos ハッシュ) を使用できませんでした。 ユーザーのパスワード ハッシュの再同期が試行されました。

トラブルシューティングに役立つスクリプト

パスワード同期設定の状態の取得

Import-Module ADSync
$connectors = Get-ADSyncConnector
$aadConnectors = $connectors | Where-Object {$_.SubType -eq "Windows Azure Active Directory (Microsoft)"}
$adConnectors = $connectors | Where-Object {$_.ConnectorTypeName -eq "AD"}
if ($aadConnectors -ne $null -and $adConnectors -ne $null)
{
    if ($aadConnectors.Count -eq 1)
    {
        $features = Get-ADSyncAADCompanyFeature
        Write-Host
        Write-Host "Password sync feature enabled in your Azure AD directory: "  $features.PasswordHashSync
        foreach ($adConnector in $adConnectors)
        {
            Write-Host
            Write-Host "Password sync channel status BEGIN ------------------------------------------------------- "
            Write-Host
            Get-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector.Name
            Write-Host
            $pingEvents =
                Get-EventLog -LogName "Application" -Source "Directory Synchronization" -InstanceId 654  -After (Get-Date).AddHours(-3) |
                    Where-Object { $_.Message.ToUpperInvariant().Contains($adConnector.Identifier.ToString("D").ToUpperInvariant()) } |
                    Sort-Object { $_.Time } -Descending
            if ($pingEvents -ne $null)
            {
                Write-Host "Latest heart beat event (within last 3 hours). Time " $pingEvents[0].TimeWritten
            }
            else
            {
                Write-Warning "No ping event found within last 3 hours."
            }
            Write-Host
            Write-Host "Password sync channel status END ------------------------------------------------------- "
            Write-Host
        }
    }
    else
    {
        Write-Warning "More than one Azure AD Connectors found. Please update the script to use the appropriate Connector."
    }
}
Write-Host
if ($aadConnectors -eq $null)
{
    Write-Warning "No Azure AD Connector was found."
}
if ($adConnectors -eq $null)
{
    Write-Warning "No AD DS Connector was found."
}
Write-Host

すべてのパスワードの完全同期の開始

注意

このスクリプトは 1 回のみ実行してください。 複数回実行する必要がある場合は、別の問題があります。 問題のトラブルシューティングを行う場合は、Microsoft サポートに連絡してください。

次のスクリプトを使用して、すべてのパスワードの完全同期をトリガーできます。

$adConnector = "<CASE SENSITIVE AD CONNECTOR NAME>"
$aadConnector = "<CASE SENSITIVE AAD CONNECTOR NAME>"
Import-Module adsync
$c = Get-ADSyncConnector -Name $adConnector
$p = New-Object Microsoft.IdentityManagement.PowerShell.ObjectModel.ConfigurationParameter "Microsoft.Synchronize.ForceFullPasswordSync", String, ConnectorGlobal, $null, $null, $null
$p.Value = 1
$c.GlobalParameters.Remove($p.Name)
$c.GlobalParameters.Add($p)
$c = Add-ADSyncConnector -Connector $c
Set-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector -TargetConnector $aadConnector -Enable $false
Set-ADSyncAADPasswordSyncConfiguration -SourceConnector $adConnector -TargetConnector $aadConnector -Enable $true

次のステップ