01 什么是API?
百度百科给出了API的定义:
API(应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。
通俗的来理解就是API是一种为客户提供服务的方式。当一家企业或数据中心为客户提供API的时候,意味着它们建立了一组专用的URL通道,服务响应后返回的是纯数据。
很多时候API自身还能被包装成一种服务模式。例如,Weather Underground就将其天气数据API的访问权限出售给其他人,同样华为也对API服务有超出免费次数的API请求支付费用的服务模式。
API接口作为数据共享开放的基础,随着数字化进程的推进,越来越多的企业和数据中心将服务封装成数据接口进行开放,供第三方使用。
总体来说,API接口分为三大类:开放API、面向合作方API和内部API。如表一所示。
AP类型 | 简介 |
开放API | 开放API指调用者不需要 与API提供者建立合作关系,且面向公网开放,允许公共调用的应用程序接口。 |
面向合作方API | 面向合作方API指组织与外部合作伙伴、用户等进行数据交互、交流和系统 集成的应用程序接口。 |
内部API | 内部API仅在组织内部使用,是用来协调内部不同系统、应用之间的调用关 系的应用程序接口。 |
表一:API分类
开放API(OpenAPI)是开发者运用最多的一类了。由于具有标准化、通用性等优势,不断被运用到需要快捷的服务场景。数据共享开放时代,几乎没有人可以绕过API来构建信息系统和App。
API是共享开放的基础。如图一所示,API的主要价值可以总结为三点:
-
数据共享开放,更精准的触达客户,提供更丰富的服务
-
通过API接口聚合,实现应用场景及商业模式的转变
-
通过API接口快速接入海量数据,实现数据的价值增值
图一 API是共享开放的基础
02 API接口面临的主要风险
下面八种API接口的安全风险需要我们予以重视(如图二):
图二 API接口面临的主要风险
过去,应用程序可以安全地隐藏在防火墙后面。如今API成了企业应用程序的关键,它使应用程序的特性更加丰富和动态,随着数字化转型,数据在不断打通,API成为数据重要的流通链路。这是好的一面,但同时API也增加了攻击面,并没有防火墙防护,常常被意外地公开。
API接口传输数据类型复杂多变, 有些接口涉及敏感的商业数据、个人隐私数据。一旦发生泄露窃取,企业将面临巨大的合规风险和商密数据泄露风险。许多重大数据泄露问题,其幕后原因都在于 API 遭到破坏、泄露或攻击。
03 API安全常见解决方案
2019年OWASP发布了API安全十大项目,但由于API安全涉及的范围比较广,不少常见的安全问题并没有被列入其中。
API安全市场处于相对早期阶段,国内专业从事API安全的厂商也不多,从市场角度来看,主要有两类:API网关方案和基于数据流转分析的API安全方案。
一、API网关方案:
通常的解决方法是为内部环境和云计算环境部署设置API网关,并有数据中心将它们作为托管的服务来提供。
遗憾的是,并非API网关就是一个好主意。目前市场上的代理API和API网关大多只能解决其中的几项,无法针对这些风险给出全面的防护手段。
当然,API网关有其优点:通过API网关汇集所有API流量,可以确保基本的安全策略(如加密、身份验证和访问控制)得到充分实施、并能执行负载均衡和DDoS保护等策略。
这似乎是一个理想的选择,但现实很骨感。
首先,整个过程需要从创建API目录开始,包括数据中心公开的所有的API目录。但要保持目录更新是一件很困难的事,尤其是在今天讲究快速迭代更新的时代,新的服务在几天甚至几小时内就会推出。
其二,使用令牌来标识每个API,控制对数据和服务的访问,没有授权令牌的开发人员不能公开新的API。但是一些企业的实践表明,要让所有开发人员都参与进来可能的困难程度超出想象。
其三,将API网关作为托管的服务来提供是一个很美妙的设想,但数据中心却无法也不能强迫客户这样做。
其四,单点故障和中央网关延迟是API网关避不开的隐患,它增加了数据中心复杂性和管理开销。成千上万个企业API都通过API进行通信,出现单点故障和延迟是一个可怕的噩梦。
二、基于数据流转分析的API安全方案
通过AI技术和小样本深度学习对API的访问行为和流量进行分析,从而发现API的各种异常访问行为。这类基于数据流转分析的API安全方案可以实现全场景动态防护,主要包含四大类,如图三所示。
图三 API全场景动态防护
非法调用防护:主要包括防止未授权的API调用、检测API安全验证机制、识别API越权、遍历检测等等......
恶意访问防护:主要包括持续监控API接口访问行为、识别API接口攻击访问等......
数据泄漏防护:主要包括监控API接口传输敏感数据、防止敏感数据超范围获取等......
滥用防护:主要包括监控API接口高频访问行为、识别API接口数据爬取行为、高权限账户异常地址访问、识别API接口数据聚合分析行为等......