使用 Azure AD 应用程序代理保护远程访问

使用 Azure AD 应用程序代理保护远程访问

2025年3月14日

本技术和教育文章旨在指导安全分析师、IT 管理员和系统工程师实施和配置 Azure AD 应用程序代理,以保护对本地 Web 应用程序的远程访问。在混合工作环境中,用户需要从任何地方访问内部资源,这种访问的安全性至关重要。 Azure AD 应用程序代理提供了一种安全、简化的解决方案,用于向远程用户发布本地 Web 应用程序,无需复杂的 VPN 或 DMZ [1]。

简介

传统上,远程访问内部应用程序需要设置虚拟专用网络 (VPN) 或将应用程序暴露给外围网络 (DMZ),这增加了复杂性和潜在的攻击媒介。随着远程和混合工作模式的日益普及,组织需要一种更安全、更高效的方式来提供对仍驻留在本地的遗留应用程序的访问[2]。

Azure AD 应用程序代理是 Azure Active Directory(现为 Microsoft Entra ID)的一项功能,允许用户从任何位置安全地访问本地 Web 应用程序。它充当反向代理,通过 Azure AD 路由内部应用程序流量,Azure AD 处理身份验证和授权。这意味着可以像 SaaS 应用程序一样访问本地应用程序,利用 Azure AD 安全功能,例如多重身份验证 (MFA) 和条件访问 [3]。

本实用指南将涵盖先决条件、安装和配置应用程序代理连接器、发布不同类型的应用程序(Web 应用程序、远程桌面 Web 客户端、SharePoint)、与条件访问策略的集成以及如何测试和验证远程访问。将提供分步说明、实际示例和简洁的解释,以便读者可以实现、测试和验证这些功能。此外,还将讨论安全提示、合规性检查和最佳实践,以确保安全、高效、自主、专业和可靠的远程访问。

为什么 Azure AD 应用程序代理对于远程访问至关重要?

  • 增强的安全性:在 Azure AD 中集中身份验证和授权,支持对本地应用程序使用 MFA、条件访问和身份保护等安全功能。
  • 简化访问:为本地应用程序提供单点登录 (SSO) 体验,使用户访问更轻松。
  • 降低复杂性:无需 VPN 或 DMZ 进行远程访问,简化网络架构并减少攻击面。
  • 经济高效:使用现有的 Azure AD 基础架构,无需额外的硬件或软件即可进行远程访问。
  • 灵活发布:支持发布各种 Web 应用程序,包括基于标头的应用程序、SharePoint、远程桌面 Web 客户端和其他自定义 Web 应用程序。

先决条件

