HDFS透明加密原理解析

目录:

1. HDFS透明加密

2.实现原理

3.KMS ACL用户权限配置

 

一. HDFS透明加密

HDFS Encryption Zone 加密空间,即HDFS透明加密,是一种端到端的加密模式,其中加解密过程对于客户端来说是完全透明的。

数据在客户端写操作时被加密,数据在客户端读操作时被解密,hdfs服务端本省并不是主要参与者。主要作用是保证加密空间内的数据不被非法查询。

 

二.实现原理

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

 

加密流程:

HDFS透明加密原理解析_第1张图片

HDFS透明加密原理解析_第2张图片

前提:创建HDFS加密区时会创建一个HDFS加密区(目录),同时会在KMS服务里创建一个key及其EZ Key,及两者之间的关联。

1.Client向NN请求在hdfs某个加密区新建文件;

2.NN向KMS请求此文件的EDEK,KMS用对应的EZ key生成一个新的EDEK发送给NN;

3.这个EDEK会被NN写入到文件的metadata中;

4.NN发送EDEK给Client;

5.Client发送EDEK给Kms请求解密,KMS用对应的EZ key将EDEK解密为DEK发送给Client;

6.Client用DEK加密文件内容发送给datanode进行存储。

 

分析总结:DEK是加解密一个文件的密匙,而KMS里存储的EZ key是用来加解密所有文件的密匙(DEK)的密匙。所以,EZ Key是更为重要的数据,只在KMS内部是用(DEK的加解密只在KMS内存进行),不会被传递到外面使用,而HDFS服务端只能接触到EDEK,所以HDFS服务端也不能解密加密区文件

 

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

 

其他细节说明:

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

2.每个Encryption Zone中的文件会有其唯一的Data Encryption Key(数据加密key)简称DEK.

3.DEK不会被HDFS直接处理,取而代之,hdfs只处理经过加密的DEK,就是Encrypted Data Encryption Key,简称EDEK。

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

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

HDFS透明加密原理解析_第3张图片

 

三.KMS ACL用户权限配置

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

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

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

key.acl.key1.DECRYPT_EEK

admin1

ACL for decryptEncryptedKey operations.

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

 

 

 

 

 

 

 

你可能感兴趣的:(大数据专栏,hdfs,加密区间)