摘要:传统大数据集群中,用户数据明文保存在HDFS中,集群的维护人员或者恶意攻击者可在OS层面绕过HDFS的权限控制机制或者窃取磁盘直接访问用户数据。
本文分享自华为云社区《FusionInsight MRS透明加密方案》,作者: 一枚核桃 。
概述
传统大数据集群中,用户数据明文保存在HDFS中,集群的维护人员或者恶意攻击者可在OS层面绕过HDFS的权限控制机制或者窃取磁盘直接访问用户数据。
FusionInsight MRS引入了Hadoop KMS服务并进行增强,通过对接第三方KMS,可实现数据的透明加密,保障用户数据安全。
- HDFS支持透明加密,Hive、HBase等在HDFS保存数据的上层组件也将通过HDFS加密保护,加密密钥通过HadoopKMS从第三方KMS获取。
- 对于Kafka、Redis等业务数据直接持久化存储到本地磁盘的组件,通过基于LUKS的分区加密机制保护用户数据安全。
HDFS透明加密
- HDFS透明加密支持AES、SM4/CTR/NOPADDING加密算法,Hive、HBase使用HDFS透明加密做数据加密保护。SM4加密算法由A-LAB基于OpenSSL提供。
- 加密使用的密钥从集群内的KMS服务获取,KMS服务支持基于Hadoop KMS REST API对接第三方KMS。
- 一套FusionInsight Manager内部署一个KMS服务,KMS服务到第三方KMS使用公私钥认证,每个KMS服务在第三方KMS对应拥有一个CLK。
- 在CLK下可以申请多个EZK,与HDFS上的加密区对应,用于加密数据加密密钥,EZK在第三方KMS中持久化保存。
- DEK由第三方KMS生成,通过EZK加密后持久化保存到NameNode中,使用的时候使用EZK解密。
- CLK和EZK两层密钥可以轮转。CLK作为每个集群的根密钥,在集群侧不感知,轮转完全由第三方KMS控制管理。EZK可通过FI KMS管理,轮转在FI KMS可控制管理,同时第三方KMS管理员拥有KMS内密钥的管理能力,也可以做EZK的轮转。
LUKS分区加密
对于Kafka、Redis等业务数据直接持久化存储到本地磁盘的组件,FusionInsight集群支持基于LUKS的分区加密进行敏感信息保护。
FusionInsight安装过程的脚本工具使用Linux统一密钥设置(Linux Unified Key Setup,简称LUKS)分区加密方案,该方案加密分区时会在集群每个节点生成或者从第三方KMS获取访问密钥,用于加密数据密钥,以保护数据密钥安全性。磁盘分区加密后,重启操作系统或者更换磁盘场景下,系统能够自动获取密钥并挂载或创建新的加密分区。