近年来数据泄漏的事件层出不穷,网上可以搜到大量的数据泄漏新闻。从业者也都明白,数据泄漏只是一个结果,而原因有很多种,可能是一个越权漏洞,也可能是一个弱口令,有N种可能都会导致泄漏。传统的数据安全保障体系为什么没能有效遏制数据泄漏?是方法论出错了,还是执行不到位?带着这个问题,笔者研究了两家云服务厂商,试图从框架上寻找可借鉴的地方。结论是,有可借鉴的地方,但仍然不足以保证数据安全。

本文仅选择数据安全强相关内容,两家公司在云架构上比较相似,框架上都是通过IAM、KMS、加密、日志,并且都有专门针对数据安全的服务可供选择。

一、 IAM

IAM本质上是一个信任系统,提供身份识别和访问管理功能。访问控制、角色、资源、审计、认证、日志、策略等都是这里要考虑的要素,对于大多数互联网公司而言,面上的东西其实都有,但缺少的是精细度。尤其体现在资源的细颗粒程度,例如我要对EC2进行IP分配,这就是一个资源,而IAM针对这个资源的策略可以有允许、禁止、申请等不同的资源级权限,再进一步,要能够根据不同的角色甚至标签进行。

诸如此类,要把资源做到细颗粒,表面上是对资源、角色、权限的框架定义,本质上是对整个系统底层基础统一化的要求。在一个底层不统一的基础上去谈框架,则要求框架有大规模的扩展性,对性能也是一个较大考验。

此外日志记录也是IAM的一项重要内容,从这里可以发现异常。

Google相对提供了另外一个IDENTITY AWARE PROXY,简称IAP,控制着云上的应用访问通道,也是BeyondCorp的作品之一。本质上是对应用的访问建立了一个代理的授权层,建立了一个应用级访问访问控制,而不是网络级的访问控制。

image.png

二、 HSM/KMS

由于用户对上云的数据安全考虑,因此加密是云厂商的重点工作之一,这意味着你的数据在我的云上是加密的,而我无法窃取你的数据,因为只有你才拥有密钥。因此我会为你提供密钥管理服务、硬件加密模块服务,当然你也可以不信任我,我也支持你用第三方的密钥服务。

HSM/KMS除了对静态数据的加密,也可以用在其他的场景中。比如Web 服务器分载 SSL/TLS 处理,需要公有–私有密钥对和公有密钥证书,和每个客户端建立 HTTPS 会话,这时可以把计算工作让HSM承担,以达到SSL加速。再比如你在Oracle启用了加密,主加密密钥可以存在HSM中,因为HSM是个硬件,所以具有更高的安全性。

加密不是问题,实践中的问题在于密钥管理,密钥如何分发,怎样进行轮换,何时撤销,都是密钥的安全管理问题。两家云厂商都提供了自动更换密钥或到时提醒的功能,而且都能避免更换密钥时的重新加密。

KMS的密钥层次上和信任根:数据被分块用DEK加密,DEK用KEK加密,KEK存储在KMS中,KMS密钥使用存储在根KMS中的KMS主密钥进行包装,根KMS密钥使用存储在根KMS主密钥分配器中的根KMS主密钥进行包装,如果看晕了的话,直接看下图:

image.png

 

除此之外,amazon还单独提供了一个Secrets Manager的工具,用来管理各种key。例如有些开发会把数据库连接字符串写死在代码里,这样本身就有风险,再者如果需要更新凭证的话,也很容易漏掉某个程序。而Secrets Manager可以把凭证嵌入到应用里。同时不仅限于数据库连接串,也支持各种密码API密钥,密码的管理。

image.png

三、 加密

HSM/KMS是个基础设施提供密钥服务,真正的数据则在传输中、静态、使用中都进行了加密,Google和amazon都花了很多篇幅来说明加密。其中要点是:都是通过多层加密方式,多层加密能提供冗余数据保护,并可以根据需求选择最佳方法。而多层则包括了在存储块、设备层、备份等多层。但这仍然不能满足全部的要求,例如按照GDPR,存储系统使用的临时文件,进程失败的核心转储写入,也都是需要加密的。

四、 数据防泄漏

如果说以上都是基础防护建筑的话,到数据防泄漏这里,则是两家各自大放异彩的地方。Amazon提供了Macie,Google提供了DLP API,基本上这两个工具是数据防泄漏的核心工具,特别值得一提的是Google的DLP API,其中的部分功能走在了行业的前列。

1、Macie

先说Macie,有两个主要功能,自动发现分类和保护敏感数据。

自动发现与分类:在内容上,Macie识别文件头的标识符,也可以通过扩展名、关键字搜索、正则表达式,这些都是比较传统的。Macie单独对个人身份信息进行了设计,为了提高个人身份信息的准确性,使用了一些可调参数的分类,例如大于50个姓名和电子邮件的组合,则标记为高准确性的PII,而大于5个姓名或电子邮件的组合则标记为中,这样可以让用户根据自己的数据特点灵活的去定义个人敏感信息。通过这些分类方法,再加上对扩展名、类型,提供一个复合的风险值。

在机器学习上,使用支持向量机(SVM)的分类,这里包括了对象类和元数据,对象则包括了文本、令牌n-gram和字符n-gram,元数据则包括文档的长度、扩展名、编码格式、标题。对源代码、日志、文档、数据库备份进行检测。

但Macie这里的问题是,仅支持对S3存储进行检测,而且只能对前20M检测。另外基于中文自然语言处理、中国的身份证号码和驾照也都不能支持。

数据保护:Amazon的做法不同于传统上我们认知的数据保护,它是通过对敏感数据的日志分析得出结论,但并不直接阻断干涉。观察Macie的报警其实也很有意思,可以作为实战中的规则:

• 配置合规性 – 与合规性控制的内容,策略,配置设置,控制和数据日志以及修补程序相关。

• 数据合规性 – 与合规性或受安全控制的内容有关,如存在个人身份信息(PII)或访问凭证。

• 文件托管 -主机或存储服务遭盗用而导致托管恶意软件、不安全软件或攻击者的命令和控制基础设施相关。。

• 服务中断 – 导致无法访问自己环境中的资源的配置更改。

• 勒索软件 – 潜在的勒索软件或活动。

• 可疑访问 – 从有风险的异常IP地址,用户或系统访问您的资源。

• 身份枚举 – 一系列API调用或访问,列举您系统的访问级别,可能指示攻击的早期阶段或账号被盗。

• 权限升级 – 成功或失败的尝试获得对应用或用户通常不受保护的资源的高级访问权限,或试图长时间访问您的系统或网络。

• 匿名访问 – 尝试从IP地址,用户或服务访问您的资源,意图隐藏用户的真实身份。例子包括使用代理服务器,虚拟专用网络和其他匿名服务,如Tor。

• 开放权限 – 识别过度的访问敏感资源。

• 位置异常 – 对您的敏感数据进行访问的异常位置和风险位置。

• 信息丢失 – 对敏感数据的异常和风险访问。

• 凭证丢失 – 可能损害您的凭证。

2、DLP API

Google的DLP API功能比较丰富:

分类识别:采用了上下文分析、模式匹配、校验和、单词和短语列表这四种。同样也支持自调整和关键字搜索、正则表达。和Amazon相比,缺少算法的支持,但支持了多个国家的检测器模板,包括中国(但只有护照号码)。

image.png

编辑和解除身份:字面翻译是这个意思,但本质上是将数据流通过API进行脱敏动作。这里包括了多种方式,有一些比较新鲜有趣。对文字流的处理最简单,使用占位符“***”输出。对图像的脱敏是业界比较少见的,他先把图片转为base64编码,处理后用相同的图像格式返回:

image.png

脱敏泛化处理:除此之外,还提供了针对部分常见场景的脱敏泛化:

日期:可以把2018-05-01转变为2018,或者加一个随机转移值变成2018-01-09,来避免某些场景下的数据聚合风险。

分组:例如一张学生成绩的表,分别是序列号和分数,那就可以调用方法,把他转为0-25低分,26-75中等这种形式,保留了数据的作用,也降低了数据的可识别性。除了这些针对结构化数据场景的转换,也支持自定义的非结构化数据。

假名化:其实就是tokenization,把敏感数据替代掉,但保留着真实数据和替代数据的关系。如下图,把真实员工的ID换成一个随机值,这样就无法定位到是哪个员工,但又不影响分析。

image.png

风险分析:其含义在于再识别风险,即使你做了上面的泛化或者脱敏,数据也仍然有被聚合的可能性,比如字段包括姓名、性别、疾病、年龄,即使把姓名和年龄处理掉,也仍然可能存在一个特殊疾病患者,而从这个特殊疾病患者就可以定位到某人。因此需要对这类数据进行风险识别,而方法则包括了k-anonymity、多样性、k-map。

五、安全日志监控

特别值得单独但出来一说的是Amazon的GuardDuty,这是个安全监控系统,可以监控VPC流日志、CloudTrail事件日志和DNS日志,而其检测方法包括了威胁情报和机器学习。多说无益,直接看规则,就能知道他能干什么:

• EC2与XorDDos恶意软件的IP地址进行通信

• EC2的25端口启动,可能对外发垃圾邮件或密信

• EC2查询C&C服务器关联的域名

• 与异常服务器端口上的远程主机进行通信

• 向远程主机生成异常大量的网络流量

• 查询与比特币相关活动相关的域名

• 一个API是从Kali Linux EC2实例调用的

• 调用账户中安全组,路由和ACL的网络访问权限的API

• 调用通常用于更改账户中各种资源的安全访问策略的API

• 调用通常用于账户中添加,修改或删除IAM用户,组或策略的AP

• 未受保护的端口,正在被一个已知的恶意主机进行探测,例如22或3389

• 从Tor出口节点IP地址调用API

• 从自定义威胁列表中的IP地址调用API

• API从已知的恶意IP地址被调用

• EC2实例正在执行出站端口扫描

• 调用通常用于发现与AWS账户中各种资源相关的权限的API

• 调用通常用于启动计算资源(如EC2实例)的API

• 帐号密码策略被削弱

• CloudTrail日志被禁用

• 调用通常用于停止CloudTrail日志记录,删除现有日志以及删除AWS账户活动跟踪的API

• 试图与远程主机的IP地址进行通信,该远程主机存在恶意软件

• 通过DNS泄露数据

• 查询涉及网络钓鱼攻击的域名

• 多个全球成功的控制台登录

• 从异常ISP的IP地址调用API

• 参与了SSH暴力攻击

• 涉及RDP强力攻击

• IAM用户发生异常控制台登录

• 启动了一个不寻常类型的EC2实例

• 与比特币矿池进行通信

六、总结

关于两家的文档,其实还有更丰富的细节值得推敲学习。这些文档可以在https://cloud.google.com/https://docs.aws.amazon.com/上找到,其实还有一家也值得学习的是apple,但apple和这两家的产品区别很大,可以留在以后单独做一个分析。