使用虚拟网络保护 Azure API 管理的入站和出站流量

API 管理提供了多个选项,用于通过 Azure 虚拟网络保护对 API 管理实例和 API 的访问。 API 管理支持以下选项。 可用选项取决于 API 管理实例的服务层级

  • 将 API 管理实例注入到虚拟网络中的子网,使网关能够访问网络中的资源。

    可以选择以下两种注入模式之一:外部内部。 它们的不同之处在于,是允许从 Internet 以入站连接方式连接到网关和其他 API 管理终结点,还是仅允许从虚拟网络内部这样做。

  • 使用专用终结点启用到 API 管理网关的安全和专用入站连接

下表对虚拟网络选项做了比较。 有关详细信息,请参阅本文的后面部分和指向详细指南的链接。

网络模型 支持的层 支持的组件 支持的流量 使用方案
虚拟网络注入 - 外部 开发人员、高级 开发人员门户、网关、管理平面和 Git 存储库 可以允许 Internet、对等虚拟网络、Express Route 和 S2S VPN 连接的入站和出站流量。 对专用后端和本地后端的外部访问
虚拟网络注入 - 内部 开发人员、高级 开发人员门户、网关、管理平面和 Git 存储库。 可以允许对等虚拟网络、Express Route 和 S2S VPN 连接的入站和出站流量。 对专用后端和本地后端的内部访问
入站专用终结点 开发人员、基本、标准、高级 仅网关(托管网关受支持,自承载网关不受支持)。 仅允许来自 Internet、对等虚拟网络、Express Route 和 S2S VPN 连接的入站流量。 保护到 API 管理网关的客户端连接

虚拟网络注入

使用 VNet 注入,将 API 管理实例部署(“注入”)在可控制访问权限的非 Internet 可路由网络的子网中。 在虚拟网络中,API 管理实例可以安全地访问其他联网的 Azure 资源,还可以使用各种 VPN 技术连接到本地网络。 若要了解有关 Azure VNet 的详细信息,请先阅读 Azure 虚拟网络概述中的相关信息。

你可以使用 Azure 门户、Azure CLI、Azure 资源管理器模板或其他工具进行配置。 可以使用网络安全组控制其中部署了 API 管理的子网的入站和出站流量。

有关部署步骤和网络配置的详细信息,请参阅:

访问选项

使用虚拟网络,你可以将开发人员门户、API 网关和其他 API 管理终结点配置为可从 Internet(外部模式)或仅在 VNet 中(内部模式)访问。

  • 外部 - 可以通过外部负载均衡器从公共 Internet 访问 API 管理终结点。 网关可以访问 VNet 中的资源。

    Diagram showing a connection to external VNet.

    在外部模式下使用 API 管理访问部署在虚拟网络中的后端服务。

  • 内部 - 只能通过内部负载均衡器从 VNet 内部访问 API 管理终结点。 网关可以访问 VNet 中的资源。

    Diagram showing a connection to internal VNet.

    在内部模式中使用 API 管理可以:

    • 通过使用 Azure VPN 连接或 Azure ExpressRoute,使专用数据中心内托管的 API 可被第三方安全访问。
    • 通过公共网关公开基于云的 API 和本地 API,以便启用混合云方案。
    • 使用单一网关终结点管理托管在多个地理位置的 API。

注入的网络资源要求

以下是将 API 管理注入 VNet 的虚拟网络资源要求。 某些要求因托管 API 管理实例的stv2的版本(stv2stv1)而异。

  • 需要 Azure 资源管理器虚拟网络。
  • 除了指定虚拟网络和子网,还必须提供标准 SKU 公共 IPv4 地址
  • 用于连接到 API 管理实例的子网可能包含其他 Azure 资源类型。
  • 用于连接到 API 管理实例的子网不应启用任何委派。 子网的“将子网委派给服务”设置应设置为“无”。
  • 附加到上述子网的网络安全组。 网络安全组 (NSG) 需要显式允许入站连接,因为 API 管理在内部使用的负载均衡器默认是安全的,并且会拒绝所有入站流量。
  • API 管理服务、虚拟网络和子网以及公共 IP 地址资源必须位于同一区域和订阅中。
  • 对于多区域 API 管理部署,请分别为每个位置配置虚拟网络资源。

子网大小

可在其中部署 API 管理的子网的最小大小为 /29,其中提供 3 个可用的 IP 地址。 因此,每增加一个 API 管理缩放单元,即需要增加两个 IP 地址。 最小大小要求基于以下注意事项:

  • Azure 会保留每个子网中无法使用的五个 IP 地址。 为遵从协议,保留子网的第一个和最后一个 IP 地址。 另外三个地址将用于 Azure 服务。 有关详细信息,请参阅使用这些子网中的 IP 地址是否有任何限制?

  • 除 Azure VNet 基础结构使用的 IP 地址外,子网中的每个 API 管理实例还会使用以下地址:

    • 每单位基本、标准或高级 SKU 两个 IP 地址,或
    • Developer SKU,一个 IP 地址。
  • 当部署到内部 VNet 时,实例需要使用相关内部负载均衡器的额外 IP 地址。

