Hadoopkms加密

一、目的:保证数据安全 
二、简介:
      Hadoop Key Management Server(KMS)是一个基于HadoopKeyProvider API编写的密钥管理服务器。他提供了一个client和一个server组件,client和server之间基于HTTP协议使用REST API通信。Client是一个KeyProvider的实现,使用KMS HTTP REST API与KMS交互。KMS和它的client有内置的安全机制,支持HTTP SPNEGO Kerberos认证和HTTPS安全传输。KMS是一个Java Web应用程序,运行在与Hadoop发行版绑定在一起的预先配置好的Tomcat服务器上。
  HDFS 实现透明,端到端加密。配置完成后,用户往hdfs上存储数据的时候,无需用户做任何程序代码的更改(意思就是调用KeyProvider API ,用于在数据存入到HDFS上面的时候进行数据加密,解密的过程一样)。这意味着数据加密和解密由客户端完成的。HDFS 不会存储或访问未加密的数据或数据加密密钥(由kms管理)

1.core-site.xml 新增配置项
//配置客户端的地址
<property>
<name>hadoop.security.key.provider.path</name>
<value>kms://http@master:16000/kms</value>
</property>
2.hdfs-site.xml 新增配置项
//主要配置hdfs
<property>
<name>dfs.encryption.key.provider.uri</name>
<value>kms://http@master:16000/kms</value>
</property>
以上两项配置结束后,重启Hadoop,之后变更仅重启kms服务即可。

3.使用keytool生成的秘钥密码是123456  将密码直接写入到kms.keystore.password文件(文件名一定要是这个)

echo  123456  > ${HADOOP_HOME}/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/classes/kms.keystore.password

${HADOOP_HOME}:表示Hadoop安装的路径

4.kms-env.sh        配置文件

export KMS_LOG=${KMS_HOME}/logs/kms

export KMS_HTTP_PORT=16000

export KMS_ADMIN_PORT=16001

三、创建秘钥

keytool -genkey  -alias 'key2'

Enter keystore password:123456        #-----此处创建的密码,需要和上面kms.keystore.password配置文件的密码相同

Re-enter new password:

What is your first and last name?

[Unknown]:           #-----这一部分内容,用户随意填写,可以不写

What is the name of your organizational unit?

[Unknown]: 

What is the name of your organization?

[Unknown]: 

What is the name of your City or Locality?

[Unknown]: 

What is the name of your State or Province?

[Unknown]:

What is the two-letter country code for this unit?

[Unknown]: 

Is CN=lch, OU=gdbd, O=gdbd, L=sz, ST=sz, C=sz correct?

[no]:  yes                    #输入yes

Enter key password for <user_a_key>

(RETURN if same as keystore password):

Re-enter new password:

四、重启kms
kms.sh start

查看kms是否开启成功,有下面的红色的表示成功

jps

五、创建加密区

hadoop key create user_a_key      #user_a_key为上面通过keytool创建的

hadoop key list   #查看key详细信息

下面表示有四个,分别是user_a_key、key2、abc、key1

hadoop fs -mkdir /sub_key2     #创建文件目录

hdfs crypto -createZone -keyName key2 -path /sub_key2  #---将sub_key2目录用key2加密

hdfs crypto -listZones      #---查看已加密区域

六.测试
    向加密区添加文件,然后具体磁盘上看到数据已经加密。

数据存放在:/tmp/hadoop-root/dfs/data/current/BP-1866606423-192.168.228.13-1538973674360/

finalized/subdiro/subdiro/blk..........

-------------温馨提示错误查看日志

cd /usr/local/hadoop/logs
 

原文地址:https://www.cnblogs.com/pigdata/p/10305608.html