admin管理员组文章数量:1639831
目录:
1. HDFS透明加密
2.实现原理
3.KMS ACL用户权限配置
一. HDFS透明加密
HDFS Encryption Zone 加密空间,即HDFS透明加密,是一种端到端的加密模式,其中加解密过程对于客户端来说是完全透明的。
数据在客户端写操作时被加密,数据在客户端读操作时被解密,hdfs服务端本省并不是主要参与者。主要作用是保证加密空间内的数据不被非法查询。
二.实现原理
Encryption Zone是HDFS中的一个抽象概念,它表示此空间的内容在写的时候会被透明地加密,同时在读的时候,被透明地解密;用户往HDFS上存储数据的时候,无需用户做任何程序代码的更改(意思就是调用KeyProvider API ,用于在数据存入到HDFS上面的时候进行数据加密,解密的过程一样)。这意味着数据加密和解密由客户端完成的。HDFS不会存储或访问未加密的数据或数据加密密钥(由KMS管理)。
加密流程:
前提:创建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的,是自身的一套权限验证。
三.KMS ACL用户权限配置
上面的步骤中有个关键点,如何保证某个合法用户能在KMS获取到自己的加密区文件的DEK,而屏蔽其他没有相关权限的用户。这个就和KMS服务的ACL权限配置有关。
在HDFS透明加密验证文档中有类似如下的配置:
KMS服务的配置文件kms-acls.xml:
<property>
<name>key.acl.key1.DECRYPT_EEK</name>
<value>admin1</value>
<deion>
ACL for decryptEncryptedKey operations.
</deion>
</property>
这就是在KMS中指定admin1用户有权限获取key1对应的HDFS加密区文件的DEK。也就是说,还是通过KMS来控制用户在加密区的权限,跟HDFS服务端还是没关系。
版权声明:本文标题:HDFS透明加密原理解析 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729295973a1194721.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论