HDFS的透明加密

一、HDFS透明加密原理

Hadoop的透明加密(HDFS Transparent Data Encryption) - TDE

1.HDFS中的数据明文存储

HDFS中的数据会以block的形式保存在各台数据节点的本地磁盘中,但这些block都是明文的。 通过Web UI页面找到Block的ID和副本位于的机器信息 如果在操作系统中直接访问block所在的目录,通过Linux的cat命令是可以直接查看里面的内容的,且是明文。

常见的加密层级:

  1. 应用层加密: 这是最安全和最灵活的方法。加密内容最终由应用程序来控制。并且可以精确的反应用户的需求。但是,编写应用程序来实现加密一般都比较困难。
  2. 数据库层加密: 类似于应用程序级加密。大多数数据库供应商都提供某种形式的加密。但是可能存在性能问题。比如:索引无法加密。
  3. 文件系统层加密: 这种方式对性能影响不大,且对应用程序是透明的,一般也比较容易实施。但是如果需要应对细粒度的要求策略,可能无法完全满足。比如:加密文件系统(EFS)用于在(NTFS)文件系统卷上存储已加密的文件。
  4. 磁盘层加密: 易于部署和高性能,但是相当不灵活,只能防止用户从物理层面盗窃数据。

 

2.HDFS中的透明加密

HDFS透明加密(Transparent Encryption)支持端到端的透明加密,启用以后,对于一些需要加密的HDFS目录里的文件可以实现透明的加密和解密,而不需要修改用户的业务代码。端到端是指加密和解密只能通过客户端。 对于加密区域里的文件,HDFS保存的即是加密后的文件,文件加密的秘钥也是加密的。让非法用户即使从操作系统层面拷走文件,也是密文,无法解密查看文件内容。

HDFS透明加密的特点:

  1. HDFS集群管理和密钥的管理是互相独立的职责,由不同的用户角色(HDFS管理员,密钥管理员)承担
  2. 只有HDFS客户端可以加密或解密数据,密钥管理在HDFS外部,HDFS无法访问未加密的数据或加密密钥
  3. block在操作系统是以加密的形式存储的,从而减轻了操作系统和文件系统级别的安全威胁
  4. HDFS使用AES-CTR(支持128位加密密钥(默认))加密算法

 

3.HDFS中的透明加密技术原理

1)、加密区域

    • HDFS的透明加密有一个新的概念,加密区域(the encryption zone)
    • 加密区域就是HDFS上的一个目录
    • 加密区域里写入文件的时候会被透明加密,读取文件的时候又会被透明解密

2)、密钥

  • 当加密区域被创建时,都会有一个加密区域密钥(EZ密钥,encryption zone key)与之对应,EZ密钥存储在HDFS外部的密钥库中
  • 加密区域里的每个文件都有其自己加密密钥,叫做数据加密密钥(DEK,data encryption key)
  • DEK会使用其各自的加密区域的EZ密钥进行加密,以形成加密数据加密密钥(EDEK)

3)、密钥库(keystore)

存储密钥(key)的叫做密钥库(keystore),将HDFS与外部企业级密钥库(keystore)集成是部署透明加密的第一步。这是因为密钥(key)管理员和HDFS管理员之间的职责分离是此功能的非常重要的。但是,大多数密钥库都不是为Hadoop工作负载所见的加密/解密请求速率而设计的。

4)、KMS(密钥管理服务)

Hadoop密钥管理服务(Key Management Server,简写KMS),用作HDFS客户端与密钥库之间的代理。KMS主要有以下几个职责:

-- 访问加密区域秘钥(EZ key)

-- 生成EDEK,EDEK存储在NameNode上

-- 为HDFS客户端解密EDEK

5)、写入加密文件过程

前提:创建加密区,设置加密区密钥

1、Client向NameNode请求在HDFS某个加密区新建文件

2、NameNode从缓存中取出一个新的EDEK(后台不断从KMS拉取新的EDEK到缓存中)

3、获取到EDEK会被NameNode保存到文件的元数据中

4、然后NameNode将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。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值