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 識別碼作業、服務和資料安全性的一般詳細資料,請參閱 信任中心 。 當您針對使用者登入使用傳遞驗證時,涉及下列元件:

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

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

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

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

  • 安裝
  • 註冊
  • 初始化

下列各節會詳細討論這些階段。

驗證代理程式安裝

只有混合式身分識別管理員istrator 帳戶可以在內部部署伺服器上安裝驗證代理程式(使用 Microsoft Entra 連線 或獨立實例)。

安裝會將兩個新專案新增至 主控台 > Programs > 程式和功能 中的 清單:

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

重要

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

驗證代理程式註冊

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

註冊程式也會將驗證代理程式系結到您的租使用者。 然後,Microsoft Entra ID 知道此特定驗證代理程式是唯一有權處理租使用者密碼驗證要求的代理程式。 您註冊的每個新驗證代理程式都會重複此程式。

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

Diagram that depicts authentication agent registration with Azure AD.

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

      注意

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

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

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

    • 憑證的主體 (也稱為 辨別名稱 DN ) 會設定為您的租使用者識別碼。 此 DN 是可唯一識別租使用者的 GUID。 此 DN 會將憑證限定為只與您的租使用者搭配使用。

  6. Microsoft Entra ID 會將驗證代理程式的公開金鑰儲存在 Azure SQL 資料庫 的資料庫中。 只有 Microsoft Entra ID 可以存取資料庫。
  7. 核發的憑證會儲存在 Windows 憑證存放區的內部部署伺服器上(具體來說,CERT_SYSTEM_STORE_LOCAL_MACHINE )。 驗證代理程式和 Updater 應用程式都會使用憑證。

驗證代理程式初始化

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

Diagram that depicts authentication agent initialization.

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

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

    此要求是透過埠 443 提出,而且是透過相互驗證的 HTTPS 通道。 要求會使用在驗證代理程式註冊期間發出的相同憑證。

  2. Microsoft Entra ID 會藉由為租使用者唯一且由租使用者識別碼識別的服務匯流排佇列提供存取金鑰來回應要求。

  3. 驗證代理程式會對佇列進行永續性輸出 HTTPS 連線(透過埠 443)。

驗證代理程式現在已準備好擷取及處理密碼驗證要求。

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

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

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

Diagram that depicts how pass-through authentication processes user sign-in requests.

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

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

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

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

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

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

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

  7. Microsoft Entra STS 會從 Azure SQL 資料庫擷取租使用者上註冊之所有驗證代理程式的公開金鑰,並使用金鑰加密密碼。

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

  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 會觸發更新。 更新不會由驗證代理程式本身控管。

Diagram that depicts how operational security works with pass-through authentication.

若要使用 Microsoft Entra 識別碼更新驗證代理程式的信任:

  1. 驗證代理程式會每隔幾個小時 Ping Microsoft Entra,以檢查是否是時候更新其憑證。 憑證會在到期前 30 天更新。

    這項檢查是透過相互驗證的 HTTPS 通道完成,並使用註冊期間核發的相同憑證。

  2. 如果服務指出該更新,驗證代理程式會產生新的金鑰組:公開金鑰和私密金鑰。

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

    • 從 Windows 憑證存放區中CERT_SYSTEM_STORE_LOCAL_MACHINE位置擷取的現有憑證。 此程式未涉及全域管理員,因此全域管理員不需要存取權杖。
    • 步驟 2 中產生的公開金鑰。
    • CSR。 此要求適用于新的數位身分識別憑證,且 Microsoft Entra ID 為其 CA。
  4. Microsoft Entra ID 會驗證憑證更新要求中的現有憑證。 然後,它會驗證要求是否來自已在租使用者上註冊的驗證代理程式。

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

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

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

  8. 新的憑證(在步驟 5 中發行)接著會儲存在 Windows 憑證存放區的伺服器上(具體來說,在 CERT_SYSTEM_STORE_CURRENT_USER 位置)。

    由於信任更新程式會以非互動方式進行(沒有全域管理員或混合式身分識別系統管理員的存在),因此驗證代理程式無法再存取CERT_SYSTEM_STORE_LOCAL_MACHINE位置中更新現有的憑證。

    注意

    此程式不會從CERT_SYSTEM_STORE_LOCAL_MACHINE位置移除憑證本身。

  9. 此時,新的憑證會用於驗證。 憑證的後續更新都會取代CERT_SYSTEM_STORE_LOCAL_MACHINE位置中的憑證。

驗證代理程式自動更新

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

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

Diagram that shows how an authentication agent is auto updated.

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

  1. Updater 應用程式每小時 ping Microsoft Entra,以檢查是否有新版本的驗證代理程式可用。

    這項檢查是透過相互驗證的 HTTPS 通道完成,方法是使用註冊期間發出的相同憑證。 驗證代理程式和 Updater 會共用儲存在伺服器上的憑證。

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

  3. Updater 會驗證 MSI 是否已由 Microsoft 簽署。

  4. Updater 會執行 MSI。 在此程式中,Updater 應用程式:

    注意

    Updater 會以 本機系統 許可權執行。

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

注意

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

下一步