博客 | NGINX

使用 F5 NGINX App Protect WAF 保护您的 GraphQL 和 gRPC 双向流 API

NGINX-F5-horiz-black-type-RGB 的一部分
Thelen Blum 缩略图
西伦·布卢姆
2023 年 4 月 27 日发布

自新冠疫情爆发以来,数字经济持续扩张,90% 的组织正在发展其现代应用程序架构。 在 F5 的2023 年application战略状况报告中,接受调查的 1,000 名全球 IT 决策者中,超过 40% 将他们的应用程序组合描述为“现代”。 过去几年,这一比例一直稳步增长,预计到 2025 年将超过 50%。 然而,现代应用程序和微服务的使用的增加伴随着 API 和 API 端点的激增,成倍地增加了漏洞的可能性和攻击的表面积。

根据 F5 首席技术官办公室的报告《持续 API 蔓延》 ,2021 年全球 API 数量约为 2 亿个,预计到 2030 年这一数字将接近 20 亿个。  这种快速 API 增长所带来的复杂性加剧了跨混合和多云环境的分布式应用管理挑战。 《2023 年应用战略状况报告》的受访者表示,在多云环境中部署应用时,管理多种工具和 API 的复杂性是他们面临的最大挑战。 应用一致的安全策略和优化应用程序性能并列第二。

图 1: 在多云环境中部署应用程序的最大挑战(来源: 2023 年application战略状况报告)。

为什么 API 安全对于您的盈利至关重要

API 不仅是现代应用的基石,也是数字业务的核心——F5 2023 报告调查的 58% 的组织表示,他们至少有一半的收入来自数字服务。 API 支持用户到应用程序以及应用程序到应用程序的通信,它们提供的对私人客户数据和公司内部信息的访问使它们成为攻击者的有利可图的目标。 API 是 2022 年首选的攻击媒介。

在整体应用安全策略中,保护 API 至关重要。 攻击可能造成毁灭性的后果,远远超出侵犯消费者隐私(尽管这很糟糕)的范畴,其严重程度甚至会损害公共安全并导致知识产权的损失。 以下是 2022 年发生的每种类型的 API 攻击的一些示例。

  • 消费者隐私——Twitter 经历了多年的 API 攻击。 2022 年 12 月,黑客窃取了2 亿 Twitter 用户的个人资料数据和电子邮件地址。 四个月前,CloudSEK 研究人员发现3,207 个移动应用泄露了有效的 Twitter API 密钥和机密。 而在此之前一个月,黑客利用 API 漏洞窃取并出售了540 万用户的数据。
  • 公共安全——一组研究者发现大约 20 家顶级汽车制造商存在严重的 API 安全漏洞,包括丰田、奔驰和宝马。 如今,许多汽车都像智能设备一样运行,黑客可以做的远不止窃取 VIN 和车主的个人信息。 他们可以跟踪汽车位置并控制远程管理系统,从而解锁和启动汽车或完全禁用汽车。
  • 知识产权——CircleCI是一个 CI/CD 平台,全球有超过 100 万开发人员使用该平台来发布代码,但现在该平台的一名员工成为了恶意软件攻击的受害者。 该员工有权生成生产访问令牌,因此黑客能够窃取客户的 API 密钥和机密。 此次违规行为近三周内未被发现。 由于无法判断客户的机密是否被窃取并用于未授权访问第三方系统,CircleCI 只能建议客户轮换项目和个人 API 令牌。

这些 API 攻击堪称警示。 当 API 存在安全漏洞且未受保护时,其长尾后果可能远远超出金钱成本。 API 安全的重要性怎么强调也不为过。

F5 NGINX 如何帮助您保护 API

NGINX API 连接堆栈解决方案可帮助您管理跨多云环境的 API 网关和 API。 通过使用NGINX App Protect WAFNGINX Plus 部署为 API 网关,您可以帮助预防和缓解常见的 API 漏洞,这些漏洞可解决 F5 2023 年application战略报告中确定的三大 API 挑战 - 管理多云环境中的 API 复杂性、确保安全策略和优化应用程序性能 - 以及上一节中讨论的 API 攻击类型。 NGINX Plus 有多种用途,包括作为 API 网关,您可以快速路由 API 请求、验证和授权 API 客户端以保护您的 API,以及限制流量速率以保护基于 API 的服务免于过载。

NGINX Plus 提供开箱即用的保护,不仅可以防御OWASP API 安全十大漏洞。 它还会检查格式错误的 cookie、JSON 和 XML、验证允许的文件类型和响应状态代码,并检测用于掩盖攻击的逃避技术。 NGINX Plus API 网关可确保保护 HTTP 或 HTTP/2 API 协议,包括 REST、GraphQL 和 gRPC。

NGINX App Protect WAF提供轻量级、高性能的应用程序和 API 安全性,其范围超出了针对 OWASP API 安全 Top 10 和OWASP(application)Top 10 的基本保护,还可防御超过 7,500 种高级签名、机器人签名和威胁活动。 它支持左移策略和 API 安全性的轻松自动化,以便将安全性即代码集成到 CI/CD 管道中。 在针对 AWS、Azure 和 Cloudflare WAF 进行测试时,发现 NGINX App Protect WAF 可提供强大的应用程序和 API 安全性,同时保持更好的性能和更低的延迟。 欲了解更多详细信息,请参阅此GigaOm 报告。  

NGINX App Protect WAF 嵌入到 NGINX Plus API 网关中,从而减少了 API 流量的跳数。 层间跳数越少,延迟、复杂性和故障点就越少。 这与不与 WAF 集成的典型 API 管理解决方案形成鲜明对比(您必须单独部署 WAF,并且一旦设置完成,API 流量必须分别穿越 WAF 和 API 网关)。 NGINX 的紧密集成意味着高性能,同时又不损害安全性。

GraphQL 和 gRPC 正在崛起

应用程序和 API 开发人员不断寻找新方法来提高灵活性、速度以及易用性和部署性。 根据 Postman 的2022 年 API 状态报告,REST 仍然是当今使用最广泛的 API 协议 (89%),但 GraphQL (28%) 和 gRPC (11%) 的受欢迎程度持续增长。 最终,API 协议的选择高度依赖于应用的目的和最适合您业务的解决方案。 每种协议都有其自身的优势。

为什么使用 GraphQL API?

使用 GraphQL API 的主要好处包括:

  • 适应性——客户端决定数据请求、类型和格式。
  • 效率——没有过度获取,请求是针对创建的模式运行的,并且返回的数据正是(且唯一)所请求的数据。 请求和响应中数据的格式相同,这使得 GraphQL API 快速、可预测且易于扩展。
  • 灵活性——支持十几种语言和平台。

GitHub是 GraphQL 的知名用户之一。 出于可扩展性和灵活性的原因,他们于 2016 年转向了 GraphQL。

为什么使用 gRPC API?

使用 gRPC API 的主要好处包括:

  • 性能——轻量级、紧凑的数据格式最大限度地减少了资源需求,并实现了快速的消息编码和解码
  • 高效——protobufs数据格式通过序列化结构化数据来简化通信
  • 可靠性——需要 HTTP/2 和 TLS/SSL,默认提高安全性

大部分功能来自客户端,而管理和计算则转移到托管资源的远程服务器。gRPC 适用于经常需要一定量数据或处理的用例,例如微服务之间的流量或数据收集,其中请求者(例如物联网设备)需要节省有限的资源。

Netflix是 gRPC API 的知名用户的一个例子。

使用 NGINX App Protect WAF 保护您的 GraphQL API

NGINX App Protect WAF现在除了 REST 和 gRPC API 之外还支持 GraphQL API 。 它通过应用攻击签名、消除恶意漏洞和防御攻击来保护 GraphQL API。 GraphQL 流量在本地进行解析,使 NGINX App Protect WAF 能够根据 GraphQL 语法和配置文件检测违规并应用攻击签名。 对内省查询的可见性使 NGINX App Protect WAF 能够阻止它们,以及阻止响应中检测到的模式。 这种方法有助于检测攻击并在有效载荷的适当部分运行签名,从而有助于减少误报。
 
在此演示中了解 NGINX App Protect WAF 如何保护您的 GraphQL API 免受攻击。

使用 NGINX App Protect WAF 实现 GraphQL API 安全性的优势:

  • 定义安全参数——根据您的组织政策设置 GraphQL 模板和内容配置文件中参数的总长度和值,作为应用程序安全策略的一部分
  • 减少误报——通过精细控制提高攻击预防的准确性,以便更好地检测 GraphQL 请求中的攻击
  • 减轻恶意攻击——定义一个 HTTP 请求中的最大批量查询,以降低恶意攻击的风险
  • 消除 DoS 攻击– 在内容配置文件中配置最大结构深度,以阻止由递归查询引起的 DoS 攻击
  • 限制 API 风险暴露——对自检查询实施约束,以防止黑客了解 API 结构,从而导致违规

