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

使用应用程序网关和 API 管理来保护 API

Azure API 管理
Azure 应用程序网关

组织越来越多地采用 API 优先设计方法,同时面临 Web 应用程序日益严重的威胁。 需要一个全面的安全策略来保护 API,尤其是在公开 AI 支持的 API 并实施零信任体系结构原则时。 网关路由模式通过保护网络流量提供 API 安全性的一种方法。 网关限制流量源位置和流量质量,同时支持灵活的路由规则。 本文介绍如何使用 Azure 应用程序网关 和 Azure API 管理来保护 API 访问。

Architecture

本文不会解决应用程序的基础平台,例如应用服务环境、Azure SQL 托管实例和 Azure Kubernetes 服务。 该图的这些部分展示了作为更广泛的解决方案实现的内容。 本文专门讨论了着色区域、API 管理和应用程序网关。

显示应用程序网关和 API 管理如何保护 API 的关系图。

下载此体系结构的 Visio 文件

Workflow

  1. 应用程序网关接收子网网络安全组(NSG)允许的 HTTPS 请求。

  2. 应用程序网关上的 Web 应用程序防火墙(WAF)会根据 WAF 规则(包括 Geomatch 自定义规则)检查请求。 如果请求有效,则请求可以继续。

  3. Application Gateway sets up a URL proxy mechanism that sends the request to the proper backend pool. 例如,根据 API 调用的 URL 格式:

    • 格式化的 api.<some-domain>/external/* URL 可以访问后端以与请求的 API 交互。
    • 格式化为 api.<some-domain>/* 转到死端(sinkpool)的调用,这是一个没有目标的后端池。
    • 应用程序网关级别的路由规则会将用户 portal.<some-domain>/* 重定向到开发人员门户。 开发人员可以从内部和外部环境管理 API 及其配置。 或者,可以完全阻止开发人员门户。
  4. 应用程序网关接受并代理来自同一 Azure 虚拟网络 api.<some-domain>/internal/*中资源的内部调用。

  5. 在 API 管理级别,API 接受以下模式下的调用:

    • api.<some-domain>/external/*
    • api.<some-domain>/internal/*

    在此场景中,API 管理使用两种类型的 IP 地址,即公共地址和专用地址。 公共 IP 地址用于管理平面的端口 3443 上的管理作,以及外部虚拟网络配置中的运行时 API 流量。 当 API 管理向面向 Internet 的公共后端发送请求时,便将公共 IP 地址显示为请求的源。 有关详细信息,请参阅 VNet 中 API 管理服务的 IP 地址

Components

  • Azure 虚拟网络 使许多类型的 Azure 资源能够彼此、Internet 和本地网络私下通信。 在此体系结构中,应用程序网关将公共 Internet 流量隧道传送到此专用网络。

  • Azure 应用程序网关是一种 Web 流量负载均衡器,可用于管理发往 Web 应用程序的流量。 这种类型的路由称为应用程序层(OSI 层 7)负载均衡。 在此体系结构中,网关提供路由和托管 Web 应用程序防火墙(WAF),以防止常见的基于 Web 的攻击途径。

  • Azure API 管理是一种混合式多云管理平台,适用于所有环境中的 API。 API 管理为现有后端服务创建一致的新式 API 网关。 在此体系结构中,API 管理以完全专用模式运行,以从 API 代码和主机卸载交叉关注点。

Recommendations

此解决方案侧重于实现整个解决方案,并测试 API 管理虚拟网络内外的 API 访问。 有关 API 管理虚拟网络集成过程的详细信息,请参阅 使用应用程序网关在内部虚拟网络中部署 API 管理

要与后端中的专用资源通信,应用程序网关和 API 管理必须与资源位于同一虚拟网络中,或必须位于已对等互连的虚拟网络中。

  • 专用内部部署模型允许 API 管理连接到现有虚拟网络,使其可从该网络上下文内部访问。 To enable this feature, deploy either the Developer or Premium API Management tiers for classic virtual network injection. For newer virtual network options, use Standard v2 or Premium v2 tiers with virtual network integration or injection capabilities.

  • 如果客户端存在于不同的订阅中,或者使用不同的 Entra ID 目录进行管理,请使用 应用程序网关专用链接 从跨订阅和区域的客户端虚拟网络提供与应用程序网关的专用连接。

  • Azure Key Vault 中管理应用程序网关证书。

  • To personalize interactions with the services, you can use CNAME entries.

Alternatives

可以使用其他服务来提供类似级别的防火墙和 Web 应用程序防火墙 (WAF) 保护:

Considerations

这些注意事项实现 Azure Well-Architected 框架的支柱,这是一组指导原则,可用于提高工作负荷的质量。 有关详细信息,请参阅 azure Well-Architected Framework Microsoft。

Reliability

可靠性可确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。

无论实例计数如何,Azure 应用程序网关始终以高度可用的方式部署。 为了避免区域故障的影响,可以将应用程序网关配置为跨越多个可用性区域。 有关详细信息,请参阅自动缩放和高可用性

为 API 管理服务组件启用区域冗余,以提供复原能力和高可用性。 区域冗余在物理上分离的区域中的数据中心之间复制 API 管理网关和控制平面,使其能够适应区域故障。 The API Management Premium tier is required to support Availability zones.

API 管理还支持多区域部署,这可以在一个区域脱机时提高可用性。 For more information, see Multi-region deployment. 在此拓扑中,由于应用程序网关属于区域性服务,因此还必须为每个区域创建一个应用程序网关。

安全性

安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅 安全的设计评审清单。

有关应用程序网关安全性的详细信息,请参阅应用程序网关的 Azure 安全基线

有关 API 管理安全性的详细信息,请参阅 API 管理的 Azure 安全基线

始终实施以下安全措施:

Cost Optimization

成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。

此体系结构的成本取决于配置方面,例如:

  • Service tiers. 考虑 API 管理的标准 v2 和高级 v2 层,该层提高了成本效益和性能。
  • 可伸缩性,表示为支持给定需求而由服务动态分配的实例数
  • 此体系结构是连续运行还是每月仅运行几个小时
  • 如果使用多区域部署,则区域之间的数据传输成本
  • 根据评估的请求数和规则数计算 WAF 处理成本

请考虑以下成本优化策略:

评估这些方面后,请使用 Azure 定价计算器 估算定价。

Operational Excellence

卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅设计卓越运营的审查清单

实现全面的监视和可观测性:

Performance Efficiency

性能效率是工作负荷以高效方式满足用户对它的需求的能力。 有关详细信息,请参阅 性能效率的设计评审清单。

应用程序网关是此体系结构的入口点,WAF 功能需要每个请求分析的处理能力。 若要允许应用程序网关按需扩展其计算容量,请启用自动缩放。 有关详细信息,请参阅 应用程序网关中的自动缩放和区域冗余。 遵循 应用程序网关基础结构配置的产品文档建议,包括适当的子网大小调整。 此方法可确保子网足够大,以支持完全横向扩展。

对于 API 管理,请考虑以下性能优化:

Next steps

请按照良好的 Web API 设计准则设计 API,并使用良好的 Web API 实现做法实现 API。