分享方式:


Microsoft Entra 傳遞驗證安全性深入探討

本文提供 Microsoft Entra 傳遞驗證運作方式的更詳細描述。 此說明較著重在功能的安全性方面。 本文適用於安全性和 IT 管理員、法務長和安全主管,以及負責任何規模的組織或企業 IT 安全性與合規性的其他 IT 專業人員。

處理的主題包括:

  • 如何安裝和註冊驗證代理程式的詳細技術資訊。
  • 使用者登入期間密碼加密的詳細技術資訊。
  • 內部部署驗證代理程式與 Microsoft Entra ID 之間的通道安全性。
  • 如何保持驗證代理程式運作安全的詳細技術資訊。

傳遞驗證金鑰安全性功能

傳遞驗證具有下列重要安全性功能:

  • 此功能建置在安全的多租用戶架構上,可隔離租用戶之間的登入要求。
  • 內部部署密碼一律不會以任何形式儲存在雲端中。
  • 接聽並回應密碼驗證要求的內部部署驗證代理程式只會從網路內建立輸出連線。 不需要在周邊網路中安裝這些驗證代理程式 (也稱為「DMZ」、「邊緣網路」和「遮蔽式子網路」)。 最佳做法是,將所有執行驗證代理程式的伺服器都視為階層 0 的系統 (請參閱參考)。
  • 只有標準連接埠 (連接埠 80 和連接埠 443) 會用於從驗證代理程式至 Microsoft Entra ID 的輸出通訊。 您不需要在防火牆上開放輸入連接埠。
    • 連接埠 443 會用於所有經過驗證的輸出通訊。
    • 連接埠 80 僅用於下載憑證撤銷清單 (CRL),以確保未撤銷此功能所使用的任何憑證。
    • 如需完整的網路需求清單,請參閱 Microsoft Entra 傳遞驗證快速入門
  • 使用者在登入期間所提供的密碼在雲端會經過加密,內部部署驗證代理程式才會接受密碼,對 Windows Server Active Directory (Windows Server AD) 進行驗證。
  • Microsoft Entra ID 與內部部署驗證代理程式之間的 HTTPS 通道會使用相互驗證來進行保護。
  • 傳遞驗證可使用 Microsoft Entra 條件式存取原則順暢地運作 (包括多重要素驗證 (MFA)、封鎖舊版驗證篩除暴力密碼破解攻擊) 來保護使用者帳戶。

傳遞驗證所涉及的元件

如需 Microsoft Entra ID 作業、服務和資料安全性的一般詳細資料,請參閱信任中心。 將傳遞驗證用於使用者登入時,需要下列元件:

  • Microsoft Entra Security Token Service (Microsoft Entra STS):無狀態 STS,可視需要處理登入要求,並將安全性權杖核發給使用者瀏覽器、用戶端或服務。
  • Azure 服務匯流排:可為企業傳訊及轉送通訊提供雲端通訊的能力,讓您可以連接內部部署解決方案與雲端。
  • Microsoft Entra Connect 驗證代理程式:接聽和回應密碼驗證要求的內部部署元件。
  • Azure SQL Database:保存租用戶驗證代理程式的相關資訊,包括其中繼資料和加密金鑰。
  • Windows Server AD:內部部署 Active Directory,其中儲存使用者帳戶和其密碼。

驗證代理程式的安裝和註冊

當您採取下列其中一個動作時,會安裝驗證代理程式,並向 Microsoft Entra ID 進行註冊:

取得驗證代理程式作業涉及三個主要階段:

  • 安裝
  • 註冊
  • 初始化

以下幾節將詳細討論這幾個階段。

驗證代理程式安裝

只有混合式身分識別系統管理員帳戶才能在內部部署伺服器上安裝驗證代理程式 (使用 Microsoft Entra Connect 或獨立執行個體)。

安裝會將兩個新項目新增至 [控制台] > [程式] > [程式和功能] 中的清單:

  • 驗證代理程式應用程式本身。 此應用程式會以 NetworkService 權限執行。
  • 用來自動更新驗證代理程式的更新程式應用程式。 此應用程式會以 LocalSystem 權限執行。

