HDFS加密区加密过程

版权声明:本文出自www.54manong.com,转载请注明原地址,谢谢! https://blog.csdn.net/xiaohuanglv/article/details/86735879

来源:我是码农,转载请保留出处和链接!

本文链接:http://www.54manong.com/?id=1218

HDFS加密区(encryption zone)中的每个文件都使用唯一的数据加密密钥(data encryption key, DEK)进行加密,明文DEK被区域级加密密钥:加密区密钥(encryption zone key, EZK)加密成加密的数据加密密钥(encrypted DEK, EDEK)。DEK不被永久保存,EDEK作为指定文件NameNode元数据中的扩展属性永久保存。

KMS:Hadoop密钥管理服务,KMS负责生成加密密钥(EZK和DEK)、与key server通信以及解密EDEK。KMS通过KeyProvider与key server进行通信。

HDFS 客户端向 HDFS 加密区中写入一个新文件时,发生的事件序列。

(1) HDFS 客户端调用 create() 函数写新文件。

(2) NameNode 请求 KMS 使用给定的 EZK-id/ 版本创建一个 EDEK。

(3) KMS 生成一个新的 DEK。

(4)KMS 从 key server 获取 EZK。

(5)KMS 对 DEK 进行加密,形成 EDEK。

(6)KMS 将 EDEK 提交给 NameNode。

(7) NameNode 将 EDEK 保存为文件元数据的扩展属性。

(8)NameNode 将 EDEK 提交给 HDFS 客户端。

(9)HDFS 客户端提交 EDEK 到 KMS,并请求 DEK。

(10)KMS 向 key server 请求 EZK。

(11)KMS 使用 EZK 解密 EDEK。

(12)KMS 将 DEK 提交给 HDFS 客户端。

(13) HDFS 客户端使用 DEK 加密数据。

(14) HDFS 客户端向 HDFS 写入加密数据块。

读取加密文件的事件序列如下。

(1) HDFS 调用 open() 函数来读文件。

(2)NameNode 将 EDEK 提交给客户端。

(3)HDFS 客户端将 EDEK 和 EZK-id/ 版本传递给 KMS。

(4)KMS 向 key server 请求 EZK。

(5)KMS 使用 EZK 解密 EDEK。

(6)KMS 将 DEK 提交给 HDFS。

(7) HDFS 客户端读取加密数据块,并使用 DEK 对其解密。

    理论基础:

    kms官网资料:http://hadoop.apache.org/docs/current/hadoop-kms/index.html

    hdfs加密区官网资料:

    https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/TransparentEncryption.html#crypto_command-line_interface

    加密区源码实现讲解:https://www.2cto.com/kf/201605/509285.html

    hdfs命令详解:

    https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

    Hadoop API:http://hadoop.apache.org/docs/current/api/overview-summary.html

猜你喜欢

转载自blog.csdn.net/xiaohuanglv/article/details/86735879