配置HBase使用透明加密
操作场景
HDFS实现透明加密,加密区配置完成后,用户往加密区上存储数据的时候,加解密处理流程由HDFS客户端完成,上层应用无感知。HBase的业务数据存放到HDFS上,默认支持透明加密,需要将HDFS上HBase根目录设置为加密分区。
前提条件
- 集群已安装KMS服务、HDFS服务、HBase服务等,且服务正常运行。
- 已配置HDFS服务对接KMS,请参见配置HDFS对接KMS。
- 已创建加密使用的key,请参见密钥管理。
- 已安装集群客户端,例如安装目录为“/opt/client”。
操作步骤
- 停止HBase服务。
登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务”,在“HBase”服务窗口单击右上角的,在弹出菜单中单击“停止服务”。
- 登录集群客户端,进入客户端安装目录。
例如:
cd /opt/client
- 导入客户端环境变量,然后使用系统内的hdfs用户执行kinit命令进行用户认证。
source bigdata_env
kinit hdfs
- 将HBase根目录(由“hbase.data.rootdir”参数指定,默认为“/hbase”)下的文件移动到备份目录。
例如,HBase根目录为“/hbase”,备份目录路径为“/hbase_bak”,则执行以下命令:
hdfs dfs -mkdir -p /hbase_bak/archive
hdfs dfs -mkdir -p /hbase_bak/data
hdfs dfs -mv /hbase/archive/* /hbase_bak/archive
hdfs dfs -mv /hbase/data/* /hbase_bak/data
hdfs dfs -rm -r /hbase/data
hdfs dfs -rm -r /hbase/archive
hdfs dfs -mv /hbase/* /hbase_bak
- 使用生成的key,将HBase根目录设置为加密分区。
hdfs crypto -createZone -keyName key_name -path HBase根目录
hdfs crypto -listZones //查看加密分区
例如:
hdfs crypto -createZone -keyName key1 -path /hbase
hdfs crypto -listZones
如果配置了“HDFS Federation”,则执行:
hdfs crypto -fs hdfs://NameService名称 -listZones //查看加密分区
例如:
hdfs crypto -fs hdfs://ns1 -listZones //查看加密分区
- 使用系统内的hbase用户执行以下命令进行用户认证。
kinit hbase
- 拷贝HBase旧有数据到加密分区。
hadoop distcp -update -delete -prbugpcaxt -skipcrccheck 备份目录 HBase根目录
例如:
hadoop distcp -update -delete -prbugpcaxt -skipcrccheck /hbase_bak /hbase
- 登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务 > HBase > 配置”,在HBase的配置页面,修改参数“hadoop.security.crypto.buffer.size”的值为“65536”,然后保存。
如果搜索不到该参数,选择“全部配置 > HBase > 自定义”,手动在“hadoop.config.expandor”参数中添加自定义参数。
- 启动HBase服务。
登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务”,在“HBase”服务窗口单击右上角的,在弹出菜单中单击“启动服务”。
- 删除备份目录。
hdfs dfs -rm -r 备份目录
例如:
hdfs dfs -rm -r /hbase_bak
如果配置了“HBase文件存储(HFS)”,且需要配置透明加密,则按照此方法删除HFS文件存储备份目录。