重要

從安全性的觀點來看,系統管理員應該將執行傳遞驗證代理程式的伺服器視為網域控制器。 應該依照保護網域控制站不受攻擊所述來強化傳遞驗證代理程式伺服器。

驗證代理程式註冊

安裝驗證代理程式之後,其會自行向 Microsoft Entra ID 進行註冊。 Microsoft Entra ID 會為每個驗證代理程式指派唯一的數位身分識別憑證,以用於與 Microsoft Entra ID 進行安全通訊。

註冊程序也會繫結驗證代理程式與您的租用戶。 然後,Microsoft Entra ID 會知道此特定驗證代理程式是唯一有權處理租用戶密碼驗證要求的代理程式。 系統會針對您註冊的每個新驗證代理程式,重複此程序。

驗證代理程式會使用下列步驟向 Microsoft Entra ID 進行註冊:

圖表:描述向 Azure AD 的驗證代理程式註冊。

  1. Microsoft Entra 會先要求混合式身分識別管理員使用其認證登入 Microsoft Entra ID。 在登入期間,驗證代理程式會取得可代表使用者的存取權杖。
  2. 驗證代理程式接著會產生一個金鑰組:公開金鑰和私密金鑰。
    • 此金鑰組是透過標準 RSA 2048 位元加密所產生。
    • 私密金鑰會存留在驗證代理程式所在的內部部署伺服器上。
  3. 驗證代理程式會透過 HTTPS 向 Microsoft Entra ID 提出註冊要求,並在要求中包含下列元件:
    • 代理程式所取得的存取權杖。
    • 所產生的公開金鑰。
    • 憑證簽署要求 (「CSR」或「憑證要求」)。 此要求會向作為其憑證授權單位 (CA) 的 Microsoft Entra ID 申請數位身分識別憑證。
  4. Microsoft Entra ID 會驗證註冊要求中的存取權杖,並確認要求來自混合式身分識別管理員。
  5. Microsoft Entra ID 接著會簽署數位身分識別憑證,並將其傳回給驗證代理程式。
    • Microsoft Entra ID 中的根 CA 用來簽署憑證。

      注意

      此 CA「不在」Windows 受信任的根憑證授權單位存放區中。

    • 此 CA 僅供傳遞驗證功能使用。 此 CA 只會在驗證代理程式註冊期間用來簽署 CSR。

    • 沒有其他 Microsoft Entra 服務會使用此 CA。

    • 憑證的主體 (也稱為「辨別名稱」或「DN」) 會設定為您的租用戶識別碼。 此 DN 是可唯一識別租用戶的 GUID。 此 DN 可將憑證的範圍限制為只能用於您的租用戶。

  6. Microsoft Entra ID 會將驗證代理程式的公開金鑰儲存在 Azure SQL Database 中。 只有 Microsoft Entra ID 才能存取該資料庫。
  7. 核發的憑證會儲存在 Windows 憑證存放區的內部部署伺服器上 (具體而言是在 CERT_SYSTEM_STORE_LOCAL_MACHINE 中)。 驗證代理程式和更新程式應用程式都會使用憑證。

驗證代理程式初始化

驗證代理程式在註冊後第一次啟動時,或伺服器重新啟動後啟動時,需要有適當的方式與 Microsoft Entra 服務安全地進行通訊,以開始接受密碼驗證要求。

圖:描述驗證代理程式初始化。

以下是驗證代理程式初始化的方式:

  1. 驗證代理程式向 Microsoft Entra ID 提出輸出啟動程序要求。

    此要求會透過連接埠 443 和相互驗證的 HTTPS 通道提出。 此要求會使用先前在驗證代理程式註冊期間核發的相同憑證。

  2. Microsoft Entra ID 回應此要求,方式是將存取金鑰提供給您的租用戶專屬 (以您的租用戶識別碼識別) 的服務匯流排佇列。

  3. 驗證代理程式會對佇列建立持續的輸出 HTTPS 連線 (透過連接埠 443)。

驗證代理程式現在已可擷取並處理密碼驗證要求。

