將內部部署 AD FS 擴充至 Azure

Microsoft Entra ID
Microsoft Entra
Azure Load Balancer

此參考架構會實作安全的混合式網路,將內部部署網路延伸至 Azure,並使用 Active Directory 同盟服務 (AD FS) 來執行 Azure 中執行元件的同盟驗證和授權。

架構

Diagram showing an example of a secure hybrid network architecture with Active Directory Federation Services.

下載此架構的 Visio 檔案

注意

Visio 檔案包含 4 個圖表索引標籤。 選取 [AD FS ] 索引 標籤,以查看本文的相關架構圖表。

工作流程

  • AD DS 子網 。 AD DS 伺服器會包含在自己的子網中,且網路安全性群組 (NSG) 規則會作為防火牆。

  • AD DS 伺服器 。 在 Azure 中以 VM 身分執行的網域控制站。 這些伺服器提供網域內本機身分識別的驗證。

  • AD FS 子網 。 AD FS 伺服器位於自己的子網內,且 NSG 規則會作為防火牆。

  • AD FS 伺服器 。 AD FS 伺服器提供同盟授權和驗證。 在此架構中,他們會執行下列工作:

    • 接收安全性權杖,其中包含合作夥伴同盟伺服器代表合作夥伴使用者所進行的宣告。 AD FS 會先驗證權杖是否有效,再將宣告傳遞至在 Azure 中執行的 Web 應用程式,以授權要求。

      在 Azure 中執行的應用程式是 信賴憑證者 。 夥伴同盟伺服器必須發出 Web 應用程式所瞭解的宣告。 合作夥伴同盟伺服器稱為 帳戶夥伴 ,因為它們會代表合作夥伴組織中的已驗證帳戶提交存取要求。 AD FS 伺服器稱為 資源夥伴 ,因為它們會提供資源的存取權(Web 應用程式)。

    • 使用 AD DS 和 Active Directory 裝置註冊服務 ,從執行需要存取 Web 應用程式的網頁瀏覽器或裝置的外部使用者驗證和 授權連入要求。

    AD FS 伺服器會設定為透過 Azure 負載平衡器存取的伺服器陣列。 此實作可改善可用性和延展性。 AD FS 伺服器不會直接公開至網際網路。 所有網際網路流量都會透過 AD FS Web 應用程式 Proxy 伺服器和 DMZ 進行篩選(也稱為周邊網路)。

    如需 AD FS 運作方式的詳細資訊,請參閱 Active Directory 同盟服務概觀 。 此外,Azure 中的 AD FS 部署一文 包含實作的詳細逐步簡介。

  • AD FS Proxy 子網 。 AD FS Proxy 伺服器可以包含在自己的子網內,且 NSG 規則提供保護。 此子網中的伺服器會透過一組網路虛擬裝置向網際網路公開,以提供 Azure 虛擬網路與網際網路之間的防火牆。

  • AD FS Web 應用程式 Proxy (WAP) 伺服器 。 這些 VM 會作為 AD FS 伺服器,用於來自合作夥伴組織和外部裝置的連入要求。 WAP 伺服器可作為篩選準則,防止 AD FS 伺服器從網際網路直接存取。 如同 AD FS 伺服器,使用負載平衡在伺服器陣列中部署 WAP 伺服器可提供比部署獨立伺服器集合更高的可用性和延展性。

    注意

    如需安裝 WAP 伺服器的詳細資訊,請參閱 安裝和設定 Web 應用程式 Proxy 伺服器

  • 合作夥伴組織 。 執行 Web 應用程式的合作夥伴組織,要求存取在 Azure 中執行的 Web 應用程式。 合作夥伴組織的同盟伺服器會在本機驗證要求,並將包含宣告的安全性權杖提交至 Azure 中執行的 AD FS。 Azure 中的 AD FS 會驗證安全性權杖,如果有效,可以將宣告傳遞至在 Azure 中執行的 Web 應用程式,以授權它們。

    注意

    您也可以使用 Azure 閘道設定 VPN 通道,為受信任的合作夥伴提供 AD FS 的直接存取權。 從這些合作夥伴收到的要求不會通過 WAP 伺服器。

元件

