HDFS加密存储(Ranger集成KMS方式)

1、什么是HDFS透明加密?

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

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

2、Hadoop Key Management Server (KMS)

Hadoop KMS是一个基于Hadoop KeyProvider API的加密密钥管理服务器。它提供了一个使用REST API通过HTTP进行通信的客户端和服务器组件。客户端是一个KeyProvider实现与KMS交互使用KMS HTTP REST API。KMS及其客户端具有内置的安全性,它们支持HTTP SPNEGO Kerberos身份验证和HTTPS安全传输。KMS是一个Java Jetty网络应用程序。

3、Ranger 集成KMS

1、${rangerhome}/ranger-kms/install.properties设置如下
在这里插入图片描述

2、install/lib中添加commons-lang3-3.4.jar和 commons-compress-1.19.jar (这是因为安装时报了相关jar包缺失的问题,没有包相关异常,不必做这一步)
在这里插入图片描述

3、/opt/beh/core/ranger/ranger-kms/ews/webapp/lib/curator-.jar替换成与${hadoop}/share/hadoop/common/lib中的一致。(这一步同样报了异常才进行,这里报的是curator-.jar包冲突)
4、修改配置文件dbks-site.xml、kms-site.xml及hdfs-site.xml
4.1 dbks-site.xml文件

  <property>
        <name>ranger.ks.jpa.jdbc.password</name>
        <value>123456</value>
    </property>
    <property>
        <name>ranger.ks.jpa.jdbc.url</name>
        <value>jdbc:log4jdbc:mysql://数据库ip:3306/kms_82</value>
    </property>
    <property>
        <name>ranger.ks.jpa.jdbc.user</name>
        <value>root</value>
    </property>

4.2 kms-site.xml文件

 <property>
    <name>hadoop.kms.key.provider.uri</name>
    <value>dbks://http@hadoop01.bonc.com:9292/kms</value>
    <description>
      URI of the backing KeyProvider for the KMS.
    </description>
  </property>
 <property>
    <name>hadoop.kms.authentication.type</name>
    <value>kerberos</value>
    <description>
      Authentication type for the KMS. Can be either &quot;simple&quot;
      or &quot;kerberos&quot;.
    </description>
  </property>

  <property>
    <name>hadoop.kms.authentication.kerberos.keytab</name>
    <value>/opt/beh/metadata/key/hadoop.keytab</value>
    <description>
      Path to the keytab with credentials for the configured Kerberos principal.
    </description>
  </property>

  <property>
    <name>hadoop.kms.authentication.kerberos.principal</name>
    <value>HTTP/hadoop01.bonc.com@BONC.COM</value>
    <description>
      The Kerberos principal to use for the HTTP endpoint.
      The principal must start with 'HTTP/' as per the Kerberos HTTP SPNEGO specification.
    </description>
  </property>

4.3 ${hadoop}/etc/hadoop/core-site.xml配置文件添加以下配置
注:需重启hdfs

<property>
  <name>hadoop.security.key.provider.path</name>
<value>kms://http@hadoop01.bonc.com:9092/kms</value>
  <description>
    The KeyProvider to use when interacting with encryption keys used
    when reading and writing to an encryption zone.
  </description>
</property

5、执行./setup.sh安装ranger-kms.
6、执行ranger-kms start启动ranger-kms
7、添加key

在这里插入图片描述

8、keyadmin用户登录Ranger配置kmsdev服务,保存。
在这里插入图片描述

9、rangeradmin、hadoop、keyadmin用户授权
在这里插入图片描述
若没有rangeradmin用户则添加rangeradmin用户
在这里插入图片描述
10、测试连接
在这里插入图片描述
11、测试HDFS加密
11.1 查看key信息
在这里插入图片描述
11.2 创建空目录(hadoop用户)

hadoop fs -mkdir /jxtest

11.3 创建加密区间

hdfs  crypto -createZone -keyName key -path /jxtest

11.4 查看加密区间内容

hadoop fs -cat  /jxtest/users.txt

此时能正常查看
11.5 剔除hadoop用户
在这里插入图片描述

此时不能正常查看

**

Ranger集成KMS采坑记录

**
1、执行setup.sh安装ranger-kms报jar包缺失问题
解决方案:在/opt/beh/core/ranger/ranger-kms/install/lib中添加commons-compress-1.19.jar和 commons-lang3-3.4.jar包。
2、启动ranger-kms时报NoSuchMethodError
org.apache.curator.framework.api.CreateBuilder.creatingParentsIfNeeded()Lorg/apache/curator/framework/api/ProtectACLCreateModeStatPathAndBytesable

在这里插入图片描述
解决方案:版本冲突导致,8.2版本仓库中curator-*的jar包相关版本如下。
在这里插入图片描述
但是ranger-kms中的curator-*版本如下。
在这里插入图片描述
將ranger-kms中的curator-*的jar包版本統一为4.2.0
3、执行ranger-kms 启动在
/opt/beh/core/ranger/ranger-kms/ews/webapp/WEB-INF/classes/conf/ranger-kms-env-hadoopconfdir.sh文件中报错

export RANGER_HADOOP_CONF_DIR=2022-04-14 17:30:44,912  [E] 'hadoop_conf' not found in /opt/beh/core/ranger/ranger-kms/install.properties file while getting....!!

修改/opt/beh/core/ranger/ranger-kms/install.properties中的下列配置,指定hadoop配置文件目录
在这里插入图片描述
4、在Ranger中测试连接时报以下异常,授予rangeradmin相应权限即可。

org.apache.ranger.plugin.client.HadoopException: {
	"RemoteException" : {
	"message" : "User:rangeradmin not allowed to do 'GET_KEYS'",
	"exception" : "AuthorizationException",
	"javaClassName" : "org.apache.hadoop.security.authorize.AuthorizationException"
	}
}.

keyadmin用户登录ranger设置如下。
在这里插入图片描述

HDFS透明加密的测试过程可以按照以下步骤进行: 1. 配置HDFS透明加密:首先,需要在HDFS配置文件中开启透明加密功能。具体的配置方式可以参考HDFS的官方文档或相关资源。 2. 创建加密区域:在加密区域中的文件会被自动加密和解密。可以使用HDFS命令或者相关API来创建加密区域。 3. 写入测试文件:在加密区域中写入测试文件,可以使用HDFS命令或者相关API来完成。写入的文件会被自动加密。 4. 读取测试文件:从加密区域中读取测试文件,可以使用HDFS命令或者相关API来完成。读取的文件会被自动解密。 5. 验证加密效果:可以使用命令行工具或者编程语言来验证测试文件是否被正确加密和解密。可以比较原始文件和解密后的文件的内容是否一致。 需要注意的是,对于HDFS透明加密的测试过程,可以使用HDFS命令行工具或者编程语言中的HDFS API来进行操作。测试时需要确保配置正确,并且要使用加密区域中的文件进行读写操作,以验证文件的加密和解密过程是否正常。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [HDFS 透明加密使用、Keystore和Hadoop KMS加密区域、透明加密关键概念和架构、KMS配置](https://blog.csdn.net/qq_40585384/article/details/121896015)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [HDFS加密存储Ranger集成KMS方式)](https://blog.csdn.net/qq_44530691/article/details/124242082)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值