前言 API已从一种实施细节迅速演变成具备战略价值的数字化创新推动力。每当有客户、合作伙伴或供应商与企业进行数字互动时,后台都会有相应的API来帮助实现数据的无缝交换。 随着API数量激增,风险也随之增大。当今企业争相快速创建和发布新的应用程序和AI增强型服务,然而匆忙之下,API往往出现配置错误、缺乏安全控制措施,导致攻击者可以轻而易举地对其发动攻击。 因此,API已经成为主要攻击媒介,许多安全团队不得不努力恶补,以完善API安全策略。因此,API安全防护迅速成为IT和安全主管的首要任务。 无论您是想了解API安全基础知识,还是想整理一份合适的提问清单,本指南都能为您提供必要的详细信息,包括: •API的不同类型•API安全对当今企业意味着什么•应对API安全风险的最佳实践•常见的API攻击和滥用方法 您可以直接查看第10页上的API安全最佳实践。 目录 API基础知识 什么是Web API? Web API应用程序编程接口(API)由已定义的请求响应消息系统的一个或多个端点组成,通常以JSON或XML表示,并通过网络(最常见的是基于HTTP的Web服务器)对外开放。 换句话说,大多数人听到“API”时想到的就是Web API。它是端点的集合。端点由资源路径、可对这些资源执行的操作,以及资源数据的定义(JSON、XML、Protobuf或其他格式)组成。 Web API不同于其他API(例如操作系统或在同一台机器上运行的应用程序库所公开的API),但“API”这个通用术语通常是指基于HTTP的(Web) API,尤其是在企业数字化转型和API安全领域。 最常见的API类型有哪些? 下面的术语表解释了API实施中用到的各种API使用模式和技术方法。Web API的定义是基于HTTP的API,目前常见的四种主要类型是RESTful、SOAP、GraphQL和gRPC。表中给出了这些常见类型及其他类型API的定义。 API和端点有什么区别? 人们在使用“API”这个术语时,通常他们真正想说的是单个API端点。API有时称为服务或API产品,是为业务功能服务的端点集合。另一方面,单独一个端点是指一项资源(或资源路径,也称为URI或统一资源标识符)和对资源执行的操作(创建、读取、更新或删除)。在RESTful API中,这些操作通常对应于HTTP方法(POST、GET、PUT和DELETE)。 什么是南北向API? 这些API是企业供外界访问的API,主要用于与业务合作伙伴开展业务。这种情况称为API开放。例如: 支持开放银行业务的银行可能通过API向其他金融科技企业或金融服务企业开放其帐户。 医疗保健企业可能通过API向保险公司和其他医疗企业开放患者记录。 酒店企业可能通过API向旅行社或旅游信息采集平台开放其预订系统。 API是支持不同企业交换数据的连接纽带。南北向API通常被认为是安全的,因为API访问已获得授权并已经过身份验证。这些API通常增长极快且数量庞大,因此对大多数企业而言,构成了最大的攻击面。 什么是东西向API? 这些API是企业内部使用的API,不应允许企业外部的任何人访问。它们将内部应用程序或者业务单位(部门)连接起来。开发人员可能意外地出现配置错误,允许东西向API被访问。这些API不应该被外部实体访问,甚至不应该被外部实体知晓,而一旦攻击者发现可通过互联网访问的东西向API时,就会发生入侵。 B2C API和B2B API有什么区别? 企业对消费者(B2C) API为Web应用程序和移动应用程序提供支持。这些API通常由现代前端客户端使用,是为了让经过身份验证的最终用户能够访问公司的业务功能。 企业对企业(B2B) API是企业与企业之间为了开展业务而提供的,有时也用于为共同的客户提供价值。 B2B API有助于简化企业与其供应商、经销商和其他合作伙伴的合作方式,并让企业能更轻松地为客户提供更好的体验。 B2B API的例子包括: 开放银行API API的使用者千差万别,因此用于保护这些API的安全控制措施也各不相同。直到不久前,网络安全行业的关注点仍然仅限于B2C应用场景。但即便是在这些应用场景中,重点也不是保护B2C API,而是保护Web应用程序。通常用于保护B2C Web应用程序的安全工具和控制措施具有一定的优势(如Web应用程序防火墙[WAF]/Web应用程序和API保护[WAAP]),但无法提供保护B2C API免受攻击所需的监测能力、实时监控与保护。 保护B2B API的难度与日俱增。这些API往往缺乏基本的保护机制,更容易成为攻击者的目标。早期的API安全工具对B2B API的监测能力有限,难以保障代表共享用户执行批量数据访问的API的安全性(例如在开放银行业务中,金融科技公司和金融机构双方同意共享客户数据)。不过,较新的API安全解决方案提供了行为分析功能,可以辨别异常活动,从而有效解决这些问题。 私有API和公共API有什么区别? 私有API有时也称为内部API,供公司的开发人员和承包商使用。私有API通常是面向服务的架构(SOA)计划的一部分,用于支持不同的部门或业务单位相互高效访问彼此的数据,从而简化内部开发流程。 相比之下,公共API也称为外部API,面向公司外部的使用者开放。这些API作为开放API,在极端情况下,可供任何人自由使用。但无论如何,这些API都需要更严格的管理和完备的文档,才能给公司外部的工程师使用。 必须指出的是,可通过互联网访问的私有API从严格意义上讲不是真正的私有API。以ACME的B2C API为例,这些API由ACME的工程师在内部开发,仅供ACME移动应用程序使用。您可能会认为这是私有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(带有Swagger文档或类似文档)经批准的API 更大的防护规模 API使用量快速增长有三个因素: 1.微服务(一种强制使用API进行服务间通信的架构)的使用日益广泛。2.在直接用户渠道中,有React、Angular和Vue等现代前端应用程序框架使用API并且正在取代传统Web应用程序。3.为了适应全新的渠道(例如合作伙伴、物联网和业务自动化),也会添加API。 未经批准的API •影子API•恶意API•僵尸API•隐藏API 灵活性导致复杂性 与Web应用程序不同,API可以在许多不同的场景中以编程方式使用,这使得区分合法使用与攻击和滥用十分困难。 过时的API •已弃用的API•旧版API•僵尸API•孤立API API安全成熟度的各个阶段 保护API的最佳实践有哪些? 要想加强API安全性,应从以下最佳实践入手: •将API安全标准和实践与企业的软件开发生命周期进行整合。•将API文档和自动化安全测试纳入持续集成/持续交付(CI/CD)管道。•确保对API应用适当且有效的身份验证和授权控制。•实施速率限制措施,帮助防止API滥用或崩溃。•使用专用网关和/或内容交付网络增强速率限制和其他应用程序级措施,以降低分布式拒绝服务(DDoS)攻击的风险。•让API安全测试成为更大范围的应用程序测试流程中不可或缺的一部分。•执行持续的API发现。•实施系统化的方法来识别和修复常见API漏洞,包括OWASP十大API安全风险清单。•使用基于签名的威胁检测和预防,作为针对已知API攻击的基准级防护。•利用AI和行为分析来增强基于签名的检测,使API威胁检测的扩展性、准确性和业务相关性更强,并且能够抵御新型威胁。•确保API安全监控和分析流程持续数周并覆盖多个API会话。•作为对API安全监控和告警的补充,为威胁搜寻人员、开发人员、DevOps和支持人员提供对API清单和活动数据的按需访问权限。 您在使用自动化方法发现所有API及其支持的微服务。覆盖广度至关重要,因为被忽视的API(例如不再使用的API)是攻击者的主要目标。第1阶段:监测和发现 第2阶段:测试 您需要测试所有API,以确保其代码编写正确,并且能够执行预期功能。在这一成熟度阶段中,在部署API之前能够执行测试就是最高的成熟水平;这样可以在API用于生产环境之前消除风险,而且在这个阶段中,无论需要执行何种修复,成本都要更低。 第3阶段:风险审计 您需要持续审计整个API环境,以发现配置错误的API或其他错误。审计还能确保对每个API进行充分记录,并确定它们是否包含敏感数据,或者是否缺乏适当的安全控制措施。 第4阶段:运行时保护 您使用的解决方案具有自动运行时保护功能,可以区分正常和异常的API活动。通过这种方式监控API交互,您就能实时检测到指示威胁的行为。 第5阶段:响应 实施这些API安全最佳实践的能力取决于您在朝着成熟的API安全策略发展的过程中所处的阶段(请参见侧栏)。 您有应对可疑API行为的解决方案,例如WAF或API网关,可在可疑流量访问关键资源之前将其拦截。您的解决方案使用自定义的自动化规则。 第6阶段:搜寻威胁 您定期对既往威胁数据进行取证分析,以了解告警是否正确识别了威胁,以及是否出现了能够结合利用复杂工具和人工智能主动搜寻威胁的模式。 API安全风险和滥用 什么是API漏洞? API漏洞是一种软件错误或系统配置错误,可能导致攻击者利用这类错误来访问敏感应用程序功能或数据,或者造成API滥用。OWASP十大API安全风险清单十分实用,其中概括了一些被广泛滥用的API漏洞,这些也是企业应该尽力识别和修复的漏洞。 OWASP十大API安全风险清单是否记录了所有API漏洞? 对于希望改善API安全状况的企业来说,OWASP十大API安全风险清单是个很好的起点。清单中的类别涵盖了各种可能的API风险。但是,OWASP十大API安全风险清单所包含的类别十分广泛,因此有必要深入研究每个类别的子领域。API攻击者经常会利用OWASP中广泛涵盖的授权问题,但也有一些API风险完全不在OWASP十大