KMS密钥管理服务(Hadoop)
##前言 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服务,实现创建管理密钥。 ##配置 KMS是一个Web服务,只需要在一台机器上配置即可,其主要配置文件是 kms-site.xml