什么是 API 安全检查清单?

此 API 安全检查清单不仅是 API 安全最佳实践的简单集合,它还基于 API 生命周期。其内容涵盖从规划、开发和测试,到运行和保护的所有环节。它本质上一份指南,旨在为您的 API 创建安全的软件开发生命周期 (SDLC) 管理流程。

当今企业纷纷迈向以云为中心的架构,数字化程度越来越高,其 API(应用程序编程接口)的使用范围和规模不断扩大,价值也随之增加。现在,API:

  • 运行在应用程序与服务的核心位置,向您的客户和合作伙伴提供服务,包括最新的 AI 创新
  • 嵌入整个云环境中,无论是在开发人员使用的服务中,还是在工程师处理的工作负载中,都能发现它们的身影
  • 本身即代表着收入来源,可帮助您发展业务并构建开发人员生态系统

不过,有 84% 的 IT 和安全专业人员遇到过 API 安全事件,如果您也遇到了,那么相信您对 API 风险与日俱增的问题已有亲身体会。API 暴露在外或错误配置的情况很普遍,这些 API 没有得到妥善保护,很容易受到攻击。此外,API 还包含有关如何访问它们以及获取其背后数据的指令。这是黑客的梦寐以求的东西。不能指望“通过隐匿来实现安全”。另外,API 往往能够促进企业中各个独立团队之间的协作。即便这些团队主观上有意愿进行安全协同,也往往会力不从心。大量“不受管控”的 API 进一步加剧了安全防护的复杂性。甚至于很多企业往往都没有摸清他们的所有 API,导致这些 API 处于不受管理的境地。这些休眠(或者僵尸)API 成为了主要的攻击媒介。

API 安全的风险很高。对 API 的攻击会损害企业的收入、恢复能力以及合规性。很多企业尚未采取适当的控制措施和功能来防范 API 攻击。诚然,很多公司现有的技术栈中会有一些 API 工具,包括 API 网关和 Web 应用程序防火墙。尽管这些工具具备一定的防护能力,但它们并非设计用来提供充分的监测功能、实时安全性和持续测试功能,无法抵御现代化 API 攻击。

出于这些原因,我们制定了此 API 安全检查清单,旨在为保护 API 提供一种更严格、更系统的方法。在每个生命周期阶段,有四种推荐的控制措施可实现稳健的 API 安全态势。此安全 SDLC 管理流程的各个阶段如下图所示:

规划

  • 角色和职责(治理)
  • 策略、标准和规范
  • 安全指标
  • 生命周期管理

开发

  • 开发人员培训
  • 开发人员环境(IDE、Repos)
  • 文档
  • 缺陷跟踪和解决方法

测试

  • 源代码测试(静态和动态)
  • 渗透测试
  • 合规性审核
  • 变更与发布管理

运行

  • API 清单
  • 敏感数据清单
  • 漏洞识别
  • 配置管理

保护

  • 日志或流量收集
  • 威胁检测与告警
  • 敏感数据移动
  • 阻止和补救

规划

API 安全防护工作早在任何人开始编写代码之前就已经开始了。在规划阶段,仔细考虑角色、职责和策略等治理问题至关重要。规划阶段也是确定安全指标以及生命周期管理流程的最佳时机。

API 规划安全检查清单:

  • 治理、角色和职责。您是否针对保障 API 资产安全明确界定了相关的角色和职责?这包括开发人员和安全工程师在执行层面的职责,以及处理风险决策和策略监督的管理监督职责。
  • 策略、标准和规范。您是否已建立起一套完整的策略、标准和 API 规范体系,其中明确了 API 在安全设计、开发、测试和运行方面的最低要求?
  • 安全指标。您是否建立了一套明确的 API 安全风险指标,以便衡量和管理与 API 相关的风险?您的利益相关者可使用这些 API 风险指标作为反馈环,以持续改进 API 安全风险管理。
  • 生命周期管理。您的企业是否将 API 作为软件资产进行管理,并在其整个生命周期内为其明确界定了所有权?最佳实践是重点关注初始部署、持续变更管理和资产停用。

开发

在开发过程中,规划阶段制定的策略将落地实施。开发人员负责与其他利益相关者团体进行合作,以创建安全的 API。

API 开发安全检查清单:

  • 培训。您是否对 API 开发人员和其他承担 API 管理职责(例如,网关、安全运营)的人员进行了与其角色相关的 API 安全方面的培训?
  • 开发人员环境(例如,IDE、Repos)。您的 API 源代码是否是在经过批准的托管源代码库中开发和管理的?开发人员是否在利用托管或经过批准的开发人员环境?
  • 文档。是否对 API 进行了准确的记录,并且已参照相关规范/标准对其进行了合规性评估?API 架构发生更改时,API 文档是否进行了相应更新?相关文档是否可供独立审查和测试/验证?
  • 缺陷跟踪和解决方法。是否为与安全相关的代码缺陷或漏洞花费了优先级并对其进行持续跟踪,直至问题得到解决?

测试

API 开发完毕后,必须对它们进行全面、严格的测试。与应用程序安全测试检查清单类似,以下内容概述了要在 API 测试计划中实施的安全控制措施。

API 测试安全检查清单:

  • 源代码测试。在将 API 源代码发布到生产环境之前,您是否对其进行了静态应用程序安全测试 (SAST) 和动态应用程序安全测试 (DAST)?
  • 渗透测试。在迁移到生产环境之前,您的 API 端点是否在尽可能模拟生产环境 API 管理、网络和策略变量的条件下进行了渗透测试?
  • 合规性审核。在迁移到生产环境之前,是否对您的 API 进行了评估以确保其符合标准和规范(例如,GDPR、PCI 合规性)?此过程必须遵守架构/网络布置和配置(例如,WAF 保护、网络布置)方面的相关规范。
  • 变更与发布管理。您是否根据明确定义的软件或 IT 变更策略来部署或更改 API?在理想情况下,变更应准确反映在软件资产清单中。