如果您在租用戶上註冊多個驗證代理程式,則初始化程序可確保每個代理程式都連線至相同的服務匯流排佇列。

傳遞驗證如何處理登入要求

下圖顯示傳遞驗證如何處理使用者登入要求:

圖:描述傳遞驗證如何處理使用者登入要求。

傳遞驗證如何處理使用者登入要求:

  1. 使用者嘗試存取應用程式,例如 Outlook Web App

  2. 如果使用者還未登入,則應用程式會將瀏覽器重新導向至 Microsoft Entra 登入頁面。

  3. Microsoft Entra STS 服務會透過 [使用者登入] 頁面予以回應。

  4. 使用者將其使用者名稱輸入 [使用者登入] 頁面中,然後選取 [下一步] 按鈕。

  5. 使用者將其密碼輸入 [使用者登入] 頁面中,然後選取 [登入] 按鈕。

  6. 使用者名稱與密碼會在 HTTPS POST 要求中提交至 Microsoft Entra STS。

  7. Microsoft Entra STS 會針對您的租用戶上註冊的所有驗證代理程式擷取 Azure SQL Database 中的公開金鑰,並使用這些金鑰為其密碼加密。

    它會針對您的租用戶上註冊的每個驗證代理程式產生一個加密的密碼值。

  8. Microsoft Entra STS 會將密碼驗證要求 (其中包含使用者名稱和加密的密碼值) 放在租用戶專屬的服務匯流排佇列中。

  9. 初始化的驗證代理程式會持續連線至服務匯流排佇列,因此其中一個可用的驗證代理程式會擷取密碼驗證要求。

  10. 驗證代理程式會使用識別碼來找出其公開金鑰專屬的加密密碼值。 它會使用其私密金鑰將公開金鑰解密。

  11. 驗證代理程式會嘗試使用 Win32 LogonUser API 並將 dwLogonType 參數設定為 LOGON32_LOGON_NETWORK 來驗證 Windows Server AD 的使用者名稱和密碼。

    • 此 API 是 Active Directory 同盟服務 (AD FS) 在同盟登入案例中用來登入使用者的相同 API。
    • 此 API 依賴 Windows Server 中的標準解析程序來尋找網域控制站。
  12. 驗證代理程式會從 Windows Server AD 接收結果,例如成功、使用者名稱或密碼不正確,或是密碼過期。

    注意

    如果驗證代理程式在登入程序期間失敗,則會捨棄整個登入要求。 登入要求不會從某個內部部署驗證代理程式交給另一個內部部署驗證代理程式。 這些代理程式只會與雲端通訊,而不會彼此通訊。

  13. 驗證代理程式會透過連接埠 443 上輸出相互驗證的 HTTPS 通道,將結果轉送回 Microsoft Entra STS。 相互驗證會使用註冊期間核發給驗證代理程式的憑證。

  14. Microsoft Entra STS 會確認此結果與租用戶上的特定登入要求相互關聯。

  15. Microsoft Entra STS 會繼續依設定方式來進行登入程序。 例如,如果密碼驗證成功,則使用者可能會受到 MFA 的挑戰,或重新導向回應用程式。

驗證代理程式作業安全性

為了確保傳遞驗證保持運作安全,Microsoft Entra ID 會定期續訂驗證代理程式憑證。 Microsoft Entra ID 會觸發續訂。 續訂不是由驗證代理程式本身所控管。

圖:描述作業安全性如何與傳遞驗證搭配運作。