要配置 Azure AD 应用程序代理,您将需要以下项目:

  1. 许可:Azure AD Premium P1 或 P2 订阅(或包含这些功能的许可证,例如 Microsoft 365 E3/E5)[4]。
  2. 管理访问权限:在 Azure 门户 (https://portal.azure.com) 中具有“全局管理员”或“应用程序管理员”角色的帐户。
  3. Windows Server for Connector:本地网络中的 Windows Server(2012 R2 或更高版本)服务器,可连接到要发布的应用程序和 Azure AD。此服务器必须具有出站 Internet 访问权限(Azure AD 的端口 80 和 443,Azure AD 应用程序代理服务的端口 443)[5]。
  4. 本地 Web 应用程序:您想要远程访问的内部 Web 应用程序。
  5. 自定义域(可选):如果您想对已发布的应用程序使用友好的 URL,则需要在 Azure AD 中验证自定义域。

分步:配置 Azure AD 应用程序代理

让我们配置应用程序代理并发布应用程序。

1. 应用程序代理连接器的安装和配置

连接器是一个轻量级代理,用于连接Azure AD 和您的本地应用程序。

  1. 打开浏览器并导航到 Azure 门户:“https://portal.azure.com”。
  2. 使用具有必要权限的帐户登录。
  3. 在顶部搜索字段中,输入“Azure Active Directory”并从结果中选择它。
  4. 在左侧导航窗格中,选择“管理”下的应用程序代理
  5. 单击“下载连接器服务”。

  6. 在您为连接器指定的本地 Windows 服务器上:

    • 下载并运行连接器安装程序 (AADApplicationProxyConnectorInstaller.exe)。
    • 按照安装向导的说明进行操作。在安装过程中,系统将提示您使用 Azure AD 全局管理员凭据登录。
    • 安装成功后,连接器服务将自动启动。
  7. 返回 Azure 门户的 应用程序代理 页面上,验证新安装的连接器是否显示在“连接器”列表中,状态为“活动”。

    • 说明:建议安装至少两个连接器以实现高可用性和负载平衡。连接器自动更新,确保您始终拥有最新版本。

2. 发布本地 Web 应用程序

让我们发布一个内部 Web 应用程序。对于此示例,假设我们有一个名为“MinhaAppInterna”的内部 Web 应用程序,可通过“http://minhaappinterna.local:8080”访问。

  1. 在 Azure Active Directory 的左侧导航窗格中,选择“管理”下的“企业应用程序”。
  2. 单击“+ 新应用程序”。
  3. 单击“集成库中未找到的任何其他应用程序(非库)”。
  4. 基础知识
    • 名称:给出一个有意义的名称(例如“MyInternal-ProxyApp”)。
    • 应用程序类型:选择“本地应用程序”。
  5. 单击“添加”。

  6. 创建应用程序后,您将被重定向到应用程序管理页面。在左侧导航窗格中,选择“管理”下的应用程序代理

  7. 基本设置

    • 内部 URL:输入应用程序的内部 URL(例如:http://minhaappinterna.local:8080)。确保连接器可以解析并访问此 URL。
    • 外部 URL:此 URL 将根据您的默认 Azure AD 域自动生成(例如“myappinternal-proxy.msappproxy.net”)。如果您有自定义域,则可以设置一个。
    • 预身份验证方法:选择“Azure Active Directory”(建议使用以获得最大安全性)。
    • 连接器组:选择默认连接器组或自定义组(如果您有多个连接器)。
  8. 单击“保存”。

  9. 在左侧导航窗格中,选择“管理”下的用户和组

  10. 单击“+添加用户/组”并分配允许访问此应用程序的 Azure AD 用户或组。

    • 说明:分配用户和组对于控制谁可以访问已发布的应用程序至关重要。 Azure AD 应用程序代理确保只有经过身份验证和授权的用户才能访问内部应用程序。

3. 为已发布的应用程序配置条件访问

条件访问允许您针对应用程序访问强制实施其他安全策略,例如 MFA。

  1. 在 Azure Active Directory 的左侧导航窗格中,选择“安全”>“条件访问”。
  2. 单击“+ 新策略”。
  3. 基础知识
    • 名称:给出一个有意义的名称(例如:MFA_para_MinhaAppInternal)。
  4. 职责
    • 身份用户或工作负载:选择将受策略影响的用户和组(例如:Grupo_Usuarios_MinhaAppInterna)。
    • 云应用程序或操作:选择“MyAppInternal-Proxy”。
  5. 访问控制
    • 授予:选择“授予访问权限”和“需要多重身份验证”。
  6. 启用策略:选择“已启用”。
  7. 单击“创建”。

    • 说明:此策略将确保任何尝试访问“MyInternal-ProxyApp”的用户都会被提示执行多重身份验证,即使本地应用程序本身不支持 MFA。

4. 发布其他类型的应用程序

应用程序代理可用于发布其他类型的资源,例如远程桌面 Web 客户端和 SharePoint。

4.1。发布远程桌面 Web 客户端

  1. 按照第 2 部分中的步骤创建新的企业应用程序。
  2. 在应用程序代理配置中:
    • 内部 URL:输入远程桌面 Web 客户端服务器的 URL(例如:https://rdweb.contoso.com/RDWeb)。
    • 外部 URL:将自动生成。
    • 预身份验证方法Azure Active Directory
    • URL 翻译标头类型后端 URL 标头
  3. 分配用户/组。

4.2。在本地发布 SharePoint

  1. 按照第 2 部分中的步骤创建新的企业应用程序。
  2. 在应用程序代理配置中:
    • 内部 URL:输入 SharePoint 网站的 URL(例如:https://sharepoint.contoso.local)。
    • 外部 URL:将自动生成。
    • 预身份验证方法Azure Active Directory
    • URL 翻译标头类型后端 URL 标头
  3. 分配用户/组。

验证和测试

测试远程访问以确保应用程序的安全访问至关重要。

1. 测试对已发布应用程序的访问

  1. 场景:从公司网络外部的计算机(例如您的家),打开浏览器并导航到“MinhaAppInternal-Proxy”的外部 URL(例如“https://minhaappinterna-proxy.msappproxy.net”)。
  2. 预期操作:您应该被重定向到 Azure AD 登录页面。输入 Azure AD 凭据并完成 MFA(如果已配置)后,您应该会被重定向到本地 MyApp。
  3. 验证
    • 确认应用程序正确加载并且您可以与其交互。
    • 检查 Azure AD 登录日志以确认访问已通过应用程序代理进行身份验证并且已应用 MFA。

2.检查Azure AD登录日志

  1. 在 Azure 门户中,导航到 Azure Active Directory > 监控 > 入站日志
  2. 按“应用程序”(“MyAppInternal-Proxy”) 过滤日志。
  3. 检查登录详细信息,包括“条件访问状态”(应显示“成功”并表明已应用 MFA)。

安全提示和最佳实践

  • 始终使用 Azure AD 预身份验证:Azure AD 预身份验证是最安全的方法,因为它可确保只有经过身份验证和授权的用户才能访问您的内部网络。避免“传递”,除非对于无法处理预身份验证的应用程序确实有必要。
  • 条件访问:使用条件访问对通过应用程序代理发布的所有应用程序实施额外的安全策略,例如 MFA、位置限制、设备合规性等。
  • 连接器组:将连接器组织成组以隔离应用程序或使连接器更靠近特定应用程序以获得更好的性能。
  • 高可用性:在单独的服务器上安装至少两个连接器,以确保高可用性和弹性。如果适用,请考虑安装在不同的区域或可用区。
  • 连接器维护:虽然连接器会自动更新,但请在 Azure 门户中监视其状态以确保它们始终处于活动状态且运行正常。
  • 连接器服务器安全:保护安装连接器的服务器。保持更新,应用最小权限原则,并监控可疑活动。
  • 性能优化:对于高流量或需要低延迟的应用程序,请考虑连接器相对于应用程序服务器和可用带宽的位置。
  • 监控:监控 Azure AD 登录日志和连接器日志以检测可疑活动或访问问题。

常见故障排除

  • 访问错误(404、500 等)
    • 检查内部 URL:确保应用程序代理中配置的内部 URL 正确,并且连接器可以直接从安装它的服务器访问它。
    • 检查连接器:确认连接器在 Azure 门户中处于“活动”状态。重新启动服务器上的连接器服务。
    • 检查连接器组:确保分配给应用程序的连接器组具有m 至少一个活动连接器。
    • 本地防火墙:检查连接器服务器或应用程序服务器上的防火墙是否阻止流量。
  • 应用程序无法正确加载(渲染问题)
    • 标头翻译:对于某些应用程序,您可能需要将应用程序代理设置中的“URL 翻译标头类型”调整为“后端 URL 标头”或“前端 URL 标头”。
    • 编码链接:具有内部 URL 硬编码链接的应用程序可能会遇到问题。如果可能,请考虑使用应用程序代理的“链接翻译”或重新配置应用程序。
  • 单点登录问题
    • SSO 配置:检查企业应用程序中的 SSO 设置。对于未联合的应用程序,您可能需要配置“基于密码的 SSO”或“标头 SSO”。
    • Kerberos 约束委派 (KCD):对于使用集成 Windows 身份验证 (IWA) 的应用程序,请验证是否在连接器的 Active Directory 中正确配置了 KCD。
  • 条件访问阻止合法用户
    • 仔细审查条件访问政策。验证是否正确包含或排除用户或组。
    • 使用条件访问中的“假设”工具来模拟访问并了解策略被执行或阻止的原因。
  • 离线连接器
    • 验证连接器服务器与 Azure AD(出站端口 80 和 443)以及应用程序代理服务(出站端口 443)的网络连接。
    • 检查连接器服务器上的 Windows 事件日志是否有与服务相关的错误。
    • 确保“Microsoft AAD 应用程序代理连接器”服务正在运行。

结论

Azure AD 应用程序代理是一款功能强大且安全的工具,可将本地 Web 应用程序的访问权限扩展到远程用户,符合零信任模型的原则。通过在 Azure AD 中集中身份验证和授权并消除对复杂远程访问基础设施的需求,组织可以简化其安全架构,同时加强威胁防护。仔细实施、与条件访问集成以及持续监控对于最大限度地提高安全效益并确保流畅的用户体验至关重要。通过本实用指南,安全专业人员和 IT 管理员将能够配置、验证和管理 Azure AD 应用程序代理,确保对关键应用程序的远程访问安全并加强组织的安全态势。


参考资料:

[1] 微软学习。 使用 Microsoft Entra 应用程序代理发布本地应用程序。网址:https://learn.microsoft.com/pt-br/entra/identity/app-proxy/overview-what-is-app-proxy [2] 微软学习。 添加本地应用程序以通过 Microsoft Entra 应用程序代理进行远程访问。位于:https://learn.microsoft.com/pt-br/entra/identity/app-proxy/application-proxy-add-on-premises-application [3] 微软学习。 使用 Microsoft Entra 应用程序代理发布远程桌面。位于:https://learn.microsoft.com/pt-br/entra/identity/app-proxy/application-proxy-integrate-with-remote-desktop-services [4] 微软学习。 微软 Entra ID 许可。位于:https://learn.microsoft.com/pt-br/entra/identity/licensing-azure-active-directory [5] 微软学习。 Microsoft Entra 应用程序代理连接器。位于:https://learn.microsoft.com/pt-br/entra/identity/app-proxy/application-proxy-connectors [6] 微软学习。 Microsoft 输入 ID 上的条件访问。网址:https://learn.microsoft.com/pt-br/entra/identity/conditional-access/overview [7] 微软学习。 对 Microsoft Entra 应用程序代理连接器进行故障排除。位于:https://learn.microsoft.com/pt-br/entra/identity/app-proxy/application-proxy-troubleshoot-connectors