HDFS透明加密原理

Posted 中兴大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS透明加密原理相关的知识,希望对你有一定的参考价值。

文 | 张东涛

HDFS Encryption Zone加密空间,即HDFS透明加密,是一种端到端的加密模式,其中的加/解密过程对于客户端来说是完全透明的。数据在客户端读操作的时候被解密,当数据被客户端写的时候被加密,所以HDFS服务端本身并不是一个主要的参与者。形象地说,在HDFS服务端,你看到的只是一堆加密的数据流。

这个功能作用就是保证处于加密空间内的数据不被非法查询,只有经过认证的客户端才能查看解密内容。

准备知识

Encryption Zone是HDFS中的一个抽象概念,它表示此空间的内容在写的时候会被透明地加密,同时在读的时候,被透明地解密;用户往HDFS上存储数据的时候,无需用户做任何程序代码的更改(意思就是调用KeyProvider API ,用于在数据存入到HDFS上面的时候进行数据加密,解密的过程一样)。这意味着数据加密和解密由客户端完成的。HDFS不会存储或访问未加密的数据或数据加密密钥(由KMS管理)。

具体到细节:

  • 每个Encryption Zone 会与每个Encryption Zone Key相关联(EZ Key),这个Key会在创建Encryption Zone的时候同时被指定。

  • 每个Encryption Zone中的文件会有其唯一的Data Encryption Key数据加密Key,简称就是DEK。

  • DEK不会被HDFS直接处理,取而代之的是,HDFS只处理经过加密的DEK,就是Encrypted Data Encryption Key,缩写就是EDEK。

  • 客户端询问KMS服务去解密EDEK,然后利用解密后得到的DEK去读/写数据。KMS利用存储的EZ Key来解密EDEK得到DEK。

  • 在客户端向KMS服务请求时候,会有相关权限验证,不符合要求的客户端将不会得到解密好的DEK。而且KMS的权限验证是独立于HDFS的,是自身的一套权限验证。

HDFS透明加密原理

上图说明EZ Key、DEK、EDEK、FILE、Encrypted File之间的关系

加密流程

准备工作:HDFS加密区创建时,会建立一个HDFS加密区(目录)、KMS服务里的一个Key及其EZ Key,及两者之间的关联。

HDFS透明加密原理

  • 步骤1ClientNNHDFS组件的NameNode服务进程)请求在HDFS某个加密区新建文件;

  • 步骤2:NN向KMS请求此文件的EDEK,KMS用对应的EZ Key生成一个新的EDEK发送给NN;

  • 步骤3:这个EDEK会被NN写入到此文件的元数据(metadata)信息中;

HDFS透明加密原理

  • 步骤4NN 发送此EDEKClient

  • 步骤5:Client发送EDEK给KMS请求解密,KMS用对应的EZ Key将EDEK解密为DEK发送给Client;

  • 步骤6:Client用DEK加密文件内容发送给HDFS存储。

写流程总结

可以看出,DEK是加解密某一个文件的密钥,而KMS里存储的EZ Key是用来加解密所有文件的密钥(DEK)的密钥。相对来说,EZ Key是更为重要的数据,所以只在KMS内部使用(EDEK的加解密只在KMS内部进行),不会被传递到外面使用。而HDFS服务端只能接触到EDEK,所以HDFS服务端都做不到解密加密区文件。

读流程类似,区别就是NN直接读取加密文件元数据里的EDEK返回给请求客户端,客户端一样的需要把EDEK发送给KMS获取DEK,再对加密内容解密读取。 

KMS ACL用户权限配置

上面的步骤中有个关键点,如何保证某个合法用户能在KMS获取到自己的加密区文件的DEK,而屏蔽其他没有相关权限的用户。这个就和KMS服务的ACL权限配置有关。

在HDFS透明加密验证文档中有类似如下的配置:

KMS服务的配置文件kms-acls.xml:

<property>

    <name>key.acl.key1.DECRYPT_EEK</name>

    <value>admin1</value>

    <description>

        ACL for decryptEncryptedKey operations.

    </description>

</property>

这就是在KMS中指定admin1用户有权限获取key1对应的HDFS加密区文件的DEK。也就是说,还是通过KMS来控制用户在加密区的权限,跟HDFS服务端还是没关系。


 

大数据时代的思考和洞察

长按二维码关注

以上是关于HDFS透明加密原理的主要内容,如果未能解决你的问题,请参考以下文章

大数据集群被窃取数据怎么办?透明加密可以一试

源码加密产品设计理念的对比

十三:Transparent Encryption in HDFS(转)

证书透明化日志工作原理

数据加密 第六篇:透明文件加密

数据加密 第六篇:透明文件加密