若要使用 Microsoft Entra ID 來續訂驗證代理程式的信任:

  1. 驗證代理程式會每幾個小時對 Microsoft Entra 進行 Ping 處理,以檢查其是否應該續訂其憑證。 憑證會在到期前 30 天續訂。

    此檢查是透過相互驗證的 HTTPS 通道,使用註冊期間所核發的相同憑證執行的。

  2. 如果服務指出應進行續訂,則驗證代理程式會產生一個新的金鑰組:公開金鑰和私密金鑰。

    • 這些金鑰是透過標準 RSA 2,048 位元加密所產生。
    • 私密金鑰永遠都不會離開內部部署伺服器。
  3. 然後,驗證代理程式會透過 HTTPS 向 Microsoft Entra ID 提出憑證續訂要求。 要求中會包括下列元件:

    • 從 Windows 憑證存放區的 CERT_SYSTEM_STORE_LOCAL_MACHINE 位置所擷取的現有憑證。 此程序未涉及全域管理員,因此全域管理員不需要存取權杖。
    • 在步驟 2 中產生的公開金鑰。
    • CSR。 此要求會向作為其 CA 的 Microsoft Entra ID 申請新數位身分識別憑證。
  4. Microsoft Entra ID 會在憑證續訂要求中驗證現有的憑證。 然後,其會確認要求來自租用戶上註冊的驗證代理程式。

  5. 如果現有的憑證仍然有效,則 Microsoft Entra ID 會簽署新的數位身分識別憑證,並將新的憑證核發回驗證代理程式。

  6. 如果現有的憑證已過期,則 Microsoft Entra ID 會從租用戶的已註冊驗證代理程式清單中刪除該驗證代理程式。 然後,全域管理員或混合式身分識別管理員必須手動安裝並註冊新的驗證代理程式。

    • 使用 Microsoft Entra ID 根 CA 來簽署憑證。
    • 將憑證的 DN 設定為租用戶識別碼,即可唯一識別租用戶的 GUID。 DN 會將憑證的範圍限定於您的租用戶。
  7. Microsoft Entra ID 會將驗證代理程式的新公開金鑰儲存在只有 Microsoft Entra ID 可存取的 Azure SQL Database 資料庫中。 其也會讓與驗證代理程式相關聯的舊公開金鑰失效。

  8. 然後,在步驟 5 中核發的新憑證會儲存在伺服器的 Windows 憑證存放區中 (具體而言是在 CERT_SYSTEM_STORE_CURRENT_USER 位置中)。

    因為信任續訂程序會以非互動方式執行 (不需要具有全域管理員或混合式身分識別管理員),所以驗證代理程式不再具有存取權可更新 CERT_SYSTEM_STORE_LOCAL_MACHINE 位置中的現有憑證。

    注意

    此程序並不會從 CERT_SYSTEM_STORE_LOCAL_MACHINE 位置中移除憑證本身。

  9. 從現在起,新的憑證會用於驗證。 憑證後續的每次更新都會取代 CERT_SYSTEM_STORE_LOCAL_MACHINE 位置中的憑證。

驗證代理程式自動更新

更新程式應用程式會在新版本 (具有錯誤修正或效能增強) 發行時,自動更新驗證代理程式。 更新程式應用程式不會處理租用戶的任何密碼驗證要求。

Microsoft Entra ID 會將新版的軟體裝載為已簽署的 Windows Installer 套件 (MSI)。 MSI 是使用以 SHA-256 作為摘要演算法的 Microsoft Authenticode 所簽署。

圖:顯示如何自動更新驗證代理程式。

若要自動更新驗證代理程式:

  1. 更新程式應用程式會每小時對 Microsoft Entra 進行 Ping 處理,以檢查是否有新版驗證代理程式可用。

    此檢查是透過相互驗證的 HTTPS 通道,使用註冊期間所核發的相同憑證執行的。 驗證代理程式和更新程式會共用伺服器上所儲存的憑證。

  2. 如果有新版本可用,則 Microsoft Entra ID 會將已簽署的 MSI 傳回給更新程式。

  3. 更新程式驗證 MSI 是否由 Microsoft 簽署。

  4. 更新程式執行 MSI。 在此程序中,更新程式應用程式:

    注意

    更新程式會以 本機系統 權限執行。

    1. 停止驗證代理程式服務。
    2. 在伺服器上安裝新版的驗證代理程式。
    3. 重新啟動驗證代理程式服務。

注意

如果您的租用戶上已註冊多個驗證代理程式,則 Microsoft Entra ID 不會續訂其憑證或同時更新憑證。 相反地,Microsoft Entra ID 會一次更新一個憑證,以確保登入要求的高度可用性。

下一步