此架構會擴充將 AD DS 擴充至 Azure 中所述 的實作。 其中包含下列元件。

案例詳細資料

AD FS 可以裝載于內部部署,但如果您的應用程式是混合式,其中某些部分是在 Azure 中實作,則複寫雲端中的 AD FS 可能會更有效率。

上圖顯示下列案例:

  • 來自合作夥伴組織的應用程式程式碼會存取裝載于 Azure VNet 內的 Web 應用程式。
  • 外部註冊的使用者,其認證儲存在 Active Directory 網域服務 (DS) 內,會存取裝載于 Azure VNet 內的 Web 應用程式。
  • 使用授權裝置連線到 VNet 的使用者會執行裝載于 Azure VNet 內的 Web 應用程式。

此參考架構著重于 被動同盟 ,其中同盟伺服器決定如何和何時驗證使用者。 使用者會在應用程式啟動時提供登入資訊。 此機制最常供網頁瀏覽器使用,且牽涉到將瀏覽器重新導向至使用者驗證的網站通訊協定。 AD FS 也支援 主動同盟 ,其中應用程式會負責提供認證而不需進一步的使用者互動,但該案例超出此架構的範圍。

如需其他考慮,請參閱 選擇整合內部部署的 Active Directory與 Azure 的解決方案。

潛在的使用案例

此架構的典型用法包括:

  • 工作負載部分在內部部署和 Azure 中執行的混合式應用程式。
  • 使用同盟授權向合作夥伴組織公開 Web 應用程式的解決方案。
  • 支援從組織防火牆外部執行的網頁瀏覽器存取的系統。
  • 可讓使用者從授權的外部裝置連線,例如遠端電腦、筆記本和其他行動裝置,來存取 Web 應用程式的系統。

建議

下列建議適用于大部分案例。 除非您有覆寫建議的特定需求,否則請遵循這些建議。

網路功能的建議

針對裝載 AD FS 和 WAP 伺服器且具有靜態私人 IP 位址的每個 VM 設定網路介面。

請勿提供 AD FS VM 公用 IP 位址。 如需詳細資訊,請參閱 安全性考慮 一節。

針對每個 AD FS 和 WAP VM 的網路介面,設定慣用和次要功能變數名稱服務 (DNS) 伺服器的 IP 位址,以參考 Active Directory DS VM。 Active Directory DS VM 應該正在執行 DNS。 必須執行此步驟,才能讓每個 VM 加入網域。

AD FS 安裝

部署同盟伺服器陣列 一文 提供安裝和設定 AD FS 的詳細指示。 在伺服器陣列中設定第一部 AD FS 伺服器之前,請先執行下列工作:

  1. 取得公開信任的憑證,以執行伺服器驗證。 主體名稱 必須包含用戶端用來存取同盟服務的名稱。 例如,這可以是為負載平衡器註冊的 DNS 名稱, 例如 adfs.contoso.com (基於安全性考慮,請避免使用萬用字元名稱,例如 * .contoso.com )。 在所有 AD FS 伺服器 VM 上使用相同的憑證。 您可以從受信任的憑證授權單位單位購買憑證,但如果您的組織使用 Active Directory 憑證服務,您可以建立自己的憑證。

    裝置 註冊服務會使用主體別名 來啟用外部裝置的存取。 這應該是表單 enterpriseregistration.contoso.com

    如需詳細資訊,請參閱 取得及設定 AD FS 的安全通訊端層 (SSL) 憑證。

  2. 在網域控制站上,產生金鑰散發服務的新根金鑰。 將有效時間設定為目前時間減去 10 小時(此設定可減少在跨網域散發和同步處理金鑰時可能發生的延遲)。 必須執行此步驟,才能支援建立用來執行 AD FS 服務的群組服務帳戶。 下列 PowerShell 命令示範如何執行這項操作的範例:

    Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
    
  3. 將每個 AD FS 伺服器 VM 新增至網域。

注意

若要安裝 AD FS,執行主要網域控制站 (PDC) 模擬器彈性單一主機作業 (FSMO) 角色的網域控制站必須執行並從 AD FS VM 存取。

AD FS 信任

