7个API发现最佳实践,实现全面可见性
API通常能够访问敏感数据,因此组织了解每个正在使用的API至关重要。然而,许多公司都在与影子API和未文档化的端点作斗争。您无法保护看不见的东西,这使得全面的API可见性成为任何安全计划的基础。
有效的API发现需要一种贯穿整个软件开发生命周期(SDLC)的系统方法。以下是安全团队应实施的七个关键API发现最佳实践,从源代码分析到持续监控。
1. 进行源代码分析和仓库扫描
全面的API发现从源代码开始。现代静态应用程序安全测试工具会自动扫描代码仓库,以识别API定义、端点和配置(如OpenAPI定义)。
特别要注意可能引用外部API或定义新端点的配置文件、环境变量和部署脚本。许多组织在遗留代码库或实验性分支中发现了被遗忘的API。
值得考虑的工具包括:
- StackHawk的API Discovery直接连接到代码仓库,采用由内而外的方法从源代码中发现API,并自动生成模式。
- Semgrep在大多数编程语言中提供快速静态分析,以查找代码中的API模式,使其成为识别REST端点声明、GraphQL模式和API框架使用的优秀开源选项。
2. 执行API网关和管理平台分析
API网关作为API流量的集中控制点,使其成为发现组织中活跃API的宝贵信息来源。像Apigee这样的网关维护着已部署API的完整注册表,包括有关端点、版本、流量模式和使用分析的元数据。
基于网关的API发现具有以下优势:
- 通过集中注册过程获得完整的API清单。
- 显示实际API使用情况和消费模式的流量分析。
- 跨不同API迭代和部署的版本跟踪。
- 指示哪些API被积极使用而非休眠的性能指标。
然而,网关清单也有局限性。并非所有API都通过网关路由——例如,内部微服务通信、遗留端点和开发API通常完全绕过此基础设施。将网关数据用作主要清单基线,但需补充其他发现方法以捕获完整的API环境。
3. 审计第三方集成
现代应用程序严重依赖外部服务,需要进行系统审计以了解API依赖关系的全貌。审查应用程序消耗的所有SaaS集成和供应商API,检查身份验证方法、数据共享协议以及授予外部服务的访问权限。
记录应用程序进行的所有出站API调用,包括交换的数据类型和每次集成的业务目的。此审计过程通常会发现官方API文档中未捕获的意外数据共享关系或不安全的集成模式。
特别关注云服务依赖项及其相关的API端点,因为这些连接经常绕过传统的网络监控工具。许多组织只有在外部服务出现中断或安全事件时才发现关键的API依赖关系。
4. 实施持续的攻击面管理
部署自动化工具,持续扫描面向外部的基础设施以查找暴露的API。现代攻击面管理工具使用目录枚举、子域发现和端口扫描等技术来识别可能未经适当安全审查而部署的端点。
关注常见的API路径(*/api/*
、*/rest/*
、*/v1/*
)、HTTP方法和指示API接口的响应模式。高级工具可以区分静态Web内容和动态API端点,有助于识别通过其他发现方法未捕获的API。
5. 使用网络流量分析和SIEM集成
SIEM平台擅长摄取和分析网络流量数据以揭示API使用模式,尽管它们不提供本机API发现功能。这些平台处理网络流日志、HTTP流量数据和通信模式,以识别您基础设施中的潜在API端点。
配置SIEM平台以执行以下操作:
- 分析HTTP流量日志以查找API端点模式和类似REST的URL结构。
- 监控对API域(
api.
、rest.
、*.amazonaws.com
、*.googleapis.com
)的DNS查询。 - 跟踪非标准API通信的端口使用情况和协议分析。
- 将流量模式与应用程序部署时间线相关联以识别新API。
Microsoft Sentinel很好地演示了这种方法,它与Azure Network Watcher流量分析集成,处理网络安全组流日志并识别HTTP/HTTPS流量模式和连接依赖关系。
其他主要SIEM平台——Splunk、IBM QRadar和Elastic Security——提供类似的网络分析功能,使安全团队能够构建自定义关联规则,标记类似API的流量模式和可疑的通信行为。
6. 配置EDR工具进行运行时发现
端点检测和响应(EDR)工具通过全面的端点监控,提供对API活动的强大运行时洞察。例如,CrowdStrike Falcon提供对端点活动的实时可见性,同时跟踪网络连接、DNS请求和进程级通信模式。
EDR API发现功能包括:
- 进程监控:通过分析进程执行和命令行参数来跟踪进行API调用的应用程序。
- 网络分析:监控HTTP/HTTPS连接、对API域的DNS查询以及不寻常的端口使用。
- 行为检测:识别指示未经授权的API使用或API滥用的模式。
- 实时发现:在组织内发生时检测新的API通信。
EDR工具擅长识别仅在特定条件下或业务流程期间激活的API,这使得它们对于发现静态分析可能遗漏的条件性或基于时间的API使用至关重要。
7. 进行持续监控和集成
API发现不是一次性的活动——它需要在多种发现方法之间进行持续的集成。
建立自动化流程,结合以下内容:
- 集成到持续集成/持续交付管道中的源代码扫描。
- 具有自动清单更新的API网关分析。
- 通过SIEM平台进行的网络流量分析。
- 用于运行时API发现的EDR监控。
- 定期的第三方集成审查。
创建仪表板,整合所有发现方法的发现结果,识别不同清单之间的差距,并标记新发现的API以进行安全评估。这种多层方法确保了随着组织API环境演变时的全面可见性。
通过在整个SDLC中实施这些发现实践,安全团队可以保持彻底的API可见性,并确保对这些关键集成点进行充分保护。
如何实施API发现最佳实践
将这些最佳实践作为集成的安全程序而非孤立的活动来实施,是成功进行API发现的关键。
从源代码分析开始,建立组织的基线API清单,然后分层添加网关监控、网络流量分析和运行时EDR,以捕获整个网络中API使用的全谱。
请记住,API是动态的——新的端点通过开发周期出现,遗留API被弃用,当团队绕过官方流程时会出现影子API。
Colin Domoney是一位软件安全顾问,他倡导DevSecOps并帮助开发人员保护其软件。他曾在Veracode和42Crunch工作,并撰写了一本关于API安全的书。他目前是CTO和联合创始人,也是一名独立的安全顾问。