你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Azure Front Door 和 Azure Web 应用程序防火墙 (WAF) 快速缩放和保护 Web 应用程序

重要

Azure Front Door(经典版)将于 2027 年 3 月 31 日停用。 为了避免任何服务中断,请务必在 2027 年 3 月之前将 Azure Front Door(经典版)配置文件迁移到 Azure Front Door 标准层或高级层。 有关详细信息,请参阅 Azure Front Door(经典版)停用

Web 应用程序经常会遭遇流量激增和恶意攻击,例如拒绝服务攻击。 Azure Front Door 与 Azure WAF 配合工作可帮助缩放应用程序并保护其免受此类威胁。 本教程教授如何为 Web 应用配置 Azure Front Door 与 Azure WAF 的结合使用(无论应用在 Azure 内部还是外部运行)。

本教程使用 Azure CLI。 也可以使用 Azure 门户、Azure PowerShell、Azure 资源管理器或 Azure REST API。

在本教程中,学习:

  • 创建 Front Door。
  • 创建 Azure WAF 策略。
  • 为 WAF 策略配置规则集。
  • 将 WAF 策略与 Front Door 关联。
  • 配置自定义域。

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

先决条件

  • 本教程使用 Azure CLI。 Azure CLI 入门

    提示

    开始使用 Azure CLI 的一种便捷方法是利用 Azure Cloud Shell 中的 Bash

  • 确保将 front-door 扩展添加到 Azure CLI:

    az extension add --name front-door
    

注意

有关本教程中使用的命令的详细信息,请参阅 适用于 Azure Front Door 的 Azure CLI 参考

创建 Azure Front Door 资源

az network front-door create --backend-address <backend-address> --accepted-protocols <protocols> --name <name> --resource-group <resource-group>
  • --backend-address:要保护的应用程序的完全限定域名 (FQDN),例如 myapplication.contoso.com
  • --accepted-protocols:Azure Front Door 支持的协议,例如 --accepted-protocols Http Https
  • --name:Azure Front Door 资源的名称。
  • --resource-group:此 Azure Front Door 资源的资源组。 详细了解如何管理资源组

记下 hostName 响应中的值,因为稍后需要用到。 hostName 是所创建的 Azure Front Door 资源的 DNS 名称。

为 Azure Front Door 创建 Azure WAF 配置文件

az network front-door waf-policy create --name <name> --resource-group <resource-group> --disabled false --mode Prevention
  • --name:新的 Azure WAF 策略的名称。
  • --resource-group:此 WAF 资源的资源组。

前面的命令在防护模式下创建 WAF 策略。

注意

考虑在切换到防护模式之前先在检测模式下创建 WAF 策略,在不阻止恶意请求的情况下观察和记录这些请求。

记下 ID 响应中的值,因为稍后需要用到。 ID 应采用以下格式:

/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/<WAF-policy-name>

将托管规则集添加到 WAF 策略

添加默认规则集:

az network front-door waf-policy managed-rules add --policy-name <policy-name> --resource-group <resource-group> --type DefaultRuleSet --version 1.0

添加机器人防护规则集:

az network front-door waf-policy managed-rules add --policy-name <policy-name> --resource-group <resource-group> --type Microsoft_BotManagerRuleSet --version 1.0
  • --policy-name:Azure WAF 资源的名称。
  • --resource-group:WAF 资源的资源组。

将 WAF 策略与 Azure Front Door 资源关联

az network front-door update --name <name> --resource-group <resource-group> --set frontendEndpoints[0].webApplicationFirewallPolicyLink='{"id":"<ID>"}'
  • --name:Azure Front Door 资源的名称。
  • --resource-group:Azure Front Door 资源的资源组。
  • --set:使用新的 WAF 策略 ID 更新 frontendEndpointWebApplicationFirewallPolicyLink 属性。

注意

如果不使用自定义域,可以跳过下一部分。 为客户提供在创建 Azure Front Door 资源时获取的 hostName

为 Web 应用配置自定义域

更新 DNS 记录,将自定义域指向 Azure Front Door hostName。 具体步骤请参阅 DNS 服务提供商的文档。 如果使用 Azure DNS,请参阅更新 DNS 记录

对于区域顶点域(例如,contoso.com),请使用 Azure DNS 及其别名记录类型

更新 Azure Front Door 配置以添加自定义域

若要为自定义域启用 HTTPS,在 Azure Front Door 中设置证书

锁定 Web 应用程序

确保只有 Azure Front Door 边缘可以与 Web 应用程序通信。 请参阅如何锁定为仅限通过 Azure Front Door 访问我的后端

清理资源

不再需要资源组、Front Door 和 WAF 策略时,将其删除:

az group delete --name <resource-group>
  • --name:本教程中使用的所有资源的资源组的名称。

后续步骤

若要对 Front Door 进行故障排除,请参阅: