概念回顾:API 管理与 API 网关

原创
2023/11/22 09:49
阅读数 50

原文作者:NGINX

原文链接:概念回顾:API 管理与 API 网关

转载来源:NGINX 开源社区


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

随着微服务架构的兴起,API 的数量急剧增加,由此也产生了一系列的挑战与解决方案。阅读本文,了解与 API 相关的基础概念:API 优先、API 蔓延、API 管理、API 网关以及 API 开发者体验。

什么是 API 优先?

API 优先”方法是一种开发模型,其中应用的设计从 API 开始,然后再编写代码。API 不是事后的补充,而是必需的、确定的产品。整个开发过程从 API 规范开始,应用首先被概念化为 API。这与传统的“代码优先”方法形成了鲜明对比。在传统的“编码优先”方法中,单体代码优先,而 API 设计则要晚一些。

API 优先策略特别适合于微服务架构,因为它可确保应用生态系统以模块化、可复用的系统形式开始搭建。及早关注 API 能够引起对于 API 请求和数据的结构的重视,便于 API 提供开发人员最需要的功能,避免将开发人员的时间浪费在后被证实为不必要的功能上。 

为何采用 API 优先模型?

当一家公司采用 API 优先模型(进而成为“API 优先公司”)时,它会优先考虑 API(包括内部和外部),并认识到 API 生命周期对其业务的影响。对于企业来说,API 优先通常意味着更快的上市速度,因为更易于更新和更改后端服务。 

除了提高工作效率之外,采用 API 优先方法还有助于开发出更强大的软件。开发人员可以专注于设计,因为团队不必从零开始,能够跨项目重复使用其 API 和代码。由于在编写代码之前就已经解决了大部分问题,因此减轻了工作,进而节省成本。 

API 优先模型还能够简化 API 治理,为运维团队提供更高的控制力和可观测性。对 API 具有更高的控制力和可视性有助于团队了解 API 的当前状态和未来潜力。

API 优先的安全风险

API 通常是开放的,这赋予了它们强大的功能,但也意味着任何开发人员都能访问 API。遗憾的是,并非每个开发人员都心思纯正。 

在创建成功的 API 优先模型时,必须集中定义 API 安全防护策略,并将安全防护融入整个 API 生命周期中。API 优先模型强调以安全防护为中心的理念,因此比以前以代码为中心的模型具有更强大的安全防护边界。 

什么是 API 蔓延?

API 蔓延(API Sprawl)”描述了随着企业数字化转型而出现的两个相互交织的问题:API 数量的激增,以及 API 跨多个架构和团队的散乱分布。 

许多因素会导致 API 蔓延。其中一些最常见的因素包括: 

  • 混合基础架构 —— 当今 81% 的企业跨三种或更多架构运营,包括公有云、本地数据中心和边缘基础架构。 

  • 微服务架构 —— 随着新服务的不断上线,微服务架构的日益普及导致 API 端点激增。 

  • 持续的软件部署 —— 开发人员可以在短时间内快速开发出数十个 API 或某个 API 的多个版本。 

  • 被遗弃的 API —— 当开发人员转而支持和处理其他项目时,他们会停止管理和维护之前创建的 API。 

为何 API 蔓延是个问题?

API 蔓延给企业带来了巨大的运营和安全防护挑战。随着跨多个团队和环境的 API 端点的激增,API 的防护和管理成为一项严峻的挑战。对于企业而言,API 蔓延通常会带来隐性成本,例如降低开发人员的工作效率、增加返工、减慢审查速度,这类成本很难衡量,等察觉时往往为时已晚。 

API 蔓延的一些主要挑战包括: 

  • 缺乏可视性 —— 在混合架构中,很难通过统一视图查看 API 流量和配置。 

  • 缺乏明确的信源 —— 开发人员难以查找 API 和最新文档。 

  • 可靠性下降 —— 错误配置变得更加普遍,容易造成业务中断。 

  • 安全威胁加剧 —— 不安全的 API 端点很容易成为攻击目标。 

如欲进一步了解 API 蔓延以及它为何构成重大威胁,请参阅我们的博文《应对 API 蔓延的五种方法(以及为何应当关注 API 蔓延问题)》。 

什么是 API 管理?

API 管理”是指企业用于监督和发布 API 的工具和流程。在某些环境中,API 管理特指在生产环境中管理 API 的控制平面,它可定义策略、推送配置、生成报告和警报,并提供针对所有 API 网关的可视性。 

如今,大多数现代应用均使用 API 构建而成。API 是一种软件接口,支持两个应用之间相互通信,并允许产品和服务之间以请求(request)和响应(response)的形式进行交互。 

API 管理解决方案提供了一些关键工具和功能,可简化开发团队之间发布和共享 API 的流程。以下是有助于实现强大 API 管理的组件和用例。

基础架构

  • API 管理器 — 管理平面(有时称为“API 管理器”),提供了单个接口来全面管理 API 生命周期,包括发布 API、监控 API 性能和应用访问控制策略。 

  • API 开发人员门户 — 开发人员门户是一个在线平台,您可以在此发布有助于 API 消费者快速入门的资源,例如外部 API 的目录、完备的文档及示例代码。开发人员门户网站还允许第三方开发人员注册其应用并获取 API 和 JWT 密钥。 

  • API 网关 — 可保护并处理后端和 API 消费者之间的流量。API 网关功能包括验证 API 调用,将请求路由到相应的后端,实施速率限制以防止系统过载或缓解 DDoS 攻击,卸载 SSL/TLS 流量以提高性能,以及处理错误和异常。 

