category
您可以通过多种方式在Azure App Service中部署应用程序。默认情况下,托管在App Service中的应用程序可以直接通过互联网访问,并且只能访问互联网托管的端点。但对于许多应用程序,您需要控制入站和出站网络流量。App Service中有几个功能可以帮助您满足这些需求。挑战在于知道使用哪个功能来解决给定的问题。本文将根据一些示例用例帮助您确定使用哪个功能。
Azure应用服务主要有两种部署类型:
- 多租户公共服务以免费、共享、基本、标准、高级、高级V2和高级V3定价SKU托管应用服务计划。
- 单租户应用服务环境(ASE)直接在Azure虚拟网络中托管独立SKU应用服务计划。
您使用的功能将取决于您是在多租户服务中还是在ASE中。
注:
网络功能不适用于部署在Azure Arc中的应用程序。
多租户应用服务网络功能
Azure应用服务是一个分布式系统。处理传入HTTP或HTTPS请求的角色称为前端。承载客户工作负载的角色称为工作人员(workers)。App Service部署中的所有角色都存在于多租户网络中。由于同一App Service规模单元中有许多不同的客户,因此您无法将App Service网络直接连接到您的网络。
您需要的不是连接网络,而是处理应用程序通信各个方面的功能。当您从应用程序拨打电话时,处理应用程序请求的功能不能用于解决问题。同样,解决应用程序呼叫问题的功能不能用于解决应用程序的问题。
Inbound features | Outbound features |
---|---|
App-assigned address | Hybrid Connections |
Access restrictions | Gateway-required virtual network integration |
Service endpoints | Virtual network integration |
Private endpoints |
除了注明的例外情况外,您还可以同时使用所有这些功能。你可以混合使用这些功能来解决你的问题。
用例和功能
对于任何给定的用例,可能有几种方法可以解决这个问题。选择最佳功能有时会超出用例本身。以下入站用例建议如何使用App Service网络功能来解决控制流向应用程序的流量的问题:
Inbound use case | Feature |
---|---|
Support IP-based SSL needs for your app | App-assigned address |
Support unshared dedicated inbound address for your app | App-assigned address |
Restrict access to your app from a set of well-defined addresses | Access restrictions |
Restrict access to your app from resources in a virtual network | Service endpoints Internal Load Balancer (ILB) ASE Private endpoints |
Expose your app on a private IP in your virtual network | ILB ASE Private endpoints Private IP for inbound traffic on an Application Gateway instance with service endpoints |
Protect your app with a web application firewall (WAF) | Application Gateway and ILB ASE Application Gateway with private endpoints Application Gateway with service endpoints Azure Front Door with access restrictions |
Load balance traffic to your apps in different regions | Azure Front Door with access restrictions |
Load balance traffic in the same region | Application Gateway with service endpoints |
以下出站用例建议如何使用App Service网络功能来解决应用程序的出站访问需求:
Outbound use case | Feature |
---|---|
Access resources in an Azure virtual network in the same region | Virtual network integration ASE |
Access resources in an Azure virtual network in a different region | virtual network integration and virtual network peering Gateway-required virtual network integration ASE and virtual network peering |
Access resources secured with service endpoints | virtual network integration ASE |
Access resources in a private network that's not connected to Azure | Hybrid Connections |
Access resources across Azure ExpressRoute circuits | virtual network integration ASE |
Secure outbound traffic from your web app | virtual network integration and network security groups ASE |
Route outbound traffic from your web app | virtual network integration and route tables ASE |
默认网络行为
Azure应用服务规模单元在每次部署中支持许多客户。免费和共享SKU计划在多租户工人上托管客户工作负载。基本和更高级别的计划托管仅专用于一个应用服务计划的客户工作负载。如果你有一个标准应用服务计划,该计划中的所有应用程序都将在同一个worker上运行。如果将worker向外扩展,则该应用服务计划中的所有应用程序都将在应用服务计划的每个实例的新worker上复制。
出站地址
工作虚拟机在很大程度上是由应用服务计划分解的。免费、共享、基本、标准和高级计划都使用相同的工作VM类型。PremiumV2计划使用另一种VM类型。PremiumV3使用另一种VM类型。当您更改VM系列时,您将获得一组不同的出站地址。如果您从Standard扩展到PremiumV2,您的出站地址将发生变化。如果您从PremiumV2扩展到PremiumV3,您的出站地址将发生变化。在一些较旧的扩展单元中,当您从标准扩展到PremiumV2时,入站和出站地址都会发生变化。
有许多地址用于出站呼叫。应用程序用于进行出站呼叫的出站地址列在应用程序的属性中。这些地址由在App Service部署中同一工作VM系列上运行的所有应用程序共享。如果你想在一个比例单位中查看你的应用程序可能使用的所有地址,有一个名为possibleOutboundAddresses的属性可以列出它们。
显示应用程序属性的屏幕截图。
App Service有许多端点用于管理服务。这些地址在单独的文档中发布,也在AppServiceManagement IP服务标签中。AppServiceManagement标签仅在需要允许此类流量的应用服务环境中使用。应用服务入站地址在应用服务IP服务标签中跟踪。没有包含App service使用的出站地址的IP服务标签。
显示App Service入站和出站流量的图表。
应用程序分配地址
应用程序分配地址功能是基于IP的SSL功能的一个分支。您可以通过在应用程序中设置SSL来访问它。您可以将此功能用于基于IP的SSL调用。您还可以使用它为您的应用程序提供一个只有它的地址。
说明应用程序分配地址的图表。
当您使用应用程序分配的地址时,您的流量仍然通过相同的前端角色,这些角色处理进入应用程序服务规模单元的所有传入流量。但是分配给您的应用程序的地址仅由您的应用使用。此功能的用例:
- 支持应用程序基于IP的SSL需求。
- 为您的应用程序设置一个不共享的专用地址。
要了解如何在应用上设置地址,请参阅在Azure应用服务中添加TLS/SSL证书。
访问限制
访问限制允许您过滤入站请求。过滤操作发生在运行应用程序的工作角色上游的前端角色上。由于前端角色位于工作人员的上游,因此您可以将访问限制视为应用程序的网络级保护。有关访问限制的更多信息,请参阅访问限制概述。
此功能允许您构建按优先级顺序评估的允许和拒绝规则列表。它类似于Azure网络中的网络安全组(NSG)功能。您可以在ASE或多租户服务中使用此功能。当您将其与ILB ASE一起使用时,您可以限制来自私有地址块的访问。要了解如何启用此功能,请参阅配置访问限制。
- 注:
- 每个应用程序最多可以配置512个访问限制规则。
说明访问限制的图表。
专用端点
私有端点是一个网络接口,通过Azure私有链接将您私密安全地连接到Web应用程序。专用端点使用虚拟网络中的专用IP地址,有效地将web应用程序带入虚拟网络。此功能仅适用于web应用程序的入站流。有关更多信息,请参阅为Azure Web App使用私有终结点。
此功能的一些用例:
- 限制从虚拟网络中的资源访问您的应用程序。
- 在虚拟网络中的私有IP上公开您的应用程序。
- 使用WAF保护您的应用程序。
私有端点可以防止数据泄露,因为您只能通过私有端点访问配置它的应用程序。
混合动力连接(Hybrid Connections)
应用服务混合连接使您的应用程序能够对指定的TCP端点进行出站调用。端点可以位于本地、虚拟网络中,也可以位于允许通过端口443向Azure出站流量的任何地方。要使用该功能,您需要在Windows Server 2012或更高版本的主机上安装一个名为混合连接管理器的中继代理。混合连接管理器需要能够在端口443访问Azure中继。您可以从门户中的应用服务混合连接UI下载混合连接管理器。
显示混合连接网络流的图。
应用服务混合连接是基于Azure中继混合连接功能构建的。App Service使用一种特殊形式的功能,该功能仅支持从您的应用程序向TCP主机和端口进行出站调用。此主机和端口只需要在安装了混合连接管理器的主机上解析。
当应用程序在应用程序服务中对混合连接中定义的主机和端口进行DNS查找时,流量会自动重定向通过混合连接并离开混合连接管理器。要了解更多信息,请参阅应用服务混合连接。
此功能通常用于:
- 访问未通过VPN或ExpressRoute连接到Azure的专用网络中的资源。
- 支持将本地应用程序迁移到App Service,而无需移动支持数据库。
- 为每个混合连接提供对单个主机和端口的访问,并提高安全性。大多数网络功能都是开放访问网络。使用混合连接,您只能访问单个主机和端口。
- 涵盖其他出站连接方法未涵盖的场景。
- 在App Service中执行开发,使应用程序能够轻松使用本地资源。
因为此功能可以在没有入站防火墙漏洞的情况下访问本地资源,所以它很受开发人员的欢迎。其他出站应用服务网络功能与Azure虚拟网络相关。混合连接不依赖于通过虚拟网络。它可用于更广泛的网络需求。
App Service Hybrid Connections不知道您在上面做什么。因此,您可以使用它访问数据库、web服务或大型机上的任意TCP套接字。该功能本质上是隧道TCP数据包。
混合连接在开发中很受欢迎,但它也用于生产应用程序。它非常适合访问web服务或数据库,但不适合创建许多连接的情况。
虚拟网络集成
App Service虚拟网络集成使您的应用程序能够向Azure虚拟网络发出出站请求。
虚拟网络集成功能使您能够将应用程序的后端放置在资源管理器虚拟网络中的子网中。虚拟网络必须与应用程序位于同一区域。此功能在已位于虚拟网络中的应用服务环境中不可用。此功能的用例:
- 访问同一区域中资源管理器虚拟网络中的资源。
- 访问对等虚拟网络中的资源,包括跨区域连接。
- 访问由服务端点保护的资源。
- 访问可通过ExpressRoute或VPN连接访问的资源。
- 无需虚拟网络网关,即可访问专用网络中的资源。
- 帮助保护所有出站流量。
- 强制隧道所有出站交通。
说明虚拟网络集成的图。
要了解更多信息,请参阅App Service虚拟网络集成。
网关-需要虚拟网络集成
网关所需的虚拟网络集成是App Service中虚拟网络集成的第一版。该功能通过使用点对点VPN将运行应用程序的主机连接到虚拟网络上的虚拟网络网关来工作。配置该功能时,您的应用程序将获得分配给每个实例的点对点分配地址之一。
说明网关所需虚拟网络集成的图。
网关所需的集成允许您直接连接到另一个区域的虚拟网络,而无需对等连接,并连接到经典虚拟网络。该功能仅限于应用服务Windows计划,不适用于ExpressRoute连接的虚拟网络。建议使用区域虚拟网络集成。有关此功能的更多信息,请参阅App Service虚拟网络集成。
应用服务环境
应用服务环境(ASE)是在您的虚拟网络中运行的Azure应用服务的单租户部署。此功能的某些情况如下:
- 访问虚拟网络中的资源。
- 跨ExpressRoute访问资源。
- 在虚拟网络中使用私有地址公开您的应用程序。
- 跨服务端点访问资源。
- 跨专用端点访问资源。
使用ASE,您不需要使用虚拟网络集成,因为ASE已经在您的虚拟网络中。如果您想通过服务端点访问SQL或Azure存储等资源,请在ASE子网上启用服务端点。如果你想访问虚拟网络中的资源或虚拟网络的专用端点,你不需要做任何额外的配置。如果你想跨ExpressRoute访问资源,你已经在虚拟网络中,不需要在ASE或其中的应用程序上配置任何东西。
由于ILB ASE中的应用程序可以在私有IP地址上公开,因此您可以轻松添加WAF设备,仅将您想要的应用程序公开到互联网上,并帮助保护其余应用程序的安全。此功能可以帮助简化多层应用程序的开发。
有些事情目前无法从多租户服务中实现,但可以从ASE中实现。以下是一些示例:
- 在单一租户服务中托管您的应用程序。
- 扩展到比多租户服务中可能的更多的实例。
- 加载私有CA客户端证书,供具有私有CA安全端点的应用程序使用。
- 在系统中托管的所有应用程序中强制TLS 1.2,而不能在应用程序级别禁用它。
说明虚拟网络中ASE的图。
ASE提供了关于独立和专用应用程序托管的最佳故事,但它确实涉及一些管理挑战。在使用可操作的ASE之前,需要考虑以下几点:
- ASE在虚拟网络内运行,但它在虚拟网络外确实有依赖关系。必须允许这些依赖关系。有关更多信息,请参阅应用服务环境的网络注意事项。
- ASE不会像多租户服务那样立即扩展。您需要预测扩展需求,而不是被动扩展。
- ASE的前期成本确实较高。为了最大限度地利用ASE,您应该计划将许多工作负载放入一个ASE中,而不是将其用于小规模的工作
- ASE中的应用程序不能选择性地限制对ASE中某些应用程序的访问,而不能限制对其他应用程序。
- ASE位于子网中,任何网络规则都适用于进出该ASE的所有流量。如果你只想为一个应用程序分配入站流量规则,请使用访问限制。
组合功能
多租户服务的特征可以一起使用,以解决更复杂的用例。这里描述了两个更常见的用例,但这只是示例。通过了解各种功能的作用,您可以满足几乎所有的系统架构需求。
将应用程序放入虚拟网络
您可能想知道如何将应用程序放入虚拟网络。如果将应用程序置于虚拟网络中,则应用程序的入站和出站端点都在虚拟网络中。ASE是解决此问题的最佳方法。但是,通过组合功能,您可以在多租户服务中满足大部分需求。例如,您可以通过以下方式托管仅具有专用入站和出站地址的intranet应用程序:
- 创建具有专用入站和出站地址的应用程序网关。
- 使用服务端点保护应用程序的入站流量。
- 使用虚拟网络集成功能,使应用程序的后端位于虚拟网络中。
这种部署方式不会为互联网的出站流量提供专用地址,也无法锁定应用程序的所有出站流量。它将为你提供很多只有通过ASE才能获得的东西。
创建多层应用程序
多层次应用程序是指只能从前端层访问API后端应用程序的应用程序。创建多层应用程序有两种方法。两者都是从使用虚拟网络集成将前端web应用程序连接到虚拟网络中的子网开始的。这样做将使您的web应用程序能够调用虚拟网络。前端应用程序连接至虚拟网络后,您需要决定如何锁定对API应用程序的访问。你可以:
- 在同一ILB ASE中托管前端和API应用程序,并通过使用应用程序网关将前端应用程序公开到互联网。
- 在多租户服务中托管前端,在ILB ASE中托管后端。
- 在多对映服务中托管前端和API应用程序。
如果您同时托管多层次应用程序的前端和API应用程序,您可以:
- 通过使用虚拟网络中的专用终结点公开API应用程序:
说明在两层应用程序中使用私有端点的图。
- 使用服务终结点确保API应用程序的入站流量仅来自前端web应用程序使用的子网:
说明使用服务端点来帮助保护应用程序的图。
以下是一些考虑因素,可以帮助您决定使用哪种方法:
- 当您使用服务端点时,您只需要确保API应用程序到集成子网的流量安全。服务端点有助于保护API应用程序的安全,但您仍然可以将数据从前端应用程序导出到应用程序服务中的其他应用程序。
- 当你使用私有端点时,你有两个子网在发挥作用,这增加了复杂性。此外,私有端点是顶级资源,增加了管理开销。使用私有端点的好处是,您没有数据泄露的可能性。
这两种方法都适用于多个前端。在小规模上,服务端点更容易使用,因为您只需在前端集成子网上为API应用程序启用服务端点。随着添加更多前端应用程序,您需要调整每个API应用程序,使其包含具有集成子网的服务端点。当您使用专用端点时,会有更大的复杂性,但在设置专用端点后,您不必更改API应用程序上的任何内容。
业务线应用程序
业务线(LOB)应用程序是通常不会从互联网访问的内部应用程序。这些应用程序是从公司网络内部调用的,在那里可以严格控制访问。如果您使用ILB ASE,则很容易托管您的业务线应用程序。如果使用多租户服务,则可以使用专用终结点,也可以将服务端点与应用程序网关结合使用。使用带有服务端点的应用程序网关而不是使用私有端点有两个原因:
- 您的LOB应用程序需要WAF保护。
- 您希望对LOB应用程序的多个实例进行负载平衡。
如果这两种需求都不适用,最好使用私有端点。通过App Service中提供的专用端点,您可以在虚拟网络中的专用地址上公开您的应用程序。您在虚拟网络上放置的专用端点可以通过ExpressRoute和VPN连接访问。
配置私有端点将在私有地址上公开您的应用程序,但您需要配置DNS才能从本地访问该地址。为了使此配置正常工作,您需要将包含您的私有终结点的Azure DNS私有区域转发到您的本地DNS服务器。Azure DNS专用区域不支持区域转发,但您可以使用Azure DNS专用解析器支持区域转发。
应用服务端口
如果你扫描App Service,你会发现有几个端口暴露在入站连接中。在多租户服务中,无法阻止或控制对这些端口的访问。以下是暴露的端口列表:
Use | Port or ports |
---|---|
HTTP/HTTPS | 80, 443 |
Management | 454, 455 |
FTP/FTPS | 21, 990, 10001-10300 |
Visual Studio remote debugging | 4020, 4022, 4024 |
Web Deploy service | 8172 |
Infrastructure use | 7654, 1221 |
- 登录 发表评论
- 2 次浏览
Tags
最新内容
- 4 hours ago
- 7 hours ago
- 7 hours ago
- 2 days 22 hours ago
- 3 days 6 hours ago
- 3 days 6 hours ago
- 3 days 6 hours ago
- 3 days 7 hours ago
- 1 week ago
- 1 week ago