使用 NGINX App Protect WAF 保护 gRPC 双向流 API

NGINX App Protect WAF现在除了一元消息类型之外还支持 gRPC 双向流,使您能够保护使用消息流(客户端、服务器或两者)的基于 gRPC 的 API。 无论通信类型如何,这都为 gRPC API 提供了完整的安全性。

NGINX App Protect WAF 通过强制执行您的架构、设置大小限制、阻止未知文件以及防止资源耗尽类型的 DoS 攻击来保护 gRPC API。 您可以将接口定义语言 (IDL) 文件导入 NGINX App Protect WAF,以便它可以强制执行 gRPC 消息的结构和模式并在正确的位置扫描攻击。 这可以准确检测到通过 gRPC 利用应用的尝试,并避免在没有上下文的情况下在错误的地方扫描安全性时可能出现的误报。

在此演示中了解 NGINX App Protect WAF 如何保护您的 gRPC 双向 API 免受攻击。

使用 NGINX App Protect WAF 实现 gRPC API 安全性的好处:

  • 全面的 gRPC 保护– 从一元到双向流,无论通信类型如何,都具有完全的安全性
  • 减少误报——通过执行 gRPC 消息结构和模式提高准确性,从而更好地检测 gRPC 请求中的攻击
  • 阻止恶意攻击——强制确保 gRPC 消息中的每个字段都具有正确的类型和预期内容,并能够阻止未知字段
  • 消除 DoS 攻击– 限制消息大小,以防止资源耗尽类型的 DoS 攻击

SecOps 和 API 开发团队都可以管理和自动化 API 安全

在 Postman 的2022 年 API 状态报告中,接受调查的 37,000 名开发人员和 API 专业人士中有 20% 表示,他们的组织每月至少发生一次 API 事件,导致数据丢失、服务丢失、滥用或不当访问。 相比之下,52% 的受访者每年遭受 API 攻击的次数少于一次,这凸显了将安全性作为 API 安全左移策略的一部分尽早纳入其中的重要性。 由于 API 的发布频率比应用更高,左移策略越来越多地应用于 API 安全。 当组织采用左移文化并将安全性即代码集成到 CI/CD 管道中时,他们会将安全性融入 API 开发的每个阶段,使开发人员保持敏捷并加快部署速度。

该图展示了如何使用 NGINX App Protect WAF、Jenkins 和 Ansible 将安全性作为代码进行左移
图 2: NGINX App Protect WAF 支持将 API 安全集成到 CI/CD 管道中,以实现涵盖整个 API 生命周期的自动保护。

必须针对特定 API 进行保护的关键领域是 API 模式的验证,包括 gRPC IDL 文件和 GraphQL 查询。 每个 API 的模式都是唯一的,并且会随着每个 API 版本而变化。 当自动化 API 模式时,每次更新 API 时,您还需要更新该文件中的配置和代码。 WAF 配置可以以自动化方式部署,以跟上 API 版本的变化。 NGINX App Protect WAF 可以验证模式,验证请求是否符合 API 支持的内容(方法、端点、参数等)。 NGINX App Protect WAF 通过 SecOps 团队创建的声明性策略实现一致的应用程序安全性,API Dev 团队能够管理和部署 API 安全性,以实现更精细控制和灵活性。 如果您希望在混合和多云环境中大规模自动化 API 安全,NGINX App Protect WAF 可以提供帮助。

概括

现代应用程序组合不断增长,并且随着微服务的使用,API 的数量也将进一步增加。 API 安全性复杂且具有挑战性,尤其是对于在混合或多云环境中运营的组织而言。 缺乏 API 安全性可能会带来除金钱成本之外的毁灭性长尾效应。 NGINX App Protect WAF 提供全面的 API 安全性,包括对您的 REST、GraphQL 和 gRPC API 的保护,并帮助您的 SecOps 和 API 团队在整个 API 生命周期和分布式环境中左移并自动化安全性。

立即试用 NGINX App Protect WAF,享受 30 天免费试用期

其他资源

博客: 使用 NGINX App Protect WAF 保护您的 API 网关
电子书: 现代应用程序和 API 安全
电子书: 掌握 API 架构(O'Reilly 著)
数据表: NGINX 应用保护 WAF


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”