保护敏感数据
识别敏感数据的下一步就是“保护敏感数据”,保护一般需要覆盖数据的采集、传输、存储和使用这几个生命周期。
采集:使用隐私保护影响评估,对要采集的数据进行评估,是否一定要采集,采集以后采取什么保护措施,是否存在安全风险,是否接受安全风险等。
传输:使用加密协议,加密传输的数据;
存储:使用AWS KMS加密静态存储的数据;可以参考如何加密数据对传输和存储数据进行加密防护。
使用:访问请求数据的时候要进行权限控制,防止未授权访问,以及如果是通过代码访问数据,要确保代码中不出现明文口令。
密钥管理
加密是一件复杂的事情,复杂之处在于密钥的管理。一旦做了数据加密,你就有了一个访问相应数据的密钥,那大家把这个密钥放到哪里了呢?放到了数据旁边!想象一下,你锁了一扇门,然后把钥匙挂到门旁的一个挂钩上,并且挂钩上面还写着“钥匙”等提示信息。要想达到真正的安全(而不是仅仅为了勾上一个“已完成加密”的待办事项),你必须有正确的密钥管理。
最简单的密钥管理方式是生成一个密钥,用这个密钥对数据进行加密,然后将密钥放入KMS,之后将加密后的数据写到磁盘上,同时提供一个提示信息说明这些数据是用哪个密钥加密的。但这种方式主要存在两个问题:
1. 性能较差的KMS需要承担较大负载。大家能找出很多理由来为每个文件使用一个密钥,因此在用户数量比较庞大时,KMS将不得不存储数十亿乃至数万亿的密钥,而且要满足能即时检索的要求。
2. 如果想彻底清除数据,你就需要绝对信任KMS能不可逆地清除相应的密钥,而且不能留有任何备份。另一种方式是用新的写入覆盖所有加密的数据,但这种操作需要耗费一定时间。
通常情况下应该有两级密钥:一个密钥加密密钥(key encryption key)和一个数据加密密钥(data encryption key)。从名字就可以看出,密钥加密密钥用于加密(或“包裹”)数据加密密钥,而被加密的密钥与数据存储在一起。密钥加密密钥通常保存在KMS,出于安全原因,它永远不会拿出来。
1-硬件加密HSM
在传统的、对安全要求很高的本地部署环境中,通常是购买硬件安全模块(Hardware Security Module,HSM)来保存密钥,一般是以扩展卡或网络访问模块的形式。HSM对未授权访问有很多重要的逻辑和物理保护机制。对于大部分系统而言,任何有物理访问权限的人都可以很容易地进入系统,但HSM的传感器一旦检测到有人试图取走数据、用X光扫描数据、乱动数据的电源或其他看起来有威胁的行为,它就可以立即删除数据。
由于HSM费用较贵,因此对于大部分本地部署来说,可行性不高。然而在云环境中,对于中等预算的项目,类似HSM和密钥管理系统这样的高级技术也都是可以考虑使用的。一些云提供商支持用户为自己的云环境租用专用HSM。虽然最高安全等级的环境可能确实需要这样的功能,但在云环境中专用HSM仍然是比较昂贵的。
2-密钥管理服务KMS
密钥管理服务(Key Management Service,KMS),这是一种多租户服务,背后是使用HSM保证密钥的安全。你必须对HSM和KMS(而不仅仅是HSM)持有信任,即使它们本身也增加了一点额外的风险。然而,与自己做密钥管理(通常实现上都有问题)相比,KMS还是在零成本或极低成本的前提下保证了非常好的安全性。如果项目中有中等偏上程度的安全预算,那么你就可以享受拥有合适的密钥管理而带来的便利了。
最后更新于