使用应用程序网关和 API 管理来保护 API
组织越来越多地采用 API 优先设计方法,同时面临 Web 应用程序日益严重的威胁。 需要一个全面的安全策略来保护 API,尤其是在公开 AI 支持的 API 并实施零信任体系结构原则时。 网关路由模式通过保护网络流量提供 API 安全性的一种方法。 网关限制流量源位置和流量质量,同时支持灵活的路由规则。 本文介绍如何使用 Azure 应用程序网关 和 Azure API 管理来保护 API 访问。
Architecture
本文不会解决应用程序的基础平台,例如应用服务环境、Azure SQL 托管实例和 Azure Kubernetes 服务。 该图的这些部分展示了作为更广泛的解决方案实现的内容。 本文专门讨论了着色区域、API 管理和应用程序网关。
下载此体系结构的 Visio 文件。
Workflow
应用程序网关接收子网网络安全组(NSG)允许的 HTTPS 请求。
应用程序网关上的 Web 应用程序防火墙(WAF)会根据 WAF 规则(包括 Geomatch 自定义规则)检查请求。 如果请求有效,则请求可以继续。
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 及其配置。 或者,可以完全阻止开发人员门户。
- 格式化的
应用程序网关接受并代理来自同一 Azure 虚拟网络
api.<some-domain>/internal/*
中资源的内部调用。在 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) 保护:
- 具有内置 DDoS 保护和全局负载均衡的 Azure Front Door
- Azure Firewall for network-level protection and centralized security policy management
- 合作伙伴解决方案,例如 Barracuda Web 应用程序防火墙或其他 Azure 市场中可用的 Web 应用程序防火墙解决方案
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 安全基线。
始终实施以下安全措施:
将 Azure Web 应用程序防火墙(WAF) 策略与最新的 OWASP 核心规则集 (CRS) 3.2 或更高版本配合使用,以防止常见的 Web 漏洞,包括 OWASP 前 10 个威胁。
配置 WAF 地理匹配自定义规则 ,以阻止或允许基于地理位置的流量。 此方法为分布式拒绝服务 (DDoS) 攻击提供一些保护。
在应用程序网关中使用 Azure WAF 启用 应用程序(第 7 层)DDoS 防护 ,以防止卷发和基于协议的攻击。 Azure DDoS 防护与应用程序设计实践相结合,提供增强的 DDoS 缓解功能,以提供更多防御 DDoS 攻击。
Use private endpoints for API Management to provide secure inbound connectivity.
启用 Microsoft Defender for API 以监视 API 安全状况并检测威胁。
配置 WAF 机器人保护规则 以识别和阻止恶意机器人。
Cost Optimization
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
此体系结构的成本取决于配置方面,例如:
- Service tiers. 考虑 API 管理的标准 v2 和高级 v2 层,该层提高了成本效益和性能。
- 可伸缩性,表示为支持给定需求而由服务动态分配的实例数
- 此体系结构是连续运行还是每月仅运行几个小时
- 如果使用多区域部署,则区域之间的数据传输成本
- 根据评估的请求数和规则数计算 WAF 处理成本
请考虑以下成本优化策略:
- 将 API 管理消耗层 用于低使用率、可变工作负荷,其中只需为实际使用情况付费。
- 实现 应用程序网关自动缩放 ,以按需优化实例计数。
评估这些方面后,请使用 Azure 定价计算器 估算定价。
Operational Excellence
卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅设计卓越运营的审查清单。
实现全面的监视和可观测性:
- 为 Azure Monitor 日志配置 API 管理日志记录 ,以便进行详细的 API 分析
- 设置 应用程序网关诊断 以监视 WAF 事件和性能指标
- 为 API 性能和可用性阈值实现 API 管理警报
Performance Efficiency
性能效率是工作负荷以高效方式满足用户对它的需求的能力。 有关详细信息,请参阅 性能效率的设计评审清单。
应用程序网关是此体系结构的入口点,WAF 功能需要每个请求分析的处理能力。 若要允许应用程序网关按需扩展其计算容量,请启用自动缩放。 有关详细信息,请参阅 应用程序网关中的自动缩放和区域冗余。 遵循 应用程序网关基础结构配置的产品文档建议,包括适当的子网大小调整。 此方法可确保子网足够大,以支持完全横向扩展。
对于 API 管理,请考虑以下性能优化:
- 启用 API 管理自动缩放 以自动响应增加的请求量。
- 使用 API 管理缓存策略 来减少后端负载并提高响应时间。
- 实现 API 管理速率限制 ,防止后端服务负载过大。
- 使用 标准 v2 或高级 v2 层 来提高性能和网络功能。
Next steps
请按照良好的 Web API 设计准则设计 API,并使用良好的 Web API 实现做法实现 API。
Related resources
- 网关路由模式 - 使用单个终结点将请求路由到多个服务
- 网关聚合模式 - 将多个请求聚合为单个请求
- 网关卸载模式 - 将共享功能卸载到 API 网关
- 基于 URL 路径的路由概述
- 教程:通过 Azure CLI 使用基于 URL 路径的重定向创建应用程序网关