共用方式為


使用 Microsoft Entra Connect 同步來實作密碼雜湊同步

本文提供您所需資訊,以讓您將使用者密碼從內部部署 Active Directory 執行個體同步處理至雲端式 Microsoft Entra 執行個體。

密碼雜湊同步處理如何運作

Active Directory 網域服務是以使用者實際密碼的雜湊值表示法格式來儲存密碼。 雜湊值是單向數學函數 (「雜湊演算法」) 的計算結果。 沒有任何方法能將單向函數的結果還原成純文字版本的密碼。

為了同步密碼,Microsoft Entra Connect 同步處理會從內部部署 Active Directory 執行個體擷取您的密碼雜湊。 系統會先對密碼雜湊套用額外的安全性處理,再將其同步至 Microsoft Entra 驗證服務。 密碼是以個別使用者為單位,依時間先後順序進行同步處理。

實際的密碼雜湊同步程序資料流程,與使用者資料的同步處理相似。 不過,密碼的同步處理頻率會高於其他屬性的標準目錄同步作業時程。 密碼雜湊同步流程每 2 分鐘就會執行一次。 您無法修改此流程的頻率。 當您同步處理密碼時,該密碼會覆寫現有的雲端密碼。

您第一次啟用密碼雜湊同步功能時,系統會對範圍內的所有使用者執行密碼的首次同步處理作業。 分段推出可讓您選擇性地對使用者群組測試雲端驗證功能,例如 Microsoft Entra 多重要素驗證、條件式存取、認證外洩的 Microsoft Entra ID Protection、身分識別控管等,然後再切換網域。 您無法明確定義一小組要同步處理的使用者密碼。 但是,如果有多個連接器,您可以使用 ADSyncAADPasswordSyncConfiguration Cmdlet,停用某些連接器的密碼雜湊同步處理,而不是其他連接器。

當您變更內部部署密碼時,系統一般會在幾分鐘內同步更新後的密碼。 密碼雜湊同步功能會自動重試失敗的同步處理作業。 如果在嘗試同步處理密碼時發生錯誤,錯誤會記錄在您的事件檢視器中。

密碼同步處理不會影響目前已登入的使用者。 目前的雲端服務工作階段不會立即受到同步處理的密碼變更之影響,會在您登入雲端服務時才會受到影響。 不過,當雲端服務要求您重新驗證時,就需要提供新的密碼。

無論使用者是否登入公司網路,都必須再次輸入其公司認證,以驗證 Microsoft Entra ID。 不過,如果使用者在登入時選取 [讓我保持登入 (KMSI)] 核取方塊,則此模式可最小化。 選取此方塊會設定在 180 天內略過驗證的工作階段 Cookie。 KMSI 行為可以由 Microsoft Entra 管理員啟用或停用。 此外,您可以藉由設定 Microsoft Entra 聯結Microsoft Entra 混合式聯結來減少密碼提示,此功能會在使用者是位於連線到您公司網路的公司裝置上時,自動將他們登入。

其他優點

  • 一般而言,密碼雜湊同步處理比同盟服務更容易實作。 它不需要任何其他伺服器,並且會排除高可用性同盟服務的相依性以驗證使用者。
  • 您也可以除了同盟之外,再啟用密碼雜湊同步處理。 您可以將它作為同盟服務發生中斷時的後援服務。

注意

只有 Active Directory 的物件類型使用者才支援密碼同步。 不支援 iNetOrgPerson 物件類型。

密碼雜湊同步處理運作方式的詳細描述

以下各節深入說明 Active Directory 與 Microsoft Entra ID 之間的密碼雜湊同步處理運作方式。

