本文概述如何使用专用终结点保护流量,通过Azure 应用服务配置Azure 应用程序网关。 查看在使用服务终结点以及将其与内部或外部应用服务环境(应用服务环境)集成时的注意事项。 在源代码管理管理器(SCM)站点上设置访问限制。
与应用服务的集成
可以使用专用终结点来保护应用程序网关与应用服务应用之间的流量。 需要确保应用程序网关可以使用域名系统(DNS)解析应用服务应用的专用 IP 地址。 或者,你也可以使用后端池中的专用 IP 地址,并替代 HTTP 设置中的主机名。
应用程序网关将缓存 DNS 查找结果。 如果使用完全限定的域名(FQDN)并依赖于 DNS 查找来获取专用 IP 地址,则可能需要重启应用程序网关。 配置后端池后,DNS 更新或指向Azure专用 DNS 区域的链接发生时,需要重启。
若要重启应用程序网关,请使用以下Azure CLI命令停止并启动它。 在命令中,用本地资源的名称替换任何<占位符>的值。
az network application-gateway stop --resource-group <your-resource-group> --name <your-application-gateway>
az network application-gateway start --resource-group <your-resource-group> --name <your-application-gateway>
详细了解如何使用 专用终结点配置应用服务应用。
使用服务终结点的注意事项
作为使用专用终结点的替代方法,可以使用服务终结点来保护来自应用程序网关的流量。 通过使用 service endpoints,可以仅允许来自Azure虚拟网络中特定子网的流量并阻止其他所有子网。 在以下方案中,可以使用此功能来确保应用服务应用只能接收来自特定应用程序网关的流量。
除了创建应用服务应用实例和应用程序网关之外,此配置还有两个部分。
第一部分在部署应用程序网关的虚拟网络子网中启用服务终结点。 服务终结点可确保所有从子网离开并前往应用服务的网络流量均标记有特定的子网 ID。
第二部分设置特定 Web 应用的访问限制,以确保只允许使用此特定子网 ID 标记的流量。 可以根据偏好使用不同的工具配置访问限制。
在Azure门户中,执行四个步骤来创建和配置应用服务和应用程序网关的集成。 如果有现有资源,可以跳过第一步和第二步。
- 使用应用服务文档中的一个快速入门创建应用服务应用。 一个示例是 .NET Core 快速入门。
- 使用 门户快速入门创建应用程序网关,但跳过有关添加后端目标的部分。
- 在应用程序网关中将应用服务配置为后端,但跳过有关限制访问的部分。
- 使用服务终结点创建访问限制。
现在可以通过应用程序网关访问应用服务。 如果尝试直接访问应用服务,预期会看到 403 HTTP 错误,指出 Web 应用正在阻止访问。
内部 应用服务环境注意事项
内部的 应用服务环境 不对互联网开放。 环境和应用程序网关之间的流量已隔离到虚拟网络。 可以使用 Azure 门户配置内部环境并将其与应用程序网关集成。
如果要确保只有来自应用程序网关子网的流量到达应用服务环境,则可以配置影响环境中所有 Web 应用的网络安全组。 对于网络安全组,可以指定子网 IP 范围和端口(80/443)。
若要隔离发到单个 Web 应用的流量,需要使用基于 IP 的访问限制,因为服务终结点不适用于应用服务环境。 IP 地址应该是应用程序网关的专用 IP。
外部应用服务环境的注意事项
外部 "应用服务环境" 具有外部可访问的负载均衡器,例如多租户应用服务应用。 服务端点不适用于外部 应用服务环境 环境。 在应用服务环境中,可以使用应用程序网关的公共 IP 地址应用基于 IP 的访问限制。 若要在 Azure 门户中创建外部应用服务环境,可以使用 quickstart。
Kudu/SCM 站点的注意事项
SCM 站点(也称为 Kudu)是每个 Web 应用都存在的管理站点。 无法对 SCM 站点使用反向代理。 你很有可能需要将其锁定到单个 IP 地址或特定的子网。
如果要使用与主站点相同的访问限制,可以使用以下Azure CLI命令继承设置:
az webapp config access-restriction set --resource-group <your-resource-group> --name <your-web-app> --use-same-restrictions-for-scm-site
如果要为 SCM 站点添加单个访问限制,可以通过以下命令将标记与 --scm-site 一起使用:
az webapp config access-restriction add --resource-group <your-resource-group> --name <your-web-app> --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16
使用默认域的注意事项
可以将应用程序网关配置为使用应用服务的默认域(通常 chinacloudsites.cn)替代主机名。 此方法是实现集成的最简单方法,因为它不需要在应用服务中配置自定义域和证书。
主机名保留过程描述了替代原始主机名的一般注意事项。 在应用服务中,请记住以下有关身份验证和会话相关性的注意事项。
身份验证(简易认证)
在应用服务(也称为“简易身份验证”)中使用身份验证功能时,应用通常会重定向到登录页。 由于应用服务不知道请求的原始主机名,因此重定向将在默认域名上进行,并且通常会导致错误。
若要解决默认重定向问题,可以将身份验证配置为检查转发标头,并将重定向域调整为原始域。 应用程序网关使用名为 的 X-Original-Host标头。 通过使用基于文件的配置来配置身份验证,可以将应用服务配置为适应原始主机名。
将此配置添加到配置文件:
{
...
"httpSettings": {
"forwardProxy": {
"convention": "Custom",
"customHostHeaderName": "X-Original-Host"
}
}
...
}
会话粘性
在多实例部署中指定 会话相关性设置 时,可以确保客户端请求在会话生存期路由到同一实例。 你可以配置会话相关性,以便将 Cookie 域适应反向代理的传入标头。
将 会话关联代理设置 设置为 true时,会话相关性查找 X-Original-Host 或 X-Forwarded-Host 标头。 它将 Cookie 域调整为请求头中找到的域。 作为启用会话关联代理时的建议做法,请在站点上配置访问限制,以确保流量来自反向代理。
还可以使用以下 Azure CLI 命令配置 clientAffinityProxyEnabled 设置:
az resource update --resource-group <your-resource-group> --name <your-web-app> --resource-type "Microsoft.Web/sites" --set properties.clientAffinityProxyEnabled=true
相关内容
- 查看应用服务环境文档
- 使用 Azure Web 应用程序防火墙 保护网络应用安全
- 在Azure Front Door或应用程序网关上部署具有自定义域的安全站点(教程)