如何编写API文档:14条基本准则
使用API安全的基本工具和最佳实践预防API攻击
近年来,API 的激增极大地改变了企业的运营方式。API 使不同的应用程序能够相互通信和交换数据,从而实现更高效、更有效的业务流程和软件开发。
然而,随着 API 的使用增加,API 蔓延的风险也随之而来,即 API 是在分布式团队和架构中创建和部署的,通常没有适当的监督和管理。这可能会给企业带来一系列新的安全风险,因为每个 API 都代表着攻击者未经授权访问敏感数据和系统的潜在入口点。
API 优先软件开发的兴起
API 蔓延的主要驱动因素之一是微服务的激增。微服务架构将大型应用程序分解为较小的单个应用程序,这些应用程序通过 API 相互通信。这将复杂的应用程序分解为可由各个团队管理的独立部分,并可彼此独立扩展以满足流量需求。
微服务为开发人员提供了许多优势,包括更高的灵活性和可扩展性。然而,这些好处也伴随着一些代价,包括额外的复杂性。因此,许多企业采用API 优先的方法来构建微服务。在这种策略中,应用程序和服务的设计过程从 API 契约开始,该契约概述了 API 的工作方式,直至请求和响应的格式。
随着 API 的激增,攻击面也随之扩大
如果未能认真对待 API 安全性(尤其是在设计和部署期间),则 API 优先软件开发的优势很容易受到破坏。从最基本的层面上讲,API 越多,攻击面就越大。虽然 API 在现代软件开发中发挥着至关重要的作用,但同时也变得越来越容易被利用。
2018 年,Gartner 预测,到 2022 年,API 将成为应用程序最常见的攻击媒介。如果非要说的话,他们对延迟时间的预测过于乐观了。影响数百万用户的大型公司 API 泄露事件早已发生,而且只会变得更加普遍:
- 2018 年,Facebook 报告称,攻击者利用该公司的开发人员 API 获取与用户个人资料页面相关的个人身份信息 (PII),包括姓名、性别和家乡,至少5000 万用户的数据面临风险。
- 2019年,LinkedIn 报告称,一名黑客利用 API 的数据抓取技术收集了超过7 亿用户的信息,并在暗网上出售。
- 2021 年,Peloton 维护的 API允许恶意行为者请求 PII,包括年龄、性别、城市、体重和出生日期。
- 2022 年,Twitter 解决了 API 漏洞,导致540 万个用户账户的数据泄露,包括电话号码和电子邮件地址。
- 2023 年,T-Mobile 报告称 API 漏洞导致3700 万客户的数据被盗,包括姓名、电子邮件、地址、电话号码、出生日期等。
这些攻击的广度和种类揭示了安全和工程领导者面临的挑战。一些攻击利用了错误地暴露在互联网上的 API。其他攻击使用错误地暴露在代码存储库中的 API 密钥或其他身份验证方法。或者攻击者通过 VPN 漏洞访问内部环境并使用内部 API 窃取数据。
阻止 API 攻击需要正确的策略和工具
防范 API 威胁的最常见方法是将传统的 Web 应用程序安全策略与现代 API 安全技术相结合。面对当今各种 API 威胁,传统策略往往显得力不从心。自动 API 发现和 API 对比测试等现代技术试图弥补这些差距。
对于企业来说,至关重要的是采取正确的防护措施(实施全局控制和安全策略来保护已部署的应用程序和 API)和向左移动(在代码中构建安全性以在应用程序和 API 投入生产之前消除漏洞)。这两种策略都无法单独提供全面的 API 安全性,因此防止违规的关键是采取涵盖三类 API 安全实践的整体方法:
- API 安全态势管理 ——提供对 API 集合安全状态的可见性,包括暴露的数据类型和请求方法
- API 安全测试——评估 API 生命周期中关键点的安全性,以识别潜在漏洞
- API 运行时保护 ——检测并阻止恶意请求在运行期间到达 API
通过将正确的策略与正确的工具相结合,组织可以更好地保护其 API 免受攻击并确保其软件系统的安全。让我们来看看平台工程领导者需要实施哪些重要功能和工具来保护整个生命周期的 API。
什么是 API 安全态势管理?
API 安全态势管理可让您了解 API 公开的数量、类型、位置和数据。这些信息可帮助您了解与每个 API 相关的风险,以便您采取适当的措施来保护它。
主要功能:
- 自动 API 发现– 自动且持续的 API 发现,以全面了解环境中部署的 API
- API 特性——按协议或架构(REST、GraphQL、SOAP 等)识别和分类 API,并映射敏感数据流以了解您的风险敞口
- API 编目——维护完整的 API 列表,以鼓励软件团队重复使用现有 API,并帮助 SecOps 团队构建完整的安全态势视图
代表性技术:
- Web 应用程序和 API 保护 (WAAP) – 利用 API 基础设施中的全球特权地位来分析进入和离开环境的流量、识别 API 并构建风险敞口视图
- 内联或基于代理的发现——将代理附加到现有的 API 网关、负载均衡器或 Kubernetes Ingress 控制器,以镜像和分析 API 流量
- 带外或无代理发现——使用流量镜像或导出的日志和指标来分析 API 流量;通常对 API 和威胁的可见性低于其他技术
- 域爬虫——API 安全提供商可能会提供爬虫来探测你的域中是否存在暴露的 API 端点,这些端点允许流量绕过可以实施安全策略的 API 网关和负载均衡器
重要的是要记住,没有任何技术可以可靠地找到架构中的每个 API。大多数发现技术依赖于现有负载均衡器、API 网关和 Ingress 控制器提供的可见性,并且不太可能捕获绕过这些架构组件的错误配置。
最终,代码审查和遵循 API 优先最佳实践可以提供更有效的长期预防。但自动化 API 发现工具仍然有助于快速构建安全态势视图并捕获可能不受管理和不安全的 API。
什么是 API 安全测试?
虽然 API 安全态势管理与整个企业的安全有关,但 API 安全测试则主要针对单个 API。从最基本的方面来说,API 安全测试通过测试 API 运行时(即在 API 后面运行的应用程序)来帮助识别和预防漏洞及其相关风险。它有助于确保满足基本安全要求,包括身份验证、授权、速率限制和加密的条件。
主要功能:
- API 契约测试– 使用 API 的 OpenAPI 规范,通过比较客户端请求和服务器响应来验证其是否按设计执行。它使用“由内而外”的方法来发现 API 在部署之前是否存在漏洞。
- 动态应用程序安全测试 (DAST) – 模拟针对 API 运行时的攻击以查找漏洞,像恶意用户一样从“外部”评估 API。
代表性技术:
- API 合同测试软件——用于运行测试的专用工具,可分段 API 请求和响应,以验证客户端和服务器行为是否符合 API 合同
- 应用程序安全测试 (AST) 软件– 通过模拟攻击来分析和测试应用程序(包括 API)的工具
有开源契约测试工具,也有专门的 API 安全供应商提供的商业产品。应用程序安全测试 (AST) 市场已经存在了几十年,越来越多的供应商提供专门的 API 扫描和测试工具。
什么是 API 运行时保护?
API 运行时保护是指在 API 运行和管理请求时对其进行保护。它优先考虑在平台基础架构以及 API 本身的代码中构建安全性。目标是识别和阻止部署后出现的恶意 API 请求。
主要功能:
- 访问控制– 强制实施身份验证 (authN) 和授权 (authZ) 策略
- 网络安全——加密并保护网络通信
- 应用程序保护——保护 API 运行时免受恶意 API 请求和攻击
- 实时监控——可视化、跟踪和缓解跨 API 基础设施的攻击
代表性技术:
- API 网关——应用并执行安全策略,包括身份验证、授权、速率限制、访问控制列表和加密
- Web 应用程序防火墙 (WAF) – 通过根据攻击特征主动监控和过滤流量,保护 API 和应用程序免受复杂的第 7 层攻击
- 身份提供商 (IdP) – 存储和验证用户身份的服务,通常与单点登录 (SSO) 提供商合作对用户进行身份验证
并非所有 API 网关和 WAF/WAAP 都生来平等。某些服务(尤其是云和其他平台上提供的原生解决方案)缺乏多云和混合架构所需的全球可视性和标准化。
API 安全最佳实践
鉴于保护 API 的重要性,以有组织的方式处理 API 安全问题至关重要。平台工程和安全领导者必须共同努力,解决整个 API 生命周期的安全要求。正如我们之前所探讨的,这大致涉及三个主要实践领域:API 安全态势管理、API 安全测试和 API 运行时保护。换句话说,您需要专注于了解您有多少个 API、如何测试它们是否存在错误以及如何在代码中构建安全性。
结论
与所有网络安全一样,API 安全是一个持续的过程,需要与许多利益相关者合作,包括网络工程师、安全运营负责人、平台工程负责人和软件开发工程师。好消息是,如何保护 API 并不是什么难事。
大多数组织已经采取措施来对抗众所周知的攻击,例如跨站点脚本、注入、分布式拒绝服务以及其他可以针对 API 的攻击。上述许多最佳实践对于经验丰富的安全专业人员来说可能非常熟悉。无论您的组织运营多少个 API,您的目标都是建立可靠的 API 安全策略并随着时间的推移主动管理它们。
文章来源:Prevent API Attacks with Essential Tools and Best Practices for API Security