在您的 AD FS 安裝與任何合作夥伴組織的同盟伺服器之間建立同盟信任。 設定所需的任何宣告篩選和對應。

  • 每個合作夥伴組織的 DevOps 人員都必須為可透過 AD FS 伺服器存取的 Web 應用程式新增信賴憑證者信任。
  • 組織中的 DevOps 人員必須設定宣告提供者信任,讓您的 AD FS 伺服器信任合作夥伴組織所提供的宣告。
  • 組織中的 DevOps 人員也必須設定 AD FS,將宣告傳遞至組織的 Web 應用程式。

如需詳細資訊,請參閱 建立同盟信任

發佈組織的 Web 應用程式,並透過 WAP 伺服器使用預先驗證讓外部合作夥伴使用它們。 如需詳細資訊,請參閱 使用 AD FS 預先驗證發佈應用程式

AD FS 支援權杖轉換和增強。 Microsoft Entra ID 不提供這項功能。 使用 AD FS 時,當您設定信任關係時,您可以:

  • 設定授權規則的宣告轉換。 例如,您可以將非 Microsoft 合作夥伴組織所使用的標記法,將群組安全性對應至 Active Directory DS 可以在您的組織中授權的內容。
  • 將宣告從某個格式轉換成另一種格式。 例如,如果您的應用程式僅支援 SAML 1.1 宣告,則可以從 SAML 2.0 對應至 SAML 1.1。

AD FS 監視

適用于 Active Directory 同盟服務 2012 R2 的 Microsoft System Center 管理元件可為同盟伺服器提供 AD FS 部署的主動式和回應式監視。 此管理元件會監視:

  • AD FS 服務在其事件記錄檔中記錄的事件。
  • AD FS 效能計數器收集的效能資料。
  • AD FS 系統和 Web 應用程式的整體健康情況(信賴憑證者),並提供重大問題和警告的警示。

另一個選項是 使用 Microsoft Entra 連線 Health 監視 AD FS。 Microsoft Entra 連線 Health 提供對內部部署身分識別基礎結構的強固監視。 它可讓您維護與 Microsoft 365 和 Microsoft Online Services 的可靠連線。 此可靠性是藉由提供重要身分識別元件的監視功能來達成。 此外,它也可讓您輕鬆地存取這些元件的重要資料點。

考量

這些考慮會實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

效能效益

效能效率是工作負載調整的能力,以符合使用者以有效率的方式滿足其需求。 如需詳細資訊,請參閱 效能效率要素概觀

下列考慮摘要說明在規劃 AD FS 部署 一文 中,提供調整 AD FS 伺服器陣列大小的起點:

  • 如果您有少於 1000 個使用者,請勿建立專用伺服器,而是在雲端的每個 Active Directory DS 伺服器上安裝 AD FS。 請確定您至少有兩部 Active Directory DS 伺服器可維護可用性。 建立單一 WAP 伺服器。
  • 如果您有 1000 到 15,000 位使用者,請建立兩部專用 AD FS 伺服器和兩部專用 WAP 伺服器。
  • 如果您有 15,000 到 60,000 個使用者,請建立 3 到 5 部專用 AD FS 伺服器,以及至少兩部專用 WAP 伺服器。

這些考慮假設您在 Azure 中使用雙四核心 VM(標準D4_v2或更好) 大小。

如果您使用Windows 內部資料庫來儲存 AD FS 組態資料,您限制在伺服器陣列中八部 AD FS 伺服器。 如果您預期未來需要更多,請使用 SQL Server。 如需詳細資訊,請參閱 The Role of the AD FS Configuration Database

可靠性

可靠性可確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性要素 概觀。

建立具有至少兩部伺服器的 AD FS 伺服器陣列,以提高服務的可用性。 針對伺服器陣列中的每個 AD FS VM 使用不同的儲存體帳戶。 這種方法有助於確保單一儲存體帳戶中的失敗不會讓整個伺服器陣列無法存取。

為 AD FS 和 WAP VM 建立個別的 Azure 可用性設定組。 確定每個集合中至少有兩部 VM。 每個可用性設定組必須至少有兩個更新網域和兩個容錯網域。

