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

在 Azure API 管理前配置 Front Door 标准版/高级版

适用于:所有 API 管理层级

Azure Front Door 是新式应用程序分发网络平台,为你的全局 Web 应用程序提供安全、可缩放的内容分发网络 CDN、动态站点加速和全局 HTTP(s) 负载均衡。 在 API 管理前面使用时,Front Door 可以提供 TLS 卸载、端到端 TLS、负载均衡、GET 请求的响应缓存和 Web 应用程序防火墙等功能。 有关支持的功能的完整列表,请参阅什么是 Azure Front Door?

注意

对于 Web 工作负载,强烈建议使用 Azure DDoS 防护Web 应用程序防护墙来抵御新兴的 DDoS 攻击。 另一种选择是将 Azure Front Door 与 Web 应用程序防火墙一起使用。 Azure Front Door 提供平台级保护来抵御网络级 DDoS 攻击。 有关详细信息,请参阅 Azure 服务的安全基线

本文介绍以下操作:

  • 在可公开访问的 Azure API 管理实例前设置 Azure Front Door 标准版/高级版配置文件:未联网或以外部模式注入虚拟网络。
  • 将 API 管理限制为仅接受来自 Azure Front Door 的 API 流量。

必备条件

  • API 管理实例。
    • 如果选择使用网络注入实例,则必须将其部署在外部 VNet 中。 (开发人员和高级服务层级支持虚拟网络注入。)
  • 将一个或多个 API 导入 API 管理实例,以确认通过 Front Door 进行路由。

配置 Azure Front Door

创建配置文件

有关创建 Azure Front Door 标准版/高级版配置文件的步骤,请参阅快速入门:创建 Azure Front Door 配置文件 - Azure 门户。 对于本文,可以选择 Front Door 标准版配置文件。 有关 Front Door 标准版和 Front Door 高级版的比较,请参阅层级比较

配置以下特定于将 API 管理实例的网关终结点用作 Front Door 原点的 Front Door 设置。 有关其他设置的说明,请参阅 Front Door 快速入门。

设置
源服务器类型 选择“API 管理”
源服务器主机名 选择 API 管理实例的主机名,例如 myapim.azure-api.net
缓存 为 Front Door 选择“启用缓存”,以缓存静态内容
查询字符串缓存行为 选择“使用查询字符串”

在门户中创建 Front Door 配置文件的屏幕截图。

更新默认原点组

创建配置文件后,更新默认原点组以包含 API 管理运行状况探测。

  1. 门户中,转到 Front Door 配置文件。

  2. 在左侧菜单中的“设置”下,选择“原点组”>“default-origin-group”。

  3. 在“更新原点组”窗口中,配置以下“运行状况探测”设置并选择“更新”:

    设置
    Status 选择“启用运行状况探测”
    路径 输入 /status-0123456789abcdef
    协议 选择“HTTPS”
    方法 选择“GET”
    间隔(秒) 输入 30

    在门户中更新默认原点组的屏幕截图。

更新默认路由

建议更新与 API 管理原点组关联的默认路由,以使用 HTTPS 作为转发协议。

  1. 门户中,转到 Front Door 配置文件。
  2. 在左侧菜单中的“设置”下,选择“原点组”。
  3. 展开“default-origin-group”。
  4. 在“default-route”的上下文菜单 (...) 中,选择“配置路由”。
  5. 将“接受的协议”设置为“HTTP 和 HTTPS”。
  6. 启用“重定向所有流量以使用 HTTPS”。
  7. 将“转发协议”设置为“仅 HTTPS”,然后选择“更新”。

测试配置

通过调用由 API 管理托管的 API 来测试 Front Door 配置文件配置。 首先,通过 API 管理网关直接调用 API,以确保可访问 API。 然后,通过 Front Door 调用 API。 要进行测试,可以使用命令行客户端(例如 curl)进行调用,也可以使用 Postman 等工具。

通过 API 管理直接调用 API

在以下示例中,使用 Postman 直接调用由 API 管理实例托管的演示会议 API 中的操作。 在此示例中,实例的主机名位于默认 azure-api.net 域中,并使用请求头传递有效的订阅密钥。 成功的响应显示 200 OK 并返回预期数据:

显示使用 Postman 直接调用 API 管理终结点的屏幕截图。

通过 Front Door 直接调用 API

在以下示例中,使用为实例配置的 Front Door 终结点调用演示会议 API 中的相同操作。 azurefd.net 域中的终结点主机名显示在门户中 Front Door 配置文件的“概述”页上。 成功的响应显示 200 OK 并返回与上一示例相同的数据:

显示使用 Postman 调用 Front Door 终结点的屏幕截图。

限制发送到 API 管理实例的流量

使用 API 管理策略来确保 API 管理实例仅接受来自 Azure Front Door 的流量。 可以使用以下一种或两种方法来实现此限制:

  1. 限制 API 管理实例的传入 IP 地址
  2. 根据 X-Azure-FDID 标头的值限制流量

限制传入 IP 地址

可以在 API 管理中配置入站 ip-filter 策略,以仅允许与 Front Door 相关的流量,其中包括:

  • Front Door 后端 IP 地址空间 - 允许与 Azure IP 范围和服务标记中的 AzureFrontDoor.Backend 部分对应的 IP 地址。

    注意

    如果 API 管理实例部署在外部虚拟网络中,则通过在用于 API 管理实例的子网中添加入站网络安全组规则来实现相同的限制。 将规则配置为在端口 443 上允许来自源服务标记 AzureFrontDoor.Backend 的 HTTPS 流量。

  • Azure 基础结构服务 - 允许 IP 地址 168.63.129.16 和 169.254.169.254。

检查 Front Door 标头

通过 Front Door 路由的请求包括特定于 Front Door 配置的标头。 可以将 check-header 策略配置为根据发送到API 管理的 X-Azure-FDID HTTP 请求头的唯一值筛选传入请求。 此标头值是 Front Door ID,显示在门户中 Front Door 配置文件的“概述”页上。

在以下策略示例中,Front Door ID 是使用名为 FrontDoorId命名值指定的。

<check-header name="X-Azure-FDID" failed-check-httpcode="403" failed-check-error-message="Invalid request." ignore-case="false">
        <value>{{FrontDoorId}}</value>
</check-header>

未附带有效 X-Azure-FDID 标头的请求会返回 403 Forbidden 响应。

(可选)为开发人员门户配置 Front Door

(可选)在 Front Door 配置文件中将 API 管理实例的开发人员门户配置为终结点。 虽然托管开发人员门户已由 Azure 托管 CDN 前置,但你可能希望利用 WAF 等 Front Door 功能。

以下是将开发人员门户的终结点添加到配置文件的概要步骤:

  • 若要添加终结点并配置路由,请参阅使用 Front Door 管理器配置终结点

  • 添加路由时,添加原点组和原点设置来表示开发人员门户:

    • 原点类型 - 选择“自定义”
    • 主机名 - 输入开发人员门户的主机名,例如 myapim.developer.azure-api.net

有关设置的详细信息,请参阅如何为 Azure Front Door 配置原点

注意

如果为开发人员门户配置了 Microsoft Entra IDAzure AD B2C 标识提供者,则需要使用指向 Front Door 的附加重定向 URL 来更新相应的应用注册。 在应用注册中,添加在 Front Door 配置文件中配置的开发人员门户终结点的 URL。

后续步骤