詳細的密碼流程

  1. AD Connect 伺服器上的密碼雜湊同步處理代理程式每隔兩分鐘就會向 DC 要求儲存的密碼雜湊 (unicodePwd 屬性)。 此要求是使用標準 MS-DRSR \(英文\)複寫通訊協定,用來在 DC 之間同步資料。 AD DS 連接器帳戶必須具有複寫目錄變更和複寫目錄變更所有 AD 權限 (預設在安裝時授與),以取得密碼雜湊。

  2. 在傳送之前,DC 會使用金鑰 (它是 RPC 工作階段金鑰和 salt 的 MD5 雜湊),來加密 MD4 密碼雜湊。 然後它會透過 RPC 將結果傳送給密碼雜湊同步處理代理程式。 DC 也會使用 DC 複寫通訊協定將 salt 傳送至同步處理代理程式,讓代理程式可以解密信封。

  3. 在密碼雜湊同步處理代理程式將信封加密後,它會使用 MD5CryptoServiceProvider 和 salt 來產生金鑰,以將接收的資料解密回其原始 MD4 格式。 密碼雜湊同步處理代理程式永遠不會存取純文字密碼。 密碼雜湊同步處理代理程式使用 MD5 純粹是為了與 DC 的複寫通訊協定相容,並且只會在內部部署環境中的 DC 和密碼雜湊同步處理代理程式之間使用。

  4. 密碼雜湊同步處理代理程式會將 16 位元組二進位密碼雜湊擴展成 64 位元組,方法是先將該雜湊轉換成 32 位元組十六進位字串,再將此字串轉換回具有 UTF-16 編碼的二進位檔。

  5. 密碼雜湊同步處理代理程式會將每位使用者 salt 處理 (由 10 位元組長度 salt 所組成) 新增至 64 位元組二進位檔,以進一步保護原始雜湊。

  6. 接著,密碼雜湊同步處理代理程式會結合 MD4 雜湊加上每位使用者 salt 處理,然後將其輸入至 PBKDF2 函式。 系統會使用 HMAC-SHA256 索引雜湊演算法的 1000 次反覆運算。 如需其他詳細資料,請參閱《Microsoft Entra 白皮書》。

  7. 密碼雜湊同步處理代理程式會使用產生的 32 位元組雜湊,將每位使用者 salt 處理和 SHA256 反覆運算數與其串連 (以供 Microsoft Entra ID 使用),然後透過 TLS 將字串從 Microsoft Entra Connect 傳輸至 Microsoft Entra ID。

  8. 當使用者嘗試登入 Microsoft Entra ID 並且輸入其密碼時,密碼會執行相同的 MD4+salt+PBKDF2+HMAC-SHA256 流程。 如果產生的雜湊符合 Microsoft Entra ID 中儲存的雜湊,表示使用者輸入的密碼正確並且通過驗證。

注意

系統不會將原始的 MD4 雜湊傳輸至 Microsoft Entra ID。 而是會傳輸原始 MD4 雜湊的 SHA256 雜湊。 如此一來,如果取得儲存在 Microsoft Entra ID 的雜湊,它不能在內部部署雜湊傳遞攻擊中使用。

注意

密碼雜湊值永遠不會儲存在 SQL 中。 這些值只會先在記憶體中處理,再傳送至 Microsoft Entra ID。

安全性考量

同步密碼時,不會向密碼雜湊同步處理功能、Microsoft Entra ID 或任何相關的服務公開純文字版本的密碼。

使用者驗證是針對 Microsoft Entra 進行,而不是針對組織自己的 Active Directory 執行個體進行。 儲存在 Microsoft Entra ID 中的 SHA256 密碼資料 (原始 MD4 雜湊的雜湊),比儲存在 Active Directory 中的資料更安全。 此外,因為此 SHA256 雜湊無法解密,所以無法帶回組織的 Active Directory 環境,並且在雜湊傳遞攻擊中顯示為有效的使用者密碼。

密碼原則考量

啟用密碼雜湊同步處理會影響兩種類型的密碼原則:

  • 密碼複雜性原則
  • 密碼到期原則

密碼複雜性原則

啟用密碼雜湊同步處理時,內部部署 Active Directory 執行個體中的密碼複雜性原則,會覆寫所同步處理使用者在雲端中的複雜性原則。 您可以使用內部部署 Active Directory 執行個體的所有有效密碼,來存取 Microsoft Entra 服務。

注意

直接在雲端建立的使用者的密碼仍受制於在雲端定義的密碼原則。

密碼到期原則

依預設,如果使用者位於密碼雜湊同步處理範圍內,則雲端帳戶的密碼會設定成永不到期

您可以使用內部部署環境中已過期的同步處理密碼,繼續登入雲端服務。 您的雲端密碼會於下一次您在內部部署環境中變更密碼時更新。

CloudPasswordPolicyForPasswordSyncedUsersEnabled

如果有只會與 Microsot Entra 整合服務互動的已同步處理使用者,而且也必須遵循密碼到期原則,您可以啟用 CloudPasswordPolicyForPasswordSyncedUsersEnabled功能 (在遭取代的 MSOnline PowerShell 模組中,稱為 EnforceCloudPasswordPolicyForPasswordSyncedUsers),強制其遵循您的 Microsoft Entra 密碼到期原則。

停用 CloudPasswordPolicyForPasswordSyncedUsersEnabled (預設設定) 時,Microsoft Entra Connect 會將同步處理使用者的 PasswordPolicies 屬性更新為 "DisablePasswordExpiration"。 此更新會在每次同步處理使用者的密碼時完成,並指示 Microsoft Entra ID 忽略該使用者的雲端密碼到期原則。 您可以使用 Microsoft Graph PowerShell 模組並搭配下列命令,檢查屬性的值:

(Get-MgUser -UserId <User Object ID> -Property PasswordPolicies).PasswordPolicies

若要啟用 CloudPasswordPolicyForPasswordSyncedUsersEnabled 功能,請使用 Graph PowerShell 模組執行下列命令:

$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.CloudPasswordPolicyForPasswordSyncedUsersEnabled = $true

Update-MgDirectoryOnPremiseSynchronization `
  -OnPremisesDirectorySynchronizationId $OnPremSync.Id `
  -Features $OnPremSync.Features 

注意

您必須安裝 MSGraph PowerShell 模組,才能讓前述指令碼運作。 如果您收到與許可權不足相關的任何錯誤,請確定您已在連線 Connect-MgGraph -Scopes "OnPremDirectorySynchronization.ReadWrite.All" 時使用下列命令,正確同意 API 範圍

啟用之後,Microsoft Entra ID 不會移至每個同步處理的使用者,以移除 PasswordPolicies 屬性中的 DisablePasswordExpiration 值。 相反地,在每位使用者的下一個密碼雜湊同步處理期間,會從 PasswordPolicies 中移除 DisablePasswordExpiration 值,其會在內部部署 AD 中的下一個密碼變更時移除。

啟用 CloudPasswordPolicyForPasswordSyncedUsersEnabled 功能之後,就會佈建不具 PasswordPolicies 值的新使用者。

提示

建議您先啟用 CloudPasswordPolicyForPasswordSyncedUsersEnabled,然後再啟用密碼雜湊同步處理。如此一來,密碼雜湊的初始同步處理就不會將 DisablePasswordExpiration 值新增至使用者的 PasswordPolicies 屬性。

預設的 Microsoft Entra 密碼原則會要求使用者每隔 90 天變更其密碼。 如果您在 AD 中的原則也是 90 天,則這兩個原則應該相符。 不過,如果 AD 原則不是 90 天,您可以使用 Update-MgDomain PowerShell 命令更新 Microsoft Entra 密碼原則,以便符合此原則。

Microsoft Entra ID 針對每個已註冊的網域,支援不同的密碼到期原則。

注意:如果有同步處理的帳戶在 Microsoft Entra ID 中需要有不過期的密碼,您必須在 Microsoft Entra ID 中明確將 DisablePasswordExpiration 值新增至使用者物件的 PasswordPolicies 屬性。 您可新增此值,藉由執行下列命令:

