将本地 Active Directory 联合身份验证服务扩展到 Azure
此参考体系结构实现一个安全混合网络,该网络将本地网络扩展到 Azure,并使用 Active Directory 联合身份验证服务(AD FS) 对 Azure 中运行的组件执行联合身份验证和授权。
Architecture
下载此体系结构的 Visio 文件。
Workflow
以下工作流与上图相对应:
Active Directory 域服务(AD DS)子网: AD DS 服务器包含在其自己的子网中,其中网络安全组 (NSG) 规则充当防火墙。
AD DS 服务器: 在 Azure 中作为虚拟机(VM)运行的域控制器。 这些服务器提供域中的本地标识的身份验证。
AD FS 子网: AD FS 服务器位于其自己的子网中,并将 NSG 规则用作防火墙。
AD FS 服务器: AD FS 服务器提供联合授权和身份验证。 在此体系结构中,它们执行以下任务:
接收安全令牌,其中包含由合作伙伴联合服务器代表合作伙伴用户发出的声明。 AD FS 验证令牌在将声明传递给 Azure 中运行的 Web 应用程序以授权请求之前是否有效。
The application that runs in Azure is known as the relying party. 合作伙伴联合服务器必须发出 Web 应用程序理解的声明。 The partner federation servers are known as account partners because they submit access requests on behalf of authenticated accounts in the partner organization. The AD FS servers are known as resource partners because they provide access to resources (the web application).
使用 AD DS 和 Active Directory 设备注册服务(DRS)对运行 Web 浏览器或设备的外部用户发出的传入请求进行身份验证和授权。
AD FS 服务器配置为通过 Azure 负载均衡器访问的场。 此实现可提高可用性和可伸缩性。 AD FS 服务器不会直接向 Internet 公开。 All internet traffic is filtered through AD FS web application proxy (WAP) servers and a demilitarized zone (DMZ), also known as a perimeter network.
有关详细信息,请参阅 AD FS 概述。
AD FS 代理子网: AD FS 代理服务器可以包含在其自己的子网中,并使用 NSG 规则进行保护。 此子网中的服务器通过一组网络虚拟设备向 Internet 公开,这些设备在 Azure 虚拟网络和 Internet 之间提供防火墙。
AD FS WAP 服务器: 这些 VM 充当来自合作伙伴组织和外部设备的传入请求的 AD FS 服务器。 WAP 服务器充当一个筛选器,可阻止 AD FS 服务器从 Internet 直接访问。 与 AD FS 服务器一样,在具有负载均衡的服务器场中部署 WAP 服务器比部署独立服务器集合更具有可用性和可伸缩性。 有关详细信息,请参阅 安装和配置 WAP 服务器。
Partner organization: A partner organization runs a web application that requests access to a web application running in Azure. 合作伙伴组织中的联合服务器在本地对请求进行身份验证,并将包含声明的安全令牌提交到 Azure 中运行的 AD FS。 Azure 中的 AD FS 验证安全令牌。 如果令牌有效,AD FS 可以将声明传递给在 Azure 中运行的 Web 应用程序以授权它们。
Note
还可以使用 Azure 网关配置 VPN 隧道,以便为受信任的合作伙伴提供对 AD FS 的直接访问。 从这些合作伙伴收到的请求不会通过 WAP 服务器。
Components
此体系结构扩展了 Azure 虚拟网络中部署 AD DS 中所述的实现。 它包含以下组件:
AD DS 子网是将 IP 地址范围映射到站点的对象。 此映射允许域控制器根据客户端的网络位置有效地定向身份验证和复制。
AD DS 服务器 是托管 Active Directory 域服务的域控制器。 它们跨企业网络提供集中式身份验证、策略强制和目录数据复制。
AD FS 子网 是托管 AD FS 服务器或 WAP 服务器的网络或虚拟基础结构中定义的 IP 地址范围。 此 IP 地址范围支持安全流量流和站点感知身份验证。
AD FS 服务器 是内部联合服务器,用于颁发安全令牌并使用基于声明的标识协议处理身份验证请求。
AD FS 代理子网 是托管 WAP 服务器的外围网络段,通常位于外围网络中。 它支持将外部身份验证流量安全中继到内部 AD FS 服务器。
AD FS WAP 服务器 是在外围网络中部署的反向代理服务器,这些服务器预身份验证外部用户请求,并安全地将其转发到 AD FS 进行联合访问。
Scenario details
AD FS 可以在本地托管,但如果应用程序是混合体,其部分功能在 Azure 中执行,则在云中复制 AD FS 的效率可能更高。
上一张图显示以下方案:
来自合作伙伴组织的应用程序代码访问托管在 Azure 虚拟网络中的 Web 应用程序。
使用 Active Directory 域服务(AD DS)中存储的凭据的外部注册用户访问 Azure 虚拟网络中托管的 Web 应用程序。
使用授权设备连接到虚拟网络的用户运行托管在 Azure 虚拟网络中的 Web 应用程序。
This reference architecture focuses on passive federation, in which the federation servers decide how and when to authenticate a user. 应用程序启动时,用户提供登录信息。 此机制最常由 Web 浏览器使用,涉及将浏览器重定向到对用户进行身份验证的站点的协议。 AD FS also supports active federation, where an application takes on responsibility for supplying credentials without further user interaction, but that scenario is outside the scope of this architecture.
有关其他注意事项,请参阅 将本地 Active Directory 域与 Microsoft Entra ID 集成。
可能的用例
此体系结构的典型用途包括:
在本地运行一部分工作负荷,在 Azure 中运行一部分工作负荷的混合应用程序。
使用联合授权向合作伙伴组织公开 Web 应用程序的解决方案。
支持从组织防火墙外部运行的 Web 浏览器进行访问的系统。
使用户可以通过从授权外部设备(如远程计算机、笔记本电脑和其他移动设备)进行连接来访问 Web 应用程序的系统。
Recommendations
您可以将以下建议应用于大多数场景。 除非有优先于这些建议的特定要求,否则请遵循这些建议。
Networking recommendations
为托管 AD FS 和 WAP 服务器且具有静态专用 IP 地址的每个 VM 配置网络接口。
请勿向 AD FS VM 提供公共 IP 地址。 For more information, see the Security considerations section.
为每个 AD FS 和 WAP VM 设置网络接口的首选和辅助域名服务(DNS)服务器的 IP 地址,以引用 AD DS VM。 AD DS VM 应运行 DNS。 使每个 VM 可以加入域需要此步骤。
AD FS 安装
部署 联合服务器场 一文提供了有关如何安装和配置 AD FS 的详细说明。 在场中配置第一台 AD FS 服务器之前,请执行以下任务:
获取用于执行服务器身份验证的公开受信任证书。 The subject name must contain the name that clients use to access the federation service. 此标识符可以是为负载均衡器注册的 DNS 名称,例如
adfs.contoso.com
。 避免使用通配符名称,例如*.contoso.com
出于安全原因。 在所有 AD FS 服务器 VM 上使用相同证书。 可以从受信任的证书颁发机构购买证书,但如果组织使用 Active Directory 证书服务,则可以创建自己的证书。DRS 使用 使用者可选名称 从外部设备启用访问。 此 DNS 名称应遵循格式
enterpriseregistration.contoso.com
。有关详细信息,请参阅 获取和配置 AD FS 的安全套接字层证书。
在域控制器上,为密钥分发服务(KDS)生成新的根密钥。 将有效时间设置为当前时间减去 10 小时。 此配置可减少跨域分配和同步密钥时可能发生的延迟。 此步骤是支持创建用于运行 AD FS 服务的组服务帐户所必需的。 以下 PowerShell 命令演示如何生成具有时间偏移量的新 KDS 根密钥:
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
将每个 AD FS 服务器 VM 添加到域。
Note
若要安装 AD FS,运行主域控制器模拟器灵活单主作角色的域控制器必须运行,并且必须可从 AD FS VM 访问。
AD FS 信任
在 AD FS 安装和任何合作伙伴组织的联合服务器之间建立联合信任。 配置任何必需的声明筛选和映射。
每个合作伙伴组织的 DevOps 员工必须添加信赖方信任,以便可通过 AD FS 服务器访问 Web 应用程序。
组织中的 DevOps 员工必须配置声明提供方信任,以便使 AD FS 服务器可以信任合作伙伴组织提供的声明。
组织中的 DevOps 员工还必须配置 AD FS 以将声明传递给组织的 Web 应用程序。
有关详细信息,请参阅 建立联合信任。
通过 WAP 服务器使用预身份验证发布组织的 Web 应用程序并将它们提供给外部合作伙伴。 有关详细信息,请参阅 使用 AD FS 预身份验证发布应用程序。
AD FS 支持令牌转换和扩大。 Microsoft Entra ID 不提供此功能。 通过使用 AD FS,设置信任关系时,可以执行以下任务:
为授权规则配置声明转换。 例如,可以将组安全性从非Microsoft合作伙伴组织使用的表示形式映射到 AD DS 可以在组织中授权的内容。
将声明从一种格式转换为另一种格式。 例如,如果应用程序仅支持 SAML 1.1 声明,则可以从 SAML 2.0 映射到 SAML 1.1。
AD FS 监视
适用于 AD FS 2012 R2 的 Microsoft System Center Management Pack 为联合服务器的 AD FS 部署提供主动和被动监视。 此管理包监视 AD FS 部署的以下方面:
AD FS 服务在其事件日志中记录的事件
AD FS 性能计数器收集的性能数据
AD FS 系统和 Web 应用程序(信赖方)以及关键问题和警告的总体运行状况
另一个选项是 使用 Microsoft Entra Connect Health 监视 AD FS。 Connect Health provides robust monitoring of your on-premises identity infrastructure. 它使你能够与 Microsoft 365 和 Microsoft 联机服务保持可靠的连接。 它通过为关键标识组件提供监视功能来实现此可靠性。 它还使有关这些组件的关键数据点易于访问。
Considerations
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 For more information, see Well-Architected Framework.
Reliability
可靠性有助于确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。
创建至少包含两台服务器的 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
.. 有关详细信息,请参阅 为 Azure 负载均衡器创建自定义 HTTP/HTTPS 运行状况探测。Note
AD FS 服务器使用服务器名称指示协议,这会导致负载均衡器中的 HTTPS 终结点探测失败。
Add a DNS A record to the domain for the AD FS load balancer. 指定负载均衡器的 IP 地址,并在域中为其指定名称,例如
adfs.contoso.com
。 此 DNS 记录是客户端和 WAP 服务器用于访问 AD FS 服务器场的名称。
可以使用 SQL Server 或 Windows 内部数据库保存 AD FS 配置信息。 Windows 内部数据库提供基本冗余。 更改仅仅直接写入 AD FS 群集中的一个 AD FS 数据库,而其他服务器使用请求复制使其数据库保持最新状态。 使用 SQL Server 可以通过故障转移群集或镜像来提供完整的数据库冗余和高可用性。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅 安全的设计评审清单。
AD FS 使用 HTTPS,因此请确保包含 Web 层 VM 的子网的 NSG 规则允许 HTTPS 请求。 这些请求可以源自本地网络、包含 Web 层、业务层、数据层、专用外围网络、公共外围网络以及包含 AD FS 服务器的子网。
防止将 AD FS 服务器直接公开到 Internet。 AD FS 服务器是具有完整授权,可授予安全令牌的已加入域的计算机。 如果服务器受到损害,则恶意用户可以向所有 Web 应用程序并向 AD FS 保护的所有联合服务器颁发完全访问令牌。 如果系统必须处理来宾未从受信任的合作伙伴站点进行连接的请求,请使用 WAP 服务器处理这些请求。 有关详细信息,请参阅 “在何处放置联合服务器代理”。
将 AD FS 服务器和 WAP 服务器放置在具有自身防火墙的单独子网中。 可以使用 NSG 规则定义防火墙规则。 所有防火墙都应允许端口 443 (HTTPS) 上的流量。
限制对 AD FS 和 WAP 服务器的直接登录访问。 只有 DevOps 员工才应能够连接。 请勿将 WAP 服务器加入域。
请考虑使用一组网络虚拟设备来记录有关在虚拟网络边缘进行审核的流量的详细信息。
Cost Optimization
成本优化侧重于减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
Microsoft Entra 域名服务
请考虑将 Entra 域服务Microsoft为多个工作负荷用于降低成本的共享服务。 有关详细信息,请参阅 域服务定价。
AD FS
有关Microsoft Entra ID 提供的版本的信息,请参阅 Microsoft Entra 定价。 AD FS 功能在所有版本中都可用。
Operational Excellence
卓越运营涵盖部署应用程序并使其在生产环境中运行的运营流程。 有关详细信息,请参阅 卓越运营的设计评审清单。
DevOps 员工应准备好执行以下任务:
管理联合服务器,包括管理 AD FS 场、在联合服务器上管理信任策略,以及管理联合身份验证服务使用的证书
管理 WAP 服务器,包括管理 WAP 场和证书
管理 Web 应用程序,包括配置信赖方、身份验证方法和声明映射
备份 AD FS 组件
有关其他 DevOps 注意事项,请参阅 在 Azure 虚拟网络中部署 AD DS。
Performance Efficiency
性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅 性能效率的设计评审清单。
从文章规划 AD FS 部署中汇总的以下注意事项为调整 AD FS 场规模提供了起点:
如果用户少于 1,000 个,请不要创建专用服务器。 而是在云中的每个 AD DS 服务器上安装 AD FS。 确保至少有两台 AD DS 服务器来保持可用性。 创建单台 WAP 服务器。
如果你有 1,000 到 15,000 个用户,请创建两个专用 AD FS 服务器和两个专用 WAP 服务器。
如果用户数介于 15000 与 60000 之间,请创建三到五台专用 AD FS 服务器和至少两台专用 WAP 服务器。
这些注意事项假设在 Azure 中使用双四核 VM (标准 D4_v2 或更好) 大小。
如果使用 Windows 内部数据库来存储 AD FS 配置数据,则场中限制为 8 个 AD FS 服务器。 如果认为将来可能需要更多内容,请使用 SQL Server。 有关详细信息,请参阅 AD FS 配置数据库的角色。
Contributors
Microsoft维护本文。 以下参与者撰写了本文。
Principal author:
- Sarah Parkes | Senior Cloud Solution Architect
若要查看非公开的LinkedIn个人资料,请登录LinkedIn。