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