《API安全解决数据安全问题实践》I首届API安全管理论坛

12月3日,由永安在线举办的首届API安全管理论坛在深圳举办。四位大咖围绕API面临的挑战及如何进行API安全管理进行了精彩分享。
其中,乐信集团信息安全中心总监刘志诚以《API安全解决数据安全问题实践》为主题进行了分享,我们对现场演讲全文进行了梳理,以供更多关注API安全管理的人共同学习。
- 演讲全文:
大家下午好。从我个人的理解来看,API安全我认为它是一个能力。它是在你设计的过程中来保证业务安全的一个能力。那这个能力有什么用、解决什么问题呢?从我的观点上来看,我关注的是它能解决什么实际问题。现在比较热门的一个话题就是数据安全,大家谈数据安全有很多的产品,但是更多的可能还是围绕着数据库、数据库审计、数据库防火墙,还有整个数据全生命周期数据流这样的一些安全。
那么在这个过程中我们发现 API 安全和数据安全之间的关系是什么?怎么样通过 API 安全的手段或者 API 安全这个点怎么来解决数据安全的问题。这个是我今天想给大家做的分享。
还有API安全里面有一个现象,也可以给大家分享一下。就是为什么说 restful API 现在这么多的安全问题?刚才从考古的角度上就知道最早的 API 设计是SOAP 这种简单访问协议的 API ,但为什么没有流行下去?它确实有很完善的安全机制,这里面它为什么不能存在,我们也来讨论下这个问题。
最后我们再来看一下数据安全现在是个什么状况,然后我分享一下我们在数据安全在 API 来治理数据安全方面的一些应用,讲一下我们的一些实践,供大家做一个参考。
API 其实有两种典型类型 :第一个是rest API ,这种方式它不需要存储,也不需要重新打包数据,它速度很快,所以它比较流行。但是国外有一种说法,如果我们把这个寄信来去做比喻的话,那么 restful API 就相当于寄个明信片,明信片上面什么信息都是明文的,大家都能看到,但它确实是快。
第二个是 SOAP API。SOAP API 它是有 Web 安全性做保障的, OASIS 这个组织或者 W3C 都有相应的安全的规范设计、安全协议和标准来保证它。它们结合使用 XML 加密、XML 签名和 SAML 令牌来验证身份和授权。怎么做 token 这些东西都有很明确的定义。但是它为什么没有流行?像图里所展现的,要是这个SOAP API需要一个黑人最终打扮成另外的形象,而 rest API放的根本不管你是什么,就直接送过去就 OK 了,这就是差别。

那API 有没有良好的安全设计?肯定是有,但是它也会带来性能的问题,或者是带来可用性的问题,甚至带来开发技术的难度,所以它的流行没有 restful快。但是在现阶段,因为越来越多的这种 API 暴露出来,越来越多的服务在互联网上暴露,安全问题反而越来越重要,这是值得我们思考和关注的问题。
那安全的设计怎么做?其实有一些现成的协议可以参考,不用闭门造车。这里面一些协议,但是这些协议怎么简化怎么使用,我觉得是可以探讨的。比如Owasp API Security Top10,之前肖总也详细讲了,这里我就不再赘述。但是这里面确实越权的问题比较严重,因为我们也发现一些很重要的对外暴露的 API ,包括所谓的敏感数据的泄露,其实很多问题都是鉴权和越权这个问题密不可分。
我们可以看一下SOAP它本身的安全协议的一个设计。SOAP这个组织它有认证和鉴权的一个标准,W3C的完整性、抗抵赖、机密性,它都有相应的一个协议和标准。都是可以做你的 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 里流转的数据, API我们都会有标签,API 它里面的数据属于什么样分类分级的级别,我们有相应的标签,这是我们自己形成的一个标签库。
第二我们会有一个安全策略库。安全策略库就是针对敏感数据, API 的设计应该是要采用什么样的策略,比如说要用什么样的加密算法、加密手段、加密密钥,要用什么样的脱敏算法去做脱敏,要用什么样的认证和鉴权的协议,要去有相应的安全策略库。这个策略和你的标签是对应的关系。我们安全网关其实是一个检测引擎,你在访问的时候,所有在流经安全网关检测的时候,会根据你的标签去对应你的安全策略,然后检查你的安全策略是不是满足这样的一个标签的特征。这样就能够把整个过程中的数据安全的分类分级和它的安全策略对应起来,也能在合规上和在安全上真正能够做到每一个的数据流转都是安全的。这里面核心技术主要是标签策略和引擎。

这个产品的特征我们是这样来定义。
第一个它是比较全面的。全面覆盖了我的数据安全,无论你是从生命周期的角度来看,还是从数据流的角度上来看,都是全面会覆盖的。
第二个它是标准化的。第三个是自动化的,通过引擎去做的。第四个它是可视化的,我们所有的都能够跟踪和分析。另外它是可管可控。
但是我们这个东西也在前期的测试阶段,在一些业务上,在一些灰度的场景上在跑,大家感兴趣的话可以进行进一步的去探讨。但是因为我们不是服务厂商,这是我们自己在实际工作中碰到的问题。就是数据安全这个事情,到底什么样的产品能够真正的解决真正的满足,需要不断探索。但今天在这个场合大家谈 API 安全,为什么拿出来这个事情来说?其实还是因为 API 这个事情才是解决数据安全问题的关键环节。