本发明涉及大数据计算安全领域,尤其涉及一种文件型门卫式存储加密功能的hadoop系统及其应用方法。
背景技术:
hadoop是一个分布式系统基础框架,基于集群工作模式对外提供高速计算和海量存储能力。hadoop的核心组件是hdfs(hadoopdistributedfilesystem)和mapreduce,hdfs为海量数据提供了存储,mapreduce则为海量数据提供了计算。hdfs是一个分布式文件系统,具有高容错性的特点,设计为部署在低廉的硬件上,并且提供高吞吐量和超大合集的数据存储能力。hdfs支持encryptionzone在hadoop客户端对数据进行透明加解密,加密算法支持aes、3des等通用算法,但是在客户端对数据进行加解密存在被旁路的风险,另外软件算法实现的加密存在密钥被窃取、加密速度低等劣势。综上,实现对hadoop文件存储数据的加密很有必要性,如何实现hadoop文件存储数据的加密,已经成为一项亟待解决的关键技术问题。
技术实现要素:
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种文件型门卫式存储加密功能的hadoop系统及其应用方法,通过hadoop服务端对数据透明加解密,能够防止客户端加解密被旁路、数据被恶意窃取及篡改,具有兼容性好的优点。
为解决上述技术问题,本发明提出的技术方案为:
一种文件型门卫式存储加密功能的hadoop系统,包括设置于hadoop服务端的hadoop计算节点、门卫式存储加密设备和存储系统,所述门卫式存储加密设备连接在hadoop计算节点和存储系统之间对数据透明加解密,所述hadoop计算节点包括存储加密代理单元,所述存储加密代理单元用于获取文件i/o请求并转发给门卫式存储加密设备;所述门卫式存储加密设备包括:
加密文件系统服务单元,用于接受存储加密代理单元转发的文件i/o请求,并调用高速密码卡模块对文件i/o请求对应的数据加解密;
文件缓存,用于为文件i/o请求对应的数据提供缓存空间;
高速密码卡模块,用于根据密码卡算法和预先分配的密钥对文件缓存中的数据进行加解密;
存储插件池,用于和存储系统的数据连接,并调用相应的存储插件打开存储系统访问接口对存储系统读写文件数据。
进一步的,所述hadoop计算节点还包括:
mapreduce任务,用于调用hadoop文件系统api读写文件;
hadoop文件系统api层,用于根据默认实现将文件请求写入底层文件系统,所述hadoop文件系统api层和存储加密代理单元之间的数据io通信。
进一步的,所述存储加密代理单元基于hadoop抽象文件系统的java类实现了hadoop文件系统api层的所有接口。
进一步的,所述加密文件系统服务单元基于操作系统内核pagecache实现了对数据的缓存。
进一步的,所述密钥与文件i/o请求对应的文件一一对应且各不相同。
进一步的,所述存储系统包括hdfs、nas存储系统和分布式存储系统中的一种或多种。
本发明还提出一种以上任一所述的文件型门卫式存储加密功能的hadoop系统的应用方法,包括hadoop计算节点文件加解密的步骤,具体包括:
1)mapreduce任务发起文件i/o请求,文件i/o请求到达hadoop计算节点的hadoop文件系统api层;
2)存储加密代理单元截获文件i/o请求并转发给加密文件系统服务单元;
3)加密文件系统服务单元收到文件i/o请求后,判断请求类型,若为写请求,调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将密文文件i/o数据流写入存储系统中;若为读请求,调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后的数据。
进一步的,步骤3)中调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将密文i/o数据流写入存储系统中具体包括以下步骤:
a1)将文件i/o请求数据写入文件缓存中并进行下一步;
a2)高速密码卡模块调用密码卡算法和预先分配的密钥对文件缓存的明文数据进行加密并进行下一步;
a3)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,然后将密文文件i/o数据流写入存储系统中,并将成功消息返回给存储加密服务单元。
进一步的,步骤3)中调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后数据具体包括以下步骤:
b1)判断文件缓存中是否已经存在数据,是则将文件缓存中的数据返回给存储加密代理单元并结束,否则进行下一步;
b2)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,读取文件i/o请求对应的密文文件i/o数据流并进行下一步;
b3)高速密码卡模块调用密码卡算法和预先分配的密钥对密文文件i/o数据流进行解密并将解密后的明文文件i/o数据流写入文件缓存,然后将文件缓存中的数据返回给存储加密代理单元。
与现有技术相比,本发明的优点在于:
1、本发明包括连接在hadoop计算节点和存储系统之间的门卫式存储加密设备,hadoop计算节点中的存储加密代理单元获取文件i/o请求,并将其发送给门卫式存储加密设备,门卫式存储加密设备负责对文件i/o请求对应的数据进行透明加解密,并调用相应的存储插件将加密后的文件i/o请求通过密文文件i/o数据流写入存储系统中或从存储系统中读取对应的密文文件i/o数据流进行解密,通过上述结构可实现对hadoop文件存储数据的透明加解密,能够防止数据被恶意窃取及篡改,具有兼容性好的优点。
2、本发明采用门卫式存储加密设备是在hadoop服务端实现的数据加解密,相对hadoop客户端实现的加解密方式而言,不存在加解密过程被旁路的风险。
3、本发明采用门卫式存储加密设备采用高速密码卡模块进行硬件加解密,相对采用软件实现的方式而言,其加解密性能高。
4、本发明采用门卫式存储加密设备对不同文件分配不同的密钥,其数据安全性高。
附图说明
图1为本发明实施例hadoop系统的结构示意图。
图2为本发明实施例hadoop系统的门卫式存储加密设备软件结构示意图。
图3为本发明实施例hadoop系统的文件加解密存储过程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本发明提出一种文件型门卫式存储加密功能的hadoop系统,包括设置于hadoop服务端的hadoop计算节点、门卫式存储加密设备和存储系统,门卫式存储加密设备连接在hadoop计算节点和存储系统之间对数据透明加解密,hadoop计算节点包括存储加密代理单元,存储加密代理单元用于获取文件i/o请求并转发给门卫式存储加密设备;如图2所示,门卫式存储加密设备包括:
加密文件系统服务单元,用于接受存储加密代理单元转发的文件i/o请求,并调用高速密码卡模块对文件i/o请求对应的数据加解密,本实施例中,文件i/o请求对应的数据包括文件i/o请求的明文数据和保存在存储系统中且对应文件i/o请求的密文数据,明文数据作为加密的对象,密文数据作为解密的对象;
文件缓存,用于为文件i/o请求对应的数据提供缓存空间;
高速密码卡模块,用于调用密码卡算法和预先分配的密钥对文件缓存中的数据进行加解密,本实施例的高速密码卡模块采用硬件加密卡,基于硬件加密卡对数据进行加解密,提供了加解密速度,确保存储加密基本不影响文件系统的读写性能;
存储插件池,用于和存储系统的数据连接,并调用相应的存储插件打开存储系统访问接口对存储系统读写数据。
通过上述结构,本实施例实现了在hadoop服务端的数据加解密,相对hadoop客户端实现的加解密方式而言,不存在加解密过程被旁路的风险,同时hadoop计算节点中的存储加密代理单元获取文件i/o请求,并将其发送给门卫式存储加密设备,门卫式存储加密设备负责对文件i/o请求对应的数据进行透明加解密,并调用相应的存储插件将加密后的文件i/o请求通过密文文件i/o数据流写入存储系统中或从存储系统读取文件i/o请求对应的密文文件i/o数据流,实现了对hadoop文件存储数据的透明加解密,能够防止数据被恶意窃取及篡改,具有兼容性好的优点。
一般而言,标准hadoop环境中计算节点文件访问请求,其处理包括以下步骤
a)mapreduce任务调用hadoop文件系统api以底层文件系统无关的方式读写文件;
b)hadoop文件系统api层根据默认实现(一般为hdfs)将文件请求写入底层文件系统。
与之相对应的,本实施例中的hadoop计算节点还包括:
mapreduce任务,用于调用hadoop文件系统api读写文件;
hadoop文件系统api层,用于根据默认实现将文件请求写入底层文件系统,hadoop文件系统api层和基于hadoop文件系统api层实现的存储加密代理单元之间的数据io通信。
本实施例中,存储加密代理单元基于hadoop抽象文件系统的java类实现了hadoop文件系统api层的所有接口,具体为对抽象类hadoop.fs.filesystem中文件读写接口进行了实现,hadoop文件系统api的数据流将流经存储加密代理单元的文件读写接口,存储加密代理单元将截获的文件i/o请求转发给门卫式存储加密设备加解密后再写入存储系统,整个过程对客户端透明,不需要更改计算节点。
本实施例中,出于性能考虑,加密文件系统服务单元基于操作系统内核pagecache实现了对数据的缓存,以减少存储系统读写次数,降低i/o延迟。
本实施例中,预先分配的密钥与文件i/o请求对应的文件一一对应且各不相同,通过对不同的文件分配不同密钥,以提升数据安全性,有利于防止单个文件密钥泄密可能导致整个文件系统数据泄密。
本实施例中,存储系统包括hdfs、nas存储系统和分布式存储系统中的一种或多种,同时存储插件池针对不同的存储系统调用相应的存储插件打开存储系统访问接口,不仅支持hdfs的透明加解密,而且还支持nas及其他分布式存储等存储系统的透明加解密。
如图1和如图3所示,本实施例还提出以上任一的文件型门卫式存储加密功能的hadoop系统的应用方法,包括hadoop计算节点文件加解密的步骤,具体包括:
1)mapreduce任务发起文件i/o请求,文件i/o请求到达hadoop计算节点的hadoop文件系统api层;
2)存储加密代理单元截获文件i/o请求并转发给加密文件系统服务单元;
3)加密文件系统服务单元收到文件i/o请求后,判断请求类型,若为写请求,调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将密文文件i/o数据流写入存储系统中;若为读请求,调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后的数据。
当收到写请求时,根据步骤3),调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将加密后的密文i/o数据流写入存储系统中,具体包括以下步骤:
a1)将文件i/o请求数据写入文件缓存中并进行下一步;
a2)高速密码卡模块调用密码卡算法和预先分配的密钥对文件缓存的明文数据进行加密并进行下一步;
a3)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,然后将密文文件i/o数据流写入存储系统中,并将成功消息返回给存储加密服务单元。
当收到读请求时,根据步骤3),调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后数据,具体包括以下步骤:
b1)判断文件缓存中是否已经存在数据,是则将文件缓存中的数据返回给存储加密代理单元并结束,否则进行下一步;
b2)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,读取文件i/o请求对应的密文文件i/o数据流并进行下一步;
b3)高速密码卡模块调用密码卡算法和预先分配的密钥对密文文件i/o数据流进行解密并将解密后的明文文件i/o数据流写入文件缓存,然后将文件缓存中的数据返回给存储加密代理单元,根据前文内容,本步骤中预先分配的密钥即为文件i/o请求对应的密钥。
综上所述,本实施例的文件型门卫式存储加密功能的hadoop系统中,文件存储数据为密文存储,由门卫式存储加密设备使用硬件加密卡对数据进行透明加解密,提高了加解密速度,同时,对不同的文件使用不同的密钥,提升了数据安全性。本实施例可实现对hadoop文件存储的透明加解密,能够防止文件存储数据被恶意窃取及篡改,具有兼容性好的优点;本实施例采用门卫式存储加密设备在hadoop服务端实现数据透明加解密,相对客户端实现的加解密方式而言,不存在加解密过程被旁路的风险。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
1.一种文件型门卫式存储加密功能的hadoop系统,其特征在于,包括设置于hadoop服务端的hadoop计算节点、门卫式存储加密设备和存储系统,所述门卫式存储加密设备连接在hadoop计算节点和存储系统之间对数据透明加解密,所述hadoop计算节点包括存储加密代理单元,所述存储加密代理单元用于获取文件i/o请求并转发给门卫式存储加密设备;所述门卫式存储加密设备包括:
加密文件系统服务单元,用于接受存储加密代理单元转发的文件i/o请求,并调用高速密码卡模块对文件i/o请求对应的数据加解密;
文件缓存,用于为文件i/o请求对应的数据提供缓存空间;
高速密码卡模块,用于调用密码卡算法和预先分配的密钥对文件缓存中的数据进行加解密;
存储插件池,用于和存储系统的数据连接,并调用相应的存储插件打开存储系统访问接口对存储系统读写数据。
2.根据权利要求1所述的文件型门卫式存储加密功能的hadoop系统,其特征在于,所述hadoop计算节点还包括:
mapreduce任务,用于调用hadoop文件系统api读写文件;
hadoop文件系统api层,用于根据默认实现将文件请求写入底层文件系统,所述hadoop文件系统api层和存储加密代理单元之间的数据io通信。
3.根据权利要求2所述的文件型门卫式存储加密功能的hadoop系统,其特征在于,所述存储加密代理单元基于hadoop抽象文件系统的java类实现了hadoop文件系统api层的所有接口。
4.根据权利要求1所述的文件型门卫式存储加密功能的hadoop系统,其特征在于,所述加密文件系统服务单元基于操作系统内核pagecache实现了对数据的缓存。
5.根据权利要求1所述的文件型门卫式存储加密功能的hadoop系统,其特征在于,所述密钥与文件i/o请求对应的文件一一对应且各不相同。
6.根据权利要求1所述的文件型门卫式存储加密功能的hadoop系统,其特征在于,所述存储系统包括hdfs、nas存储系统和分布式存储系统中的一种或多种。
7.一种权利要求1~6任一所述的文件型门卫式存储加密功能的hadoop系统的应用方法,其特征在于,包括hadoop计算节点文件加解密的步骤,具体包括:
1)mapreduce任务发起文件i/o请求,文件i/o请求到达hadoop计算节点的hadoop文件系统api层;
2)存储加密代理单元截获文件i/o请求并转发给加密文件系统服务单元;
3)加密文件系统服务单元收到文件i/o请求后,判断请求类型,若为写请求,调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将密文文件i/o数据流写入存储系统中;若为读请求,调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后的数据。
8.根据权利要求7所述的文件型门卫式存储加密功能的hadoop系统的应用方法,其特征在于,步骤3)中调用高速密码卡模块对文件i/o请求的明文数据加密并调用存储插件池将密文i/o数据流写入存储系统中具体包括以下步骤:
a1)将文件i/o请求数据写入文件缓存中并进行下一步;
a2)高速密码卡模块调用密码卡算法和预先分配的密钥对文件缓存的明文数据进行加密并进行下一步;
a3)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,然后将密文文件i/o数据流写入存储系统中,并将成功消息返回给存储加密服务单元。
9.根据权利要求7所述的文件型门卫式存储加密功能的hadoop系统的应用方法,其特征在于,步骤3)中调用存储插件池读取存储系统中对应的文件i/o数据流并调用高速密码卡模块对文件i/o数据流的密文数据解密得到解密后数据具体包括以下步骤:
b1)判断文件缓存中是否已经存在数据,是则将文件缓存中的数据返回给存储加密代理单元并结束,否则进行下一步;
b2)存储插件池调用存储系统对应的存储插件打开存储系统访问接口,读取文件i/o请求对应的密文文件i/o数据流并进行下一步;
b3)高速密码卡模块调用密码卡算法和预先分配的密钥对密文文件i/o数据流进行解密并将解密后的明文文件i/o数据流写入文件缓存,然后将文件缓存中的数据返回给存储加密代理单元。
技术总结