开发和测试中的 API 安全措施

身份验证和访问控制:实施强有力的身份验证机制(例如 OAuth 和 API 密钥),以便在开发和测试期间保障 API 端点的安全。确保实施访问控制策略,以防止敏感数据遭受未经授权的访问。

速率限制:在测试阶段,实施速率限制,以保护 API 免受滥用和潜在的 DDoS 攻击。速率限制有助于防止产生可能使系统不堪重负并导致拒绝服务的过多请求。

SQL 注入和验证:对 SQL 注入等常见 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 安全解决方案。

1.API 发现。企业存在未被发现的 API 这种情况很常见。大多数企业几乎不具备对大部分 API 流量进行监测的能力,往往是因为他们认为其所有 API 都会通过 API 网关路由。但事实并非如此。如果没有完整、准确的清单,您的企业将会面临各种风险。所需的核心功能:

  • 无论配置或类型如何,找到您的所有 API 并将其加入清单中
  • 检测休眠、遗留和僵尸 API
  • 识别被遗忘、被忽视或未知的影子域名
  • 消除监控盲点,发现潜在攻击路径

2.API 态势管理。在有完整 API 清单的情况下,了解哪些类型的数据会流经您的 API 以及这会如何影响您遵从监管要求的能力至关重要。API 态势管理让您可以全面了解流量、代码和配置以评估贵企业的 API 安全态势。所需的核心功能:

  • 自动扫描基础架构,从而发现配置错误和隐藏的风险
  • 创建自定义工作流,从而通知主要利益相关者有关漏洞的情况
  • 确定哪些 API 和内部用户能够访问敏感数据
  • 为检测到的问题分配严重程度评级,从而确定补救工作的优先级

3.API 运行时安全。毫无疑问,您熟悉“假设存在入侵”的概念。专门针对 API 的入侵和攻击同样不可避免。对于生产环境中存在的所有 API 来说,您需要能够实时检测和阻止攻击。所需的核心功能:

  • 监控数据篡改和泄露、策略违反情况、可疑行为以及 API 攻击
  • 无需进行额外的网络调整或安装难以部署的代理,即可轻松分析 API 流量
  • 与现有工作流(工单、SIEM 等)进行集成,以便向安全/运营团队发出告警
  • 通过部分自动化或全自动化补救,实时防止各类攻击和滥用行为

4.API 安全测试。API 开发团队压力重重,需要尽可能快地完成工作。速度对于所开发的每个应用程序都至关重要,这更容易导致漏洞或设计缺陷发生且随后无法被检测到。将 API 发布到生产环境中之前在开发阶段对其进行测试,可以显著降低风险并减少修复易受攻击 API 的成本。所需的核心功能:

  • 运行模拟恶意流量的各种自动化测试
  • 在 API 进入生产环境之前发现漏洞,从而降低攻击得逞的风险
  • 依据已确立的管理策略和规则,对 API 规范进行检查
  • 根据实际需求或在 CI/CD 管道中运行以 API 为重点的安全测试

这种全面的方法可作为企业现有 API 防护能力的补充,包括:

  • 威胁检测和 DDoS 防护:利用网络安全工具实时检测潜在的 API 攻击。实施策略(例如速率限制和负载均衡)来防范 DDoS 攻击,以确保 API 端点始终可用且安全无虞。
  • 阻止和补救:实施自动拦截和补救措施,以防止未经授权的访问尝试和敏感数据泄露。结合使用 WAF、身份验证和访问控制策略,在 API 网关级别实施安全防护。

这些是建议的控制措施。以上内容信息量很大,一时可能难以完全消化,而且实际上没有哪个企业能够面面俱到地处理好所有这些问题。但是,该检查清单是制定最佳实践并确定 API 安全方面待改进领域的重要方法。它为运作良好的 API 安全运营提供了有用的基准。

常见问题

速率限制对于防范 DDoS 攻击和避免 API 端点因请求过多而不堪重负至关重要。通过限制用户或客户端在指定时间范围内可以发出的请求数量,速率限制可帮助确保您的 API 始终可用并且响应迅速,即使在高负载下也不例外。

OAuth 是一种广泛使用的身份验证协议,它允许用户在不共享其凭据的情况下授予对其数据的访问权限,从而提供对 API 的安全访问。实施 OAuth 有助于确保只有授权用户和应用程序才能访问您的 API 端点,从而降低发生未经授权的访问和数据泄露的风险。

输入验证是一项关键的安全措施,可帮助防范 SQL 注入等常见 API 攻击。通过验证和清理从用户和其他 API 处接收的数据,您可以防止恶意输入内容入侵您的应用程序,从而保护敏感数据并维护 API 的完整性。

Web 应用程序防火墙 (WAF) 通过过滤和监控 HTTP 请求来为您的 API 提供一层额外的安全保护。WAF 可以阻止恶意流量、抵御 SQL 注入和跨站点脚本攻击 (XSS) 等常见威胁,并且能够在 API 网关级别实施访问控制策略,从而帮助保护您的 API 免受各种网络安全威胁的侵扰。

客户为什么选择 Akamai

Akamai 是一家致力于支持并保护在线商业活动的网络安全和云计算公司。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在海外分布广泛的平台上提供高性能且经济实惠的服务。众多全球企业信赖 Akamai,凭借我们卓越的可靠性、扩展性和专业技术,企业能够从容拓展业务。

探索所有的 Akamai 安全解决方案