本文介绍如何从本地网络或 Azure 虚拟网络中设置与 App 服务 Web 应用或函数应用的改进安全性专用连接。 本文还演示了如何通过 Azure 专用链接在应用和其他 Azure PaaS 服务之间设置改进的安全连接,而不使用公共 Internet。
在本文中,Azure App 服务是指与其他App 服务客户(如基本层、标准层和高级层)共享基础结构的定价层。 App 服务环境直接部署到具有专用支持基础结构的虚拟网络中,并使用隔离定价层,本文并不重点。
体系结构
下载此体系结构的 Visio 文件。
数据流
通过使用 Azure 应用程序服务区域虚拟网络集成, Web 应用通过 Azure 虚拟网络中的委派子网 VNet 集成子网连接到 Azure 服务。
- VNet 集成子网和专用终结点子网网络为不同订阅中的单独虚拟网络。 这两个网络都与中心虚拟网络对等互连,作为中心辐射型网络配置的一部分。 对于区域虚拟网络集成,对等互连的虚拟网络必须位于同一 Azure 区域中。
Azure 专用链接服务为专用终结点虚拟网络中的 PaaS 服务、Web 应用、Azure SQL 数据库、Azure 存储帐户和 Azure 密钥保管库设置专用终结点。
在此示例中,此虚拟网络专用于专用终结点的部署。 不会在此虚拟网络中部署任何其他资源,例如虚拟机 (VM)。 选择子网大小时,考虑到了未来添加专用终结点的需求。
本地网络和 Azure 虚拟网络可以通过站点到站点 (S2S) VPN 或 Azure ExpressRoute 专用对等互连进行连接。 本地网络中的用户仅通过专用网络访问应用并具有更高的安全性。
在此示例中,本地网络和 Azure 虚拟网络通过 ExpressRoute 专用对等互连进行连接。
对于已有域名系统 (DNS) 解决方案的本地网络,本地 DNS 解决方案配置为通过条件转发器将 DNS 流量转发到 Azure 专用 DNS 记录(例如 azurewebsites.net),该条件转发器将请求转发到部署在 Azure 中的 DNS 专用解析程序服务的入站终结点。 DNS 专用解析程序查询 Azure DNS,并接收有关 Azure 专用 DNS 虚拟网络链接的信息。 然后由链接到虚拟网络的专用 DNS 区域完成解析。
专用 DNS 区域也部署在与专用终结点虚拟网络相同的订阅中。
在此示例中,本地网络中 IP 地址为 192.168.0.254 的 DNS 转发器计算机将对主机名 azurewebsites.net 的所有 DNS 解析请求转发到 Azure 中地址为 10.0.0.132 的 DNS 专用解析器服务的入站终结点。 然后,Azure 提供的 DNS 服务(IP 地址为 168.63.129.16)通过链接到虚拟网络的 Azure 专用 DNS 区域解析请求。
需要出站终结点才能使用 DNS 转发规则集启用从 Azure 到本地、其他云提供商或外部 DNS 服务器的条件转发名称解析。
此方案不需要配置 DNS 转发规则集。
应该存在以下应用程序服务配置:
密钥 Value WEBSITE_DNS_SERVER 168.63.129.16 虚拟网络链接到所有 Azure 专用 DNS 区域。
- 具有专用终结点的虚拟网络会自动链接到专用 DNS 区域。 需要单独链接其他虚拟网络。
Web 应用通过 Azure 防火墙与专用终结点虚拟网络中的 PaaS 服务的专用端点进行通信。
在 Azure 防火墙上,应用程序规则配置为允许 VNet 集成子网与 PaaS 资源的专用终结点之间进行通信。 目标完全限定域名 (FQDN) 是:
*.azurewebsites.net
*.database.windows.net
*.core.windows.net
*.vaultcore.azure.net
Azure SQL、Azure 存储帐户和 Azure 密钥保管库的防火墙和虚拟网络配置仅允许来自 VNet 集成子网的流量。 该配置不允许与任何其他虚拟网络或公共 Internet 进行通信。
组件
- Azure 应用程序服务托管 Web 应用程序和函数应用,可以实现自动缩放和高可用性,你无需管理基础结构。
- Azure SQL 数据库是一种通用的关系数据库托管服务,支持关系数据、空间数据、JSON 和 XML。
- Azure 存储帐户为 Azure 存储数据提供一个唯一的命名空间,可通过 HTTP 或 HTTPS 从世界上的任何位置访问该数据。 它包含所有 Azure 存储数据对象:Blob、文件共享、队列、表和磁盘。
- Azure 密钥保管库是一种用于安全存储和访问 API 密钥、密码、证书、加密密钥或云应用和服务使用的任何其他机密的服务。
- Azure 虚拟网络是 Azure 中专用网络的基本构建块。 借助虚拟网络,Azure 资源(如 VM)能够以安全方式相互通信,也可以与 Internet 和本地网络通信。
- Azure 专用链接在虚拟网络中提供专用终结点,用于连接到 Azure PaaS 服务(如 Azure 存储和 SQL 数据库)或客户/合作伙伴服务。
- Azure ExpressRoute 专用对等互连通过专用连接将本地网络扩展到 Microsoft 云。 还可以在本地和 Azure 网络之间建立站点到站点 VPN,而不是使用 Azure ExpressRoute。
- Azure 防火墙是托管的基于云的网络安全服务,有助于保护 Azure 虚拟网络资源。
- 专用 DNS 区域为管理和解析虚拟网络中的域名提供可靠且安全的 DNS 服务。
- DNS 专用解析程序无需部署基于 VM 的 DNS 服务器即可从本地环境查询 Azure DNS 专用区域,反之亦然。
备选方法
对于专用连接,另一种方法是使用应用程序服务环境在隔离环境中托管 Web 应用程序。 App 服务环境可避免App 服务客户之间共享托管基础结构。 对于数据库,可以在虚拟网络中本机部署Azure SQL 托管实例,因此不需要虚拟网络集成或专用终结点。 这些套餐通常成本更高,因为它们提供单租户隔离部署和其他功能。
如果具有应用程序服务环境,但未使用 SQL 托管实例,仍可以使用专用终结点与 Azure SQL 数据库建立专用连接。 如果已有SQL 托管实例但正在使用App 服务,仍可使用区域 VNet 集成连接到SQL 托管实例专用地址。
对于其他一些 Azure 服务,例如密钥保管库或存储,除了使用专用终结点来实现来自 Web 应用的高度安全和专用连接之外,没有其他替代方案。
可能的用例
- 从本地网络或 Azure 虚拟网络访问App 服务 Web 应用或函数应用,通过增强其专用终结点的安全性。
- 从 Web 应用或函数应用连接到 Azure 平台即服务 (PaaS) 产品/服务:
- 另一个 Web 应用
- SQL 数据库
- Azure 存储
- Key Vault
- 支持 Azure 专用终结点进行入站连接的任何其他服务
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
对 Web 应用使用专用终结点的目的如下:
- 通过配置专用终结点来帮助保护 Web 应用,避免公开。
- 通过使用 VPN 或 ExpressRoute 专用对等互连,从连接到虚拟网络的本地网络以更高的安全性连接到 Web 应用。 对于到 Web 应用的入站连接,仅允许从本地网络或从 Azure 虚拟网络内部进行。
- 避免从虚拟网络泄露任何数据。
可以通过在应用前端使用 Azure 应用程序网关或 Azure Front Door(可选择使用 Azure Web 应用程序防火墙)等服务来提高与 Web 应用的入站连接的安全性。 当为 Web 应用启用专用终结点时,系统不会评估对 Web 应用的访问限制配置。
此方案还提高了从应用程序服务 Web 应用到下游依赖项(如数据库、存储或密钥保管库)的出站连接的安全性。
可以将应用程序路由配置为将所有流量或仅将专用流量(也称为 RFC1918 流量)路由到虚拟网络。 通过“全部路由”设置来配置此行为。 如果禁用“全部路由”,则 Web 应用仅将专用流量路由到你的虚拟网络。 若要阻止到公共地址的流量,请启用到虚拟网络的“全部路由”设置。 还可以使用网络安全组来阻止到你的虚拟网络或 Internet 中的资源的出站流量。 如果未启用“全部路由”,则 NSG 仅应用于 RFC1918 流量。
在此示例中,Web 应用不需要与不在虚拟网络中的任何服务进行通信,因此启用了“全部路由”。
在这种情况下,一个重要的安全考虑是为 PaaS 资源配置防火墙。
SQL 数据库防火墙选项
在不使用专用连接的情况下,可以添加仅允许来自指定 IP 地址范围的入站流量的防火墙规则。 另一种方法是允许 Azure 服务访问服务器。 此方法会锁定防火墙,只允许来自 Azure 内部的流量。 但是,此流量包括所有 Azure 区域和其他客户。
你还可以添加限制性更强的防火墙规则,以便仅允许应用的出站 IP 地址访问数据库。 但这些 IP 地址与多个App 服务共享,并允许来自同一部署戳上的其他客户的流量,这些流量使用相同的出站 IP 地址。
通过虚拟网络使用专用连接可提供以下防火墙选项,以帮助防止其他人访问数据库:
- 创建一个虚拟网络规则,该规则仅允许来自 VNet 集成委派的区域子网的流量,在此示例中为 VNet 集成子网。 委派子网必须具有为 Microsoft.Sql 配置的服务终结点,以便数据库可以识别来自该子网的流量。
- 将防火墙配置为拒绝公用网络访问。 这样做会关闭所有其他防火墙规则,并使数据库只能通过其专用终结点访问。
拒绝公用网络访问的选项是最安全的配置。 但是,如果使用此选项,则只能通过托管专用终结点的虚拟网络来访问数据库。 若要连接到数据库,Web 应用以外的任何内容都必须具有与虚拟网络的直接连接。
例如,本地计算机上来自 SQL Server Management Studio (SSMS) 的部署或紧急手动连接无法访问数据库,除非通过 VPN 或 ExpressRoute 连接到虚拟网络。 还可以远程连接到虚拟网络中的 VM,并从那里使用 SSMS。 对于特殊情况,可以暂时允许公用网络访问,并使用其他配置选项降低风险。
存储帐户和 Key Vault 防火墙选项
存储帐户和密钥保管库具有可从 Internet 访问的公用终结点。 还可以为存储帐户和密钥保管库创建专用终结点。 这样做会为这些服务分配一个来自你的虚拟网络的专用 IP 地址,并有助于保护你的虚拟网络与通过专用链接的相应服务之间的所有流量。
创建专用终结点时,VNet 集成子网可以通过专用链接以专用方式访问服务并提高安全性。 但仍可从其他 Azure 虚拟网络来访问存储帐户和密钥保管库。 若要阻止来自任何其他虚拟网络的访问,请为此委托子网创建服务终结点。
可用性
所有公共区域均提供对应用程序服务、Azure SQL 数据库、Azure 存储和 Azure 密钥保管库的专用链接支持。 若要检查其他区域中的可用性,请参阅Azure 专用链接可用性。
专用链接在体系结构中引入了其他组件和可用性注意事项。 Azure 专用链接服务具有高可用性 SLA。 在计算整个解决方案的复合 SLA 时,需要考虑此 SLO。
伸缩性
有关在中心辐射型网络体系结构中将用于 PaaS 服务的 Azure 专用链接与 Azure 专用 DNS 区域集成的信息,请参阅大规模专用链接和 DNS 集成。
全球对等互连
任何 Azure 区域中可通过虚拟网络连接的任何服务都可以访问 PaaS 服务的专用终结点,例如通过中心辐射型拓扑中的虚拟网络对等互连。 但是,对于应用程序服务区域 VNet 集成,对等互连的虚拟网络必须位于同一 Azure 区域中。
缺少全局对等互连支持意味着无法使用此解决方案进行从应用程序服务到另一个 Azure 区域中的数据库或其他专用终结点的跨区域连接。 例如,此解决方案不适用于支持部分故障转移的多区域部署,其中 Web 应用在一个区域中保持活动状态,但必须连接到另一个区域中的故障转移数据库,反之亦然。 但在这种情况下存在其他解决方案。
如果需要将 Web 应用连接到另一个区域的虚拟网络,则可以设置网关所需的 VNet 集成。 限制是:网关所需的 VNet 集成不能与通过 Azure ExpressRoute 连接的虚拟网络一起使用。
日志记录和监视
Azure 专用链接与 Azure Monitor 集成,后者可用于查看数据是否正在流动。
还可以使用 Azure 网络观察程序中的连接故障排除服务来跟踪从虚拟网络中的 VM 到专用终结点资源的 FQDN 的连接。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
在基本、标准、高级 v2、高级 v3、独立 v2 应用程序服务和 Azure Functions 高级计划中支持的定价层中,应用程序服务区域 VNet 集成没有额外费用。
专用终结点适用于托管在基本、标准、高级 v2、高级 v3 和独立 v2 App 服务计划上的 Windows Web 应用和 Linux Web 应用(无论是否容器化),也适用于部署到高级计划的函数应用。
为 PaaS 服务启用专用终结点的 Azure 专用链接服务会产生相关成本,这种成本是基于小时费用加额外带宽费用。 有关详细信息,请参阅专用链接定价页。 从客户端虚拟网络到中心虚拟网络中的 Azure 防火墙的连接会产生费用。 从中心虚拟网络中的 Azure 防火墙到对等互连虚拟网络中的专用终结点的连接是免费的。
Azure 专用 DNS 区域成本基于 Azure 中托管的 DNS 区域数量和接收到的 DNS 查询的数量。
若要了解运行此方案的成本,请参阅 Azure 定价计算器估算。 本文中描述的所有服务都为小型应用程序预先配置了合理的默认值。 若要了解自己的用例的定价变化情况,请按预期用法更改相应的变量。
作者
本文由 Microsoft 维护, 最初由以下参与者撰写。
主要作者:
- Ankit Singhal | 云解决方案架构师
若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 请参阅有关如何使用专用终结点将 Azure Functions 与 Azure 虚拟网络集成的分步骤指南。
- 请参阅配置 Azure 防火墙应用程序规则以检查发往各种网络拓扑中专用终结点的流量的步骤。
- 有关应用程序服务的入站和出站方案以及要在哪些情况下使用哪些功能的详细信息,请参阅应用程序服务网络功能概述。
- 有关针对 Azure Web 应用使用专用终结点的详细信息,请参阅针对 Azure Web 应用使用专用终结点。
- 有关将 App 服务 Web 应用与 Azure 虚拟网络集成的详细信息,请参阅将应用与 Azure 虚拟网络集成。
- 某些 PaaS 服务的 FQDN 可能会自动解析为公共 IP 地址。 有关覆盖 DNS 配置以连接到专用终结点的信息,请参阅 Azure 专用终结点 DNS 配置。