KMS密钥管理服务(Hadoop)

本文详细介绍了Hadoop的KMS服务,它用于HDFS文件的AES加密,支持128、192和256位密钥。文章讨论了如何配置KMS,包括KMS的配置文件、密钥的创建与管理,以及如何通过Hadoop接口与KMS交互。此外,还涉及KMS的SSL配置、Kerberos认证、权限管理和访问代码集成,以确保在集群环境中的安全性。
摘要由CSDN通过智能技术生成

##前言 KMS是Hadoop下的一个密钥管理服务,它实际是与Hadoop结合,提供HDFS文件做AES加密用的。所以它是用来存储AES秘钥的,AES提供三种位数的秘钥,分别是128, 192, 256,所以KMS只能存储这三种位数的byte数组。

如果你是为了给HDFS文件加密,那么直接通过配置就可以完成,它与Hadoop能够完美契合,由Hadoop调用自动产生秘钥并管理秘钥。但是HDFS文件加密粒度太粗,我们的数据并非要全部加密,而当前针对Hive表列的加密并没有集成方案,官方提供了AES的encrypt函数,但是秘钥key还需明文传入。这样对集群来说其实很不安全。

如果我们自己实现加密UDF,然后借用KMS来做密钥管理,在KMS上加上Kerberos认证,秘钥的处理就可以都封装在UDF内部,不对外暴露,而且可以实现身份认证。

KMS本身提供了一系列API来创建,获取和维护密钥,官网介绍中主要以RESTFUL的形式提供,但如果集群上了Kerberos,请求的认证在RESTFULL里就不好做(具体没操作过)。在Hadoop源码里,提供了KMSClientProvider用于Hadoop的加密,所以我们可以利用这个接口来获取KMS服务,实现创建管理密钥。

##配置

  1. KMS是一个Web服务,只需要在一台机器上配置即可,其主要配置文件是kms-site.xml,主要配置项是hadoop.kms.key.provider.uri,配置值是KMS的key以文件形式存在哪个keystore文件里,配置格式是jceks://file@/path/to/kms.keystore,如jceks://file@/home/kms/kms.keystore,当然,服务最好以kms用户来起。这个文件会在KMS起来后生成。之后在kms-env.sh里配置export KMS_LOG=/path/to/logexport KMS_TEMP=/path/to/logkms.keystore文件本身和里面的存储密钥都有密码保护,默认配置项为hadoop.security.keystore.java-keystore-provider.password-file,密码存储在文件里,不可换行,由于KMS是通过ClassLoader.getResource来加载该文件,所以该配置必须配在KMS Web服务启动对应的conf目录下。此外也可通过环境变量设置,为HADOOP_KEYSTORE_PASSWORD,可将其配置在kms-env.sh里,环境变量的设置优先级最高!

  2. 然后在hadoop的core-site.xml里配上hadoop.security.key.provider.path,未启用https,其值为kms://http@${hostname}:16000/kms,如果启用了https,则应为kms://https@${hostname}:16000/kms

  3. 以上两步配完后,重启HDFS,然后以kms身份,启动KMS(/path/to/hadoop/sbin/kms.sh start),启动完后,就可以用/path/to/hadoop/bin/hadoop key list -metadata来查看KMS里存储的Key了,当然,还没有创建key,所以没有key信息,但是可以验证KMS服务是否配置正确。其次,这个命令虽然可以创建key,但是只能创建随机key,不能创建指定key。

  4. 配置SSL(https),确保传输过程加密。SSL需要用到证书,可以去CA官网下载一个证书作为网站根证书和信任证书,也可以用Java生成一个自签名证书并添加它为受信任证书。详细介绍可以参考CDH官网,我们这里采用自签名证书。

  • kms用户生成tomcat根证书(此根证书只能为当前机器上的Web服务所用,其他机器上的web服务如果需要SSL,也需要像这个一样单独生成该服务器的根证书。其次,该证书只是做SSL通信安全加密所用,并不具备可信任性,因为不是权威机构颁发),执行/usr/java/default/bin/keytool -genkey -alias tomcat -keyalg RSA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值