你当前正在访问 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 服务(AKS)。 该图的这些部分展示了作为更广泛的解决方案实现的内容。 本文专门讨论着色区域、API 管理和应用程序网关。

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

下载此体系结构的 Visio 文件

Workflow

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

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

  3. 应用程序网关设置 URL 代理机制,用于将请求发送到正确的 后端池。 路由行为取决于 API 调用的 URL 格式:

    • 格式化为 api.<some-domain>/external/* 可以到达后端的 URL 以与请求的 API 交互。

    • 格式化为 api.<some-domain>/* 转到死端的调用,称为 接收器池,它是没有目标的后端池。

    • 应用程序网关级别的路由规则会将用户 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 地址显示为请求的源。 有关详细信息,请参阅 虚拟网络中 API 管理的 IP 地址

Components

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

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

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

Alternatives

可以使用其他服务提供类似的防火墙和 WAF 保护级别:

  • Azure Front Door 提供内置的分布式拒绝服务(DDoS)保护和全局负载均衡。

  • Azure 防火墙 提供网络级保护和集中式安全策略管理。

  • Azure 市场中提供了合作伙伴解决方案,例如 Barracuda WAF 或其他 WAF 解决方案。

Recommendations

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

若要与后端中的专用资源通信,请将应用程序网关和 API 管理放置在与资源或对等互连虚拟网络相同的虚拟网络中。

  • 专用的内部部署模型允许 API 管理连接到现有虚拟网络,从而可从该网络上下文内部访问它。 若要启用此功能,请部署用于经典虚拟网络注入的 开发人员高级 API 管理层。 对于较新的虚拟网络选项,请使用 标准 v2高级 v2 层和虚拟网络集成或注入功能。

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

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

  • 若要个性化与服务的交互,可以使用 规范名称(CNAME)条目

Considerations

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Well-Architected Framework

Reliability

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

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

为 API 管理服务组件启用区域冗余,以提供复原能力和高可用性。 区域冗余跨物理隔离区域中的数据中心复制 API 管理网关和控制平面。 此配置使它们能够复原到区域故障。 必须使用 API 管理 高级 层来支持 可用性区域

API 管理还支持多区域部署,如果一个区域脱机,则可以提高可用性。 有关详细信息,请参阅 多区域支持。 在此拓扑中,为每个区域部署一个应用程序网关,因为应用程序网关是区域服务。

安全性

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

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

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

始终实现以下安全措施:

成本优化

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

此体系结构的成本取决于多个配置方面:

  • 服务层级: 考虑 API 管理的标准 v2 和高级 v2 层以提高成本效益和性能。

  • 可伸缩性: 服务动态分配实例数以支持给定的需求。

  • 运行时持续时间: 成本因体系结构是连续运行还是每月仅运行几个小时而异。

  • 数据传输: 多区域部署会产生区域之间的传输成本。

  • WAF 处理: 成本取决于评估的请求数和规则数。

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

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

卓越运营

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

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

性能效率

性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅 性能效率的设计评审清单。

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

请考虑对 API 管理进行以下性能优化:

后续步骤

若要设计 API,请遵循良好的 Web API 设计 准则。 若要实现 API,请使用良好的 Web API 实现 做法。