API 蔓延问题出现的六大迹象
原文作者:Andrew Stiefel - F5 产品营销经理转载来源: The New Stack
NGINX 唯一中文官方社区,前往 nginx.org.cn。
据行业分析机构 451 Group 指出,目前企业拥有的 API 的平均数量超过 15,000 个。显然,这一数字远高于平台运营团队可以用电子表格跟踪的 API 的平均数量。即使将 API 跟踪的责任分配给各个业务部门,考虑到 API 数量的惊人的增长速度,这仍然是一项艰巨的任务。
2021 年,F5 工程师和技术专家 Rajesh Narayanan 为这个问题创造了一个新词:API 蔓延(API sprawl)。“API 蔓延”一词的含义正如其名——即世界各地的企业中的API数量的加速增长,而这也给 API 的管理和防护带来了巨大挑战。这一问题有多严重?据 Narayan 估计,到 2030 年,全球部署和运行的 API 将超过 10 亿个。
现代应用在开发方式方面的变化加速了 API 的蔓延。微服务的兴起、用于系统内部通信的 API 的不断增加,以及多云和混合云架构的快速增加,都使得我们需要更多地使用 API 在应用之间进行通信。例如,作为容器编排的事实标准的 Kubernetes 就是使用 API 来实现所有的内部通信的。新的基础架构类型(如 severless 架构)也意味着 API 可以在几乎所有环境中运行。同时还有更多种类的 API 技术需要管理——REST、GraphQL 和 gRPC 都已被广泛使用,而更多的 API 查询协议也将很快出现。
更糟糕的是,网络罪犯绝对会乐于见到 API 蔓延。他们越来越多地将 API 作为他们精确攻击的目标,原因是 API 通常没有得到仔细的管理,而且默认配置的访问权限相对开放。
为了消除这种问题,必须以程序化、规模化的解决方案来应对 API 管理、发现和防护方面的挑战。不过在您能够有效应对 API 蔓延之前,您需要先了解该问题在您的组织机构中的严重程度。以下六个明显迹象表明您遇到了 API 蔓延问题。
1、没有最近更新的 API 清单
API 蔓延的典型症状是不知道在所有环境中都运行着哪些 API,这通常是由于松散的 API 管理策略导致的——在这种策略下,团队无需注册仅在内部使用的 API(即所谓的“影子 API”)。
您的首要任务是准确盘点现有的 API。但由于 API 的添加和弃用通常极为频繁,想要“准确盘点”就需要不断地进行统计。合理的解决方案是通过编程式的方式进行盘点并持续进行 API 发现,类似于网络扫描和资产发现。
从理论上讲,结构化的 API 审批流程也有所助益。但在现实中,对于 API 创建和版本管理等任务,不断“左移”的企业会想要缩减繁重的审批流程。对于这些企业来说,将 API 清单盘点作为 CI/CD 的一部分来构建流程通常是一种很好的方法,尤其是当 API 用于微服务和其他更现代的应用架构时。
2、不知道每个 API 分别在何处运行
在现代基础架构环境中,仅仅知道 API 的存在还远远不够——还需要知道每个 API 的位置。端点可能会在不同基础架构形式的容器间互为镜像——横跨多个云平台、在混合云中,或者在像是 serverless 这样的多种服务中。
安全团队需要掌握 API 的位置信息,从而正确配置策略和防护措施并运行 API 安全测试。如果您需要在多个环境中运行 API,这也会影响您对于 API 网关和其他 API 流量管理方式的选择。理想情况下,您会希望有一个适用全局的 API 网关解决方案,以便能够在不同环境中实现具有一致性的 API 流量管理和防护。
3、无法轻松地识别 API 的所有者或负责人
如果您不知道 API 由谁负责,当 API 出现问题时,就不知道该找谁处理。通常情况下,当构建 API 的人或团队调岗或者离职时,那些对于平稳运营来说不可或缺的 API 就会成为“孤儿”。有时,API 所有权的转移非常明确——但更常见的情况是,这个过程会被跳过或通过非正式手续完成。
为每个 API 分配所有权是清单盘点过程的一部分,它至关重要,因为这样可以确立问责制,帮助责任人合理地管理和防护他们负责的 API。
4、多个 API 在执行着类似或重复任务
当多个团队有相似但不完全相同的需求,通常会发生任务重合的情况,而且有人会说:“我们会通过构建自己的 API 来满足我们的需求,这样,我们就可以掌控自己的命运!”
但是,拥有多个类似 API 会增加不必要的技术债务。因此,衡量有多少应用或服务需要使用 API,并将其作为关键性能指标 (KPI) 之一非常重要。跟踪这些指标有助于最大程度地提高每个 API 的可重用性。整合 API 的另一种方法是转换到像是 GraphQL 一类的更灵活的形式。
5、文档滞后超过 2 个版本
文档对于经验传递、新员工入职培训和组织弹性至关重要。可惜的是,编写和维护文档通常是工程师最痛恨的事情。
过时的 API 文档通常表明 API 正在蔓延——因为这说明团队创建和更新 API 的速度太快,所以没时间更新文档——或者他们可以看似合理地这么解释他们不更新文档的行为。在最坏的情况下,过时的文档标示着其中提到的 API 是无人维护的孤儿。
庆幸的是,API 往往有清晰定义的结构,使其易于理解。良好的 API 管理解决方案通常包含一个工具,用于帮助开发人员根据 API 规范自动生成文档。最常见的例子之一是 OpenAPI 规范。它使用标准格式来描述 API,这样,人类和计算机就可以在无需访问源代码或其他文档的前提下发现和理解 API 的功能。
6、项目由于 API 安全防护而延误
有好消息?安全团队会在发布前检查所有 API。坏消息呢?由于 API 负责人在开发过程中没有遵循 API 安全最佳实践,或者没有进行充分的测试,因此未通过检查,代码被送回返工。
还有更好的消息?制定一套一致的通用规则和最佳实践来帮助开发人员实现绝大部分的要求,并不是那么难的事情——基本方法包括了实施速率限制、加密外部流量,以及要求对密钥再生进行重新授权等。大多数企业还可以使用高级 Web 应用防火墙 (WAF) 或其他工具对 API 网关实施额外的保护,以抵御 OWASP 列出的 10 种最常见 API 攻击。
结论:避免蔓延是一场永无止境的斗争
以上六个迹象只是 API 蔓延现象的一部分预警。我们要明确一点——API 蔓延是开发人员自主性和微服务 DIY 思维的自然产物。借助现代开发工具和像 GitHub Copilot 这样的代码自动化能力,构建新的 API 正变得越来越轻松可行。
应对 API 蔓延的工作没有止境。部署 API 管理解决方案和 API 网关可以发挥强大的助推作用——如果开发人员不针对 API 使用 APIM(API Management,即 API 管理)解决方案,网关可能会关闭他们的 API——这一要求很苛刻,但对安全防护来说很必要。
幸运的是,应对蔓延所采取的措施大多与常见的 API 管理方法一致。随着时间的推移,这些措施可以消除技术债务,并避免在开发过程后期或发布后通过补充的安全措施修复 API,最终让开发速度得到提高。
如果说 API 是企业的生命线,则 API 蔓延是对企业健康状况的最大威胁之一。谨慎且主动的 API 蔓延控制措施会带来巨大的回报,并且最终会提高开发人员的满意程度。
NGINX 唯一中文官方社区,前往 nginx.org.cn。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Rainbond 助力城建智控,从传统开发到敏捷开发转型
在现代企业的数字化转型过程中,如何高效管理和快速部署业务应用已经成为各行业的核心挑战。尤其是在智慧工地和办公自动化(OA)这样的关键业务场景中,企业不仅需要面对频繁的系统更新,还要确保系统的稳定性与高效运作。然而,传统的运维方式往往繁琐且容易出错,手动操作不仅耗费大量时间,还极大增加了运维成本。 为了应对这些挑战,越来越多的企业开始寻求云原生平台的支持,希望通过自动化的流程来简化应用的部署与管理。**北京城建智控科技股份有限公司(以下简称:城建智控)**便面临着类似的困境,他们发现,传统的手动部署方式已经无法满足业务的需求,尤其是在没有专职运维团队的情况下,开发人员的工作负担不断加重。在这种背景下,城建智控引入了 Rainbond 云原生应用管理平台,希望通过其自动化的源码部署能力和友好的操作界面,提升业务的灵活性与运维效率。 痛点 手动部署流程复杂 在引入 Rainbond 之前,我们的服务发布流程极其繁琐,每次服务需要打补丁时,开发人员必须手动打包 jar 包,并将其上传至服务器。之后还需手动停启服务,整个过程不仅耗时,且容易因为操作失误导致服务中断,影响业务的正常运作。 原有 P...
- 下一篇
eBPF 零侵扰分布式追踪 3 分钟锁定 Java 程序 I/O 线程阻塞
摘要: I/O 线程阻塞是Java 程序经常出现的问题之一,此类故障发生时 Java 程序的请求、响应在 I/O 线程向操作系统 Socket Buffer 读/写过程中发生阻塞,由于在业务代码插桩无法观测到 I/O 线程的工作情况和性能表现,因而导致故障非常隐蔽和难以诊断定位。通过本篇案例您将了解到,某银行的开发工程师如何使用 eBPF 技术带来的零侵扰追踪能力,在某次分布式核心交易系统上线信创平台的非功能测试(性能压测)故障诊断中,用 3 分钟时间锁定 Java 程序 I/O 线程阻塞。 0x0: 故障背景 近期,某银行 的分布式核心交易系统 XX 中心业务按计划即将上线华为信创云 ,但在上线前的非功能测试(性能压测)过程中,业务响应时延不定时劣化,原因不明。 XX 中心的业务程序使用 Java 语言开发(SOFARPC 框架),采用 Netty 作为网络框架,该业务流程涉及 Client、Gateway、App-1、App-2,端到端业务访问路径如下: 1)Client 使用 SOFARPC 协议访问 Gateway 的接口; 2)Gateway 经过七层负载均衡将 SOFARP...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)