Update-MgUser -UserID <User Object ID> -PasswordPolicies "DisablePasswordExpiration"`

注意

針對 PasswordPolicies 值設定為 DisablePasswordExpiration 的混合式使用者,此值會在內部部署執行密碼變更之後切換至 None

注意

Update-MgDomain PowerShell 命令無法在同盟網域上運作。

注意

Update-MgUser PowerShell 命令無法在同盟網域上運作。

同步處理臨時密碼和「下次登入時強制變更密碼」

通常會在使用者第一次登入時,強制使用者變更其密碼,特別是系統管理員密碼重設之後。 其通常稱為設定「臨時」密碼,並藉由檢查 Active Directory (AD) 中使用者物件的「使用者必須在下次登入時變更密碼」旗標來完成。

臨時密碼功能可協助確保在第一次使用時,已完成認證的擁有權轉移,並將多人知道的認證持續時間降至最低。

若要支援適用於同步處理使用者的 Microsoft Entra ID 臨時密碼,您可以利用 圖表化 PowerShell 模組執行下列命令,以啟用 ForcePasswordChangeOnLogOn 功能:

$OnPremSync = Get-MgDirectoryOnPremiseSynchronization
$OnPremSync.Features.UserForcePasswordChangeOnLogonEnabled = $true

Update-MgDirectoryOnPremiseSynchronization `
  -OnPremisesDirectorySynchronizationId $OnPremSync.Id `
  -Features $OnPremSync.Features 

注意

不論 ForcePasswordChangeOnLogOn 功能為 true 或 false,Active Directory 中以「使用者必須在下次登入時變更密碼」旗標建立的新使用者,一律會在 Microsoft Entra ID 中佈建,且其密碼原則為「強制下次登入時必須變更密碼」。 這是 Microsoft Entra 內部邏輯,因為佈建新使用者時未包含密碼,而 ForcePasswordChangeOnLogOn 功能只會影響管理員密碼重設案例。

如果在 Active Directory 中建立使用者,並在啟用此功能之前設為「使用者必須在下次登入時變更密碼」,使用者就會在登入時收到錯誤。 若要補救此問題,請在 Active Directory 使用者和電腦中取消核取並重新檢查 [使用者必須在下次登入時變更密碼] 欄位。 同步處理使用者物件變更之後,使用者會在 Microsoft Entra ID 中收到預期的提示,要求其更新密碼。

警告

只有在租用戶上啟用 SSPR 和密碼回寫時,才可使用這項功能。 如此一來,如果使用者透過 SSPR 變更密碼,則會同步處理至 Active Directory。

帳戶到期

如果您的組織使用 accountExpires 屬性作為使用者帳戶管理的一部分,這個屬性不會同步處理至 Microsoft Entra ID。 如此一來,在針對密碼雜湊同步處理設定之環境中已到期的 Active Directory 帳戶在 Microsoft Entra ID 裡將仍然為作用中。 在使用者的 AD 帳戶到期之後,建議您使用已排程的 PowerShell 指令碼將其停用 (使用 Set-ADUser Cmdlet)。 相反地,在從 AD 帳戶移除到期期間,應該重新啟用帳戶。

覆寫已同步的密碼

除非使用者位於同盟網域中,否則管理員可以使用 PowerShell 直接在 Microsoft Entra ID 中手動重設密碼。

在此情況下,新的密碼會覆寫您已同步處理的密碼,且雲端中定義的所有密碼原則都會套用到新的密碼。

如果您再次變更內部部署密碼,則新密碼會同步到雲端並覆寫手動更新的密碼。

密碼同步處理不會影響已登入的 Azure 使用者。 目前的雲端服務工作階段不會立即受到同步處理的密碼變更之影響,會在您登入雲端服務時才會受到影響。 KMSI 會延伸此差異的持續時間。 當雲端服務要求您重新驗證時,就需要提供新的密碼。

密碼雜湊同步處理至 Microsoft Entra Domain Services

如果您使用 Microsoft Entra Domain Services,為需要使用 Kerberos、LDAP 或 NTLM 的應用程式與服務提供舊版驗證,則某些額外流程是密碼雜湊同步處理流程的一部分。 Microsoft Entra Connect 會使用以下流程,將密碼雜湊同步處理至 Microsoft Entra ID,以便在 Microsoft Entra Domain Services 中使用:

重要

只應針對與內部部署 AD DS 環境進行同步處理時,才安裝和設定 Microsoft Entra Connect。 其不支援在 Microsoft Entra Domain Services 受控網域中安裝 Microsoft Entra Connect,將物件同步處理回 Microsoft Entra ID。

當您為 Microsoft Entra 租用戶啟用 Microsoft Entra Domain Services 時,Microsoft Entra Connect 只會同步處理舊版密碼雜湊。 如果您只使用 Microsoft Entra Connect 同步內部部署 AD DS 環境與 Microsoft Entra ID,則不會使用以下步驟。

如果您的舊版應用程式未使用 NTLM 驗證或 LDAP 簡單繫結,建議您針對 Microsoft Entra Domain Services 停用 NTLM 密碼雜湊同步處理。 如需更多資訊,請參閱停用弱式加密套件和 NTLM 認證雜湊同步處理

  1. Microsoft Entra Connect 會擷取租用戶 Microsoft Entra Domain Services 執行個體的公開金鑰。
  2. 當使用者變更其密碼時,內部部署網域控制站會將密碼變更的結果 (雜湊) 儲存在兩個屬性中:
    • NTLM 密碼雜湊的 unicodePwd
    • Kerberos 密碼雜湊的 supplementalCredentials
  3. Microsoft Entra Connect 透過目錄複寫通道,偵測密碼變更 (需要複寫至其他網域控制站的屬性變更)。
  4. 針對每一位已變更密碼的使用者,Microsoft Entra Connect 會執行下列步驟:
    • 產生隨機 AES 256 位元對稱金鑰。
    • 產生第一輪加密所需的隨機初始化向量。
    • supplementalCredentials 屬性中,擷取 Kerberos 密碼雜湊。
    • 檢查 Microsoft Entra Domain Services 安全性設定 SyncNtlmPasswords 設定。
      • 如果停用此設定,則會產生隨機的高熵 NTLM 雜湊 (與使用者的密碼不同)。 然後,此雜湊會與 supplementalCrendetials 屬性中準確的 Kerberos 密碼雜湊合併成一個資料結構。
      • 啟用時,會將 unicodePwd 屬性的值與 supplementalCredentials 屬性中的已擷取 Kerberos 密碼雜湊,合併成一個資料結構。
    • 使用 AES 對稱金鑰,加密單一資料結構。
    • 使用租用戶的 Microsoft Entra Domain Services 公開金鑰,加密 AES 對稱金鑰。
  5. Microsoft Entra Connect 會傳輸加密的 AES 對稱金鑰、包含密碼雜湊的加密資料結構,以及初始化向量至 Microsoft Entra ID。
  6. Microsoft Entra ID 會儲存加密的 AES 對稱金鑰、加密的資料結構,以及使用者的初始化向量。
  7. Microsoft Entra ID 會使用內部同步處理機制,將加密的 AES 對稱金鑰、加密的資料結構,以及初始化向量推送至 Microsoft Entra Domain Services 的加密 HTTP 工作階段。
  8. Microsoft Entra Domain Services 會從 Azure Key Vault 擷取租用戶執行個體的私密金鑰。
  9. 針對每一組加密的資料 (代表單一使用者的密碼變更),Microsoft Entra Domain Services 之後會執行下列步驟:
    • 使用其私密金鑰解密 AES 對稱金鑰。
    • 使用 AES 對稱金鑰,並搭配初始化向量,解密包含密碼雜湊的加密資料結構。
    • 將收到的 Kerberos 密碼雜湊寫入 Microsoft Entra Domain Services 網域控制站。 雜湊會儲存至使用者物件的 supplementalCredentials 屬性,該屬性會加密 Microsoft Entra Domain Services 網域控制站的公開金鑰。
    • Microsoft Entra Domain Services 會將收到的 NTLM 密碼雜湊寫入 Microsoft Entra Domain Services 網域控制站中。 雜湊會儲存至使用者物件的 unicodePwd 屬性,該屬性會加密 Microsoft Entra Domain Services 網域控制站的公開金鑰。

啟用密碼雜湊同步功能

重要

如果您要從 AD FS (或其他同盟技術) 移轉至密碼雜湊同步,請參閱將應用程式遷移至 Microsoft Entra ID 的資源

當您透過 [快速設定] 選項安裝 Microsoft Entra Connect 時,就會自動啟用密碼雜湊同步功能。 如需詳細資訊,請參閱使用快速設定開始使用 Microsoft Entra Connect

若安裝 Microsoft Entra Connect 時使用自訂設定,您就能在使用者登入頁面上使用密碼雜湊同步功能。 如需詳細資訊,請參閱 Microsoft Entra Connect 自訂安裝

啟用密碼雜湊同步處理

密碼雜湊同步處理和 FIPS

若您的伺服器根據聯邦資訊處理標準 (FIPS) 被鎖定,MD5 便會停用。

若要啟用密碼雜湊同步功能的 MD5,請執行下列步驟:

  1. 移至 %programfiles%\Microsoft Azure AD Sync\Bin。
  2. 開啟 [Server.exe.config]。
  3. 前往檔案結尾處的 [設定/執行階段] 節點。
  4. 新增下列節點:<enforceFIPSPolicy enabled="false" />
  5. 儲存您的變更。
  6. 重新啟動,以讓變更生效。

做為參考,此片段應如下列所示:

    <configuration>
        <runtime>
            <enforceFIPSPolicy enabled="false" />
        </runtime>
    </configuration>

如需安全性和 FIPS 的詳細資訊,請參閱 Microsoft Entra 密碼雜湊同步、加密和 FIPS 合規性

針對密碼雜湊同步處理進行疑難排解

如果您在進行密碼雜湊同步處理時發生問題,請參閱針對密碼雜湊同步處理進行疑難排解

下一步