用例

  • API 分析 — API 管理解决方案通过仪表盘和报告等可视化功能提供关键洞察。API 分析可以帮助 API 所有者深入了解各个运维方面,如 API 指标、使用情况、流量趋势,以及哪些开发人员是主要的 API 消费者。 

  • API 安全防护 — 安全防护是 API 管理的一个重要方面:如果没有强大的安全防护,任何人都能访问您的 API 和数据,并通过调用不安全的 API 来实施恶意行为。API 安全防护包括身份验证、授权、基于角色的访问控制 (RBAC) 和速率限制。 

  • API 治理 — 指在 API 和 API 网关中应用规则和安全防护。实施灵活的 API 治理模型有助于平衡全局策略,如日志记录、错误响应代码和 TLS 配置。 

  • 定义和发布 — API 管理解决方案提供了一个直观的界面,用于定义有意义的 API,包括基本路径 (URL)、资源和端点 (endpoint)。 

API 管理的主要目标是帮助企业监控 API 活动,以便根据当前的开发人员或应用要求快速响应任何变更。

在 API 管理中,重点是管理单个 API 的生命周期(设计、发布、操作、监控和弃用)。

什么是 API 网关? 

API 网关接受来自客户端的请求(特别是 API 调用),并将其路由到相应的微服务。它能够保护并处理后端服务和 API 消费者之间的重要流量,从而降低发生漏洞、停机和性能低下的风险。 

如今,大多数现代应用均使用 API 构建而成。API 是一种软件接口,支持两个应用之间相互通信,并允许产品和服务之间以请求和响应的形式进行交互。随着 API 变得越来越普遍并分布在微服务架构中,需要额外的基础架构来确保可扩展性和安全防护。 

为何使用 API 网关?

使用 API 网关意味着您可以维护单个 API 域(例如 api.example.com)。借助 API 网关,您能够为所有客户端提供一个入口点,以便根据用户请求将请求路由到不同版本的 API。API 网关支持您通过单个请求调用多个微服务并汇总结果,从而提供最佳响应。

API 网关的基本功能 

API 网关既可用于单体应用,也可用于基于微服务的应用。API 网关具有以下功能,包括: 

  • 对进行 API 调用的请求者进行身份验证 (AuthN) 

  • 验证请求者是否有权发出请求 (AuthZ) 

  • 将请求路由到相应的后端 

  • 实施速率限制以防止系统过载 

  • 实施速率限制来缓解 DDoS 攻击 

  • 卸载 SSL/TLS 流量以提高性能 

  • 处理错误和异常 

API 网关与 API 管理

“API 网关”和“API 管理”有时可以互换使用,但实际上并非同义词。API 网关是位于客户端和 API 端点之间的数据平面。它是负责路由、策略和安全的单个代理服务器。API 管理是指在生产环境中管理 API 的控制平面。它可定义策略、推送配置、生成报告和警报,并提供针对所有 API 网关的可视性。

理想情况下,API 管理平台独立于基础架构,支持您通过最适合用例的方式在各种环境中(例如自有数据中心、云平台和边缘节点)自由地部署 API 网关。 

将 API 网关用于微服务

在微服务架构中,单个 API 可能具有数百个端点,单个应用可能包含多个微服务,每个微服务都通过 API 连接。由于每个微服务会暴露大量 API 端点,因此潜在的攻击面远远大于单体应用。 

将 API 网关用于微服务能够简化客户端和 API 之间的访问与通信,从而降低风险。但 API 网关仍然封装 API,这些 API 通常是开放的。API 会暴露连接所需的数据,而且还可能暴露敏感数据。

API 安全性

开放式 Web 应用安全项目 (OWASP) 指出了 OWASP 十大 API 安全风险项目中最常见的漏洞: 

API1.失效的对象级授权 

API2.失效的用户身份验证 

API3.过度的数据暴露 

API4.缺乏资源和速率限制 

API5.失效的功能级授权 

API6.批量赋值 

API7.安全防护配置错误 

API8.注入 

API9.资产管理不当 

API10.日志记录和监控不足 

为了保护 API 免受这些肆虐的新攻击,保护 API 网关变得至关重要。如欲进一步了解保护 API 网关的重要性,请参阅我们的博文《使用 NGINX App Protect WAF 保护 API 网关》

API 治理

API 治理是指在 API 和 API 网关中应用规则和安全防护。实施灵活的 API 治理模型有助于平衡全局策略,如日志记录、错误响应代码和 TLS 配置。 

对于任何实施 API 优先策略的组织,特别是采用数千个 API 的大型组织,通过 API 治理确保一致性可以有效应对潜在的 API 蔓延。虽然 API 治理曾被认为可能会拖慢开发速度,但当现在需要大规模管理 API 时,实施 API 治理就很有必要。 

API 开发人员体验是什么?

API 开发人员体验是指开发人员在与 API 交互时产生的整体感知和情感状态。它涉及基础架构、工具、流程、支持以及其他接触点,在将 API 集成到应用中时,这些元素共同为开发人员提供一种愉悦、流畅的体验。 

想要在平台上的每个接触点都为开发人员提供优化后的体验,“API 开发人员体验”就是这其中的一个方面。通过减少开发人员之间的摩擦,软件工程领导者可以提高内部团队开发人员的工作效率,并促进外部开发人员加速采用其 API 和工具。 

在设计 API 时,需要询问以下基本问题: 

  • 功能 — API 要做什么? 

  • 可用性 — API 多么易于使用? 

  • 体验 — API 使用体验如何? 

在以开发人员为中心的世界中,必须制定一套涵盖 API 生命周期各个阶段的 API 策略,并努力创造积极的体验。在设计 API 开发人员体验时,确定与 API 交互的人员、定义 API 如何运行、优化其可用性以及增强 API 的整体感受都是重要的考虑因素。 

如欲进一步了解 API 开发人员体验,请参阅我们的博文《API 开发人员体验为何至关重要》


NGINX 唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部