在 CentOS 上给 HDFS 加密,常见做法有 三种层级:HDFS 透明加密(推荐)、本地磁盘加密(LUKS)、应用层加密。下面重点讲 生产环境最常用的 HDFS Transparent Encryption(透明加密),并补充其他方案。
Hadoop 自带 KeyProvider + KMS
kms-site.xml<property>
<name>hadoop.kms.key.provider.uri</name>
<value>jceks://file@/etc/hadoop/kms.keystore</value>
</property>
$HADOOP_HOME/sbin/kms.sh start
验证:
curl http://localhost:9600/kms/v1/keys
hadoop key create hdfs_key_1
查看密钥:
hadoop key list
hdfs dfs -mkdir /secure_data
hdfs crypto -createZone \
-keyName hdfs_key_1 \
-path /secure_data
hdfs crypto -listZones
hdfs dfs -put data.txt /secure_data/
hdfs dfs -cat /secure_data/data.txt
✅ 数据在磁盘上是加密的
✅ 用户无感知
| 项目 | 说明 |
|---|---|
| 性能 | 有轻微 CPU 开销 |
| 文件移动 | 跨加密区需 copy |
| 快照 | 支持 |
| Hive / Spark | 无需修改 |
| 密钥管理 | 非常重要 |
适合 物理机 / 私有云
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb secure_disk
mkfs.ext4 /dev/mapper/secure_disk
mount /dev/mapper/secure_disk /data
✅ 防止磁盘丢失
❌ 不防 HDFS 内部访问
CentOS
└── LUKS 磁盘加密
└── HDFS
└── HDFS Transparent Encryption
└── KMS
有,但一般可接受(AES-NI 可加速)
✅ 可以,按 Encryption Zone
❌ 数据无法恢复
✅ 必须备份 KMS 密钥
如果你愿意,可以告诉我:
我可以给你 完整可执行的配置文件 + 命令清单 ✅