示例

  • 对于基本、标准或高级 SKU:

    • /29 子网:8 个可能的 IP 地址 - 5 个预留的 Azure IP 地址 - 2 个适用于一个实例的 API 管理 IP 地址 - 1 个适用于内部负载均衡器的 IP 地址(如果在内部模式下使用)= 0 个适用于横向扩展单元的 IP 地址。

    • /28 子网:16 个可能的 IP 地址 - 5 个预留的 Azure IP 地址 - 2 个适用于一个实例的 API 管理 IP 地址 - 1 个适用于内部负载均衡器的 IP 地址(如果在内部模式下使用)= 8 个适用于四个横向扩展单元的 IP 地址(2 个 IP 地址/横向扩展单元),共五个单元。 此子网有效地最大限度提高基本和标准 SKU 横向扩展上限。

    • /27 子网:32 个可能的 IP 地址 - 5 个预留的 Azure IP 地址 - 2 个适用于一个实例的 API 管理 IP 地址 - 1 个适用于内部负载均衡器的 IP 地址(如果在内部模式下使用)= 24 个适用于十二个横向扩展单元的 IP 地址(2 个 IP 地址/横向扩展单元),共十三个单元。 此子网有效地最大限度提高软限制高级 SKU 横向扩展上限。

    • /26 子网:64 个可能的 IP 地址 - 5 个预留的 Azure IP 地址 - 2 个适用于一个实例的 API 管理 IP 地址 - 1 个适用于内部负载均衡器的 IP 地址(如果在内部模式下使用)= 56 个适用于二十八个横向扩展单元的 IP 地址(2 个 IP 地址/横向扩展单元),共二十九个单元。 可以使用 Azure 支持票证将高级 SKU 扩展为超过 12 个单元。 如果预见会面临如此高的需求,请考虑 /26 子网。

    • /25 子网:128 个可能的 IP 地址 - 5 个预留的 Azure IP 地址 - 2 个适用于一个实例的 API 管理 IP 地址 - 1 个适用于内部负载均衡器的 IP 地址(如果在内部模式下使用)= 120 个适用于六十个横向扩展单元的 IP 地址(2 个 IP 地址/横向扩展单元),共六十一个单元。 该横向扩展单元数非常大,是一个理论上的数字。

重要

内部负载均衡器和 API 管理单元的专用 IP 地址是动态分配的。 因此,在部署 API 管理实例之前,无法预测其专用 IP。 此外,更改为其他子网,然后返回可能会导致专用 IP 地址发生变化。

路由

将 API 管理实例部署到外部 VNet内部 VNet 时,请参阅路由指南。

详细了解 API 管理的 IP 地址

DNS

  • 在外部模式下,VNet 默认为 API 管理终结点和其他 Azure 资源启用 Azure 提供的名称解析。 它不提供本地资源的名称解析。 你可以选择配置你自己的 DNS 解决方案。

  • 在内部模式下,你必须提供自己的 DNS 解决方案,以确保 API 管理终结点和其他所需的 Azure 资源的名称解析。 建议配置 Azure 专用 DNS 区域

有关详细信息,请参阅将 API 管理实例部署到外部 VNet内部 VNet 时的 DNS 指南。

相关信息:

重要

如果计划对 VNet 使用自定义 DNS 解决方案,则应先进行设置,再将 API 管理服务部署到 VNet 中。 否则,每次通过运行应用网络配置操作或在 Azure 门户中服务实例的网络配置窗口中选择“应用网络配置”来更改 DNS 服务器时,都需要更新 API 管理服务。

限制

某些虚拟网络限制因托管 API 管理实例的计算平台的版本(stv2stv1)而异。

  • 无法在订阅之间移动包含 API 管理实例的子网。
  • 对于在内部 VNet 模式下配置的多区域 API 管理部署,用户拥有路由权限,并且负责跨多个区域管理负载均衡。
  • 若要将 API 从 OpenAPI 规范导入 API 管理,规范 URL 必须托管在可公开访问的 Internet 地址上。

入站专用终结点

API 管理支持专用终结点,以便与 API 管理实例建立安全的入站客户端连接。 每个安全连接使用来自虚拟网络和 Azure 专用链接的专用 IP 地址。

Diagram showing a secure connection to API Management using private endpoint.

通过专用终结点和专用链接,你可以:

  • 创建到 API Management 实例的多个专用链接连接。

  • 使用专用终结点通过安全的连接发送入站流量。

  • 使用策略来区分来自专用终结点的流量。

  • 将传入流量仅限制到专用终结点,防止数据外泄。

重要

  • 只能为发到 API 管理实例的入站流量配置专用终结点连接。 当前不支持出站流量。

    你可以使用外部或内部虚拟网络模型,从 API 管理实例建立到专用终结点的出站连接。

  • 若要启用专用终结点,API Management 实例不能是通过外部或内部虚拟网络来配置的。

有关详细信息,请参阅使用入站专用终结点以专用方式连接到 API 管理

高级网络配置

使用 Web 应用程序防火墙保护 API 管理终结点

在某些情况下,可能需要安全地对 API 管理实例进行外部和内部访问,并灵活地访问专用后端和本地后端。 对于这些情况,可以选择使用 Web 应用程序防火墙 (WAF) 管理对 API 管理实例终结点的外部访问。

例如,在内部虚拟网络中部署 API 管理实例,并使用面向 Internet 的 Azure 应用程序网关来路由公共访问:

Diagram showing Application Gateway in front of API Management instance.

有关详细信息,请参阅使用应用程序网关在内部虚拟网络中部署 API 管理

后续步骤

了解有关以下方面的详细信息:

API 管理的虚拟网络配置:

相关文章: