在 CentOS 上对 HDFS 进行加密,常见且官方推荐的方式是 HDFS 透明加密(HDFS Transparent Encryption),此外还有 SSL/TLS 传输加密 和 磁盘级加密(LUKS) 作为补充。下面按实用程度逐步说明。
特点
mkdir -p /etc/hadoop/kms
keytool -genkeypair \
-alias kms \
-keyalg RSA \
-keysize 2048 \
-keystore /etc/hadoop/kms/kms.jks \
-storepass changeit
kms-site.xml<property>
<name>hadoop.kms.key.provider.uri</name>
<value>jceks://file/etc/hadoop/kms/kms.jks</value>
</property>
hadoop --daemon start kms
hdfs-site.xml
<property>
<name>dfs.encryption.key.provider.uri</name>
<value>kms://http@kms-host:9600</value>
</property>
重启 NameNode:
hadoop --daemon restart namenode
# 创建密钥
hadoop key create mykey
# 创建目录
hdfs dfs -mkdir /secure
# 设置为加密区
hdfs crypto -createZone \
-keyName mykey \
-path /secure
✅ 之后写入 /secure 的数据自动加密
hdfs crypto -listZones
hdfs dfs -put test.txt /secure/
防止 网络抓包
hdfs-site.xml<property>
<name>dfs.http.policy</name>
<value>HTTPS_ONLY</value>
</property>
ssl-server.xml适合 物理机/虚拟机磁盘泄露风险
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb secure_disk
mkfs.ext4 /dev/mapper/secure_disk
⚠️ 注意:LUKS 不能替代 HDFS 透明加密
| 方式 | 加密位置 | 是否透明 | 推荐度 |
|---|---|---|---|
| HDFS 透明加密 | 文件级 | ✅ | ⭐⭐⭐⭐⭐ |
| SSL/TLS | 网络 | ✅ | ⭐⭐⭐⭐ |
| LUKS | 磁盘 | ❌ | ⭐⭐⭐ |
如果你愿意,我可以: