MRS的HDFS透明加密
HDFS上数据的安全风险
一般情况下要访问HDFS中的文件,需要经过Kerberos认证确认是大数据平台的合法用户,在经过HDFS服务端鉴权,确定用户具有相应文件的权限,才允许操作。
但是从整个IT系统层面看,OS和硬件这两个攻击面可以绕过HDFS的权限控制,非法获取到HDFS中的文件。比如当系统或硬件出现故障需要进行维护修复的时候,节点或者硬盘有可能进入系统管理员的管理范围之外,这时维护人员就可以通过OS或者硬盘直接读取HDFS保存在系统中的文件,造成信息泄露。
解决方案
对于上述场景,通过数据加密可以非常好的解决信息泄露的问题。维护人员拿到设备后,只能看到数据的密文,无法获取其中的信息。
什么是透明加密
HDFS提供的一个针对持久化的静态业务数据进行加密的能力。如果有需要保护的敏感数据,可以创建一个加密区,保存到加密区中的数据都是经过加密的。加密区配置完成后,数据加密的处理过程是由客户端和服务端协商自动协商完成的,HDFS客户端对上层应用暴露的接口没有变化,应用对加密处理不感知,是透明的。
关键角色和概念
加密区(EZ:Encrypt Zone)
对应HDFS的一个目录,将目录配置为加密区后,所有保存在这个目录下的文件,包括子目录中的文件都是加密的。
加密区秘钥(EZK:Encrypt Zone Key)
加密区的主秘钥,不直接用来加密数据,用来加密DEK。
数据秘钥(DEK:Data Encrypt Key)
用来加密文件的秘钥,每个文件有单独的秘钥加密。DEK加密后的密文(EDEK:Encrypted Data Encrypt Key)保存在NameNode每个文件的元数据中。这样每次读取文件的时候就能够找到正确的EDEK。
秘钥管理服务(KMS)
秘钥管理服务,用来做秘钥的生命周期管理。EZK和DEK都由KMS的密码机生成,由于秘钥的随机性要求非常高,秘钥的生成需要由专门的硬件设备完成。EZK就保存在KMS中,由加密机的根秘钥加密保护。
加密流程
需要做加密的用户首先要到KMS申请一个加密区秘钥,这个秘钥的访问需要单独配置权限,跟HDFS的文件权限控制是分开的。
用户申请好秘钥后,将秘钥名称告诉给HDFS的管理员,管理员就可以使用这个秘钥名称跟目录关联起来,给用户创建加密区。创建好加密区后,用户写入加密区的数据就都是经过加密保存的。要访问加密区中的数据,需要同时具有HDFS文件和加密区秘钥的访问权限。
更安全的原因
1. 数据是经过加密的,而且EZK跟数据分开保存在不同的系统中,一旦密文在维修中泄露,获取到密文的人员手上没有秘钥,无法解密密文得到其中的信息。
2. 恶意攻击者攻击HDFS成功后,获取到HDFS文件的访问权限,此时只能读取到数据的密文,还需要进一步攻击KMS,获取秘钥的访问权限才能读取到数据的明文,增加了攻击难度。
数据加密的问题
数据加密需要将明文经过专门的加密算法处理后才能得到密文,反之解密的时候也要进行处理。这样在读写数据的环节中增加了一步额外的处理,而且加解密算法都比较复杂,对计算性能要求比较高,会增加读写文件的时间,而且会占用额外的计算资源。
目前加解密处理一般有三种常见的方式:
1. 软加密
使用CPU的通用指令实现加解密算法,这种方式对CPU的占用会比较多,而且性能比较差。
2. 专用的加解密设备
一般是独立的加密机或者加密卡,由专用的设备厂商提供。加密机一般是集中式的,通过网络与业务系统对接,在传统业务系统的加密中是成熟的方案,在大数据场景下会成为性能瓶颈。加密卡一般通过PCI接口插到服务器上,可以实现分布式加解密处理。在HDFS透明加密的场景下,如果做好分布式的秘钥管理需要重点考虑。
3. CPU加速
通过专用的加解密指令或硬件核心处理加解密算法,这种方式加解密吞吐量和时延都比较好,目前针对AES加密算法有AES-NI CPU指令加速,针对SM4国密算法没有专门的指令。华为鲲鹏920芯片内置了专用的核心,将SM4国密算法固化成硬件电路,可以通过硬件实现SM4国密算法的加速,吞吐量和时延性能都有保证。
MRS服务的HDFS加密方案
基于鲲鹏920芯片加速的国密加密
基于HDFS透明加密的持久化静态数据保护,上层应用无感知。
同时支持AES/SM4加密算法,SM4加密算法支持鲲鹏920 CPU硬件加速。
加密区密钥和数据密钥由第三方商用KMS生成并加密保护。
KMS Proxy基于Hadoop KMS API标准接口与第三方KMS对接。
- 点赞
- 收藏
- 关注作者
评论(0)