設定 AD FS VM 和 WAP VM 的負載平衡器,如下所示:

  • 使用 Azure 負載平衡器來提供 WAP VM 的外部存取權,以及內部負載平衡器,以將負載分散到伺服器陣列中的 AD FS 伺服器。

  • 僅將出現在埠 443 (HTTPS) 上的流量傳遞至 AD FS/WAP 伺服器。

  • 為負載平衡器提供靜態 IP 位址。

  • 使用 HTTP 對 /adfs/probe 建立健康情況探查。 如需詳細資訊,請參閱 硬體負載平衡器健康情況檢查和 Web 應用程式 Proxy /AD FS 2012 R2

    注意

    AD FS 伺服器會使用伺服器名稱指示 (SNI) 通訊協定,因此嘗試使用負載平衡器的 HTTPS 端點進行探查會失敗。

  • 將 DNS A 記錄新增至 AD FS 負載平衡器的網域。 指定負載平衡器的 IP 位址,並在網域中指定名稱(例如 adfs.contoso.com)。 這是用戶端和 WAP 伺服器用來存取 AD FS 伺服器陣列的名稱。

您可以使用 SQL Server 或 Windows 內部資料庫來保存 AD FS 組態資訊。 Windows 內部資料庫提供基本備援。 變更只會直接寫入 AD FS 叢集中的其中一個 AD FS 資料庫,而其他伺服器則使用提取複寫讓其資料庫保持最新狀態。 使用 SQL Server 可以使用容錯移轉叢集或鏡像來提供完整的資料庫備援和高可用性。

安全性

安全性可提供針對蓄意攻擊和濫用寶貴資料和系統的保證。 如需詳細資訊,請參閱 安全性要素 概觀。

AD FS 使用 HTTPS,因此請確定包含 Web 層 VM 的子網 NSG 規則允許 HTTPS 要求。 這些要求可能來自內部部署網路、包含 Web 層、商務層、資料層、私人 DMZ、公用 DMZ 的子網,以及包含 AD FS 伺服器的子網。

防止將 AD FS 伺服器直接暴露至網際網路。 AD FS 伺服器是已加入網域的電腦,具有授與安全性權杖的完整授權。 如果伺服器遭到入侵,惡意使用者可以對所有 Web 應用程式和受 AD FS 保護的所有同盟伺服器發出完整存取權杖。 如果您的系統必須處理外部使用者未從信任的合作夥伴網站連線的要求,請使用 WAP 伺服器來處理這些要求。 如需詳細資訊,請參閱 Where to Place a Federation Server Proxy

使用自己的防火牆,將 AD FS 伺服器和 WAP 伺服器放在不同的子網中。 您可以使用 NSG 規則來定義防火牆規則。 所有防火牆都應該允許埠 443 (HTTPS) 上的流量。

限制對 AD FS 和 WAP 伺服器的直接登入存取。 只有 DevOps 員工才能連線。 請勿將 WAP 伺服器加入網域。

請考慮使用一組網路虛擬裝置來記錄流量,以周遊虛擬網路邊緣的流量,以進行稽核。

成本最佳化

成本優化是考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化要素 概觀。

以下是此架構中使用的服務成本考慮。

AD 網域服務

請考慮將Active Directory 網域服務為多個工作負載所取用的共用服務,以降低成本。 如需詳細資訊,請參閱 Active Directory 網域服務定價

Active Directory Federation Services

如需 Microsoft Entra 識別碼所提供版本的相關資訊,請參閱 Microsoft Entra 定價 。 AD 同盟服務功能適用于所有版本。

卓越營運

DevOps 人員應該準備好執行下列工作:

  • 管理同盟伺服器,包括管理 AD FS 伺服器陣列、管理同盟伺服器上的信任原則,以及管理同盟服務所使用的憑證。
  • 管理 WAP 伺服器,包括管理 WAP 伺服器陣列和憑證。
  • 管理 Web 應用程式,包括設定信賴憑證者、驗證方法和宣告對應。
  • 備份 AD FS 元件。

如需其他 DevOps 考慮,請參閱 DevOps:將Active Directory 網域服務擴充至 Azure

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

若要查看非公用LinkedIn設定檔,請登入 LinkedIn。

後續步驟