温馨提示×

centos上hdfs如何加密

小樊
33
2026-09-15 14:53:22
栏目: 网络安全

CentOS 上对 HDFS 进行加密,常见且官方推荐的方式是 HDFS 透明加密(HDFS Transparent Encryption),此外还有 SSL/TLS 传输加密磁盘级加密(LUKS) 作为补充。下面按实用程度逐步说明。


一、HDFS 透明加密(推荐 ✅)

特点

  • 数据在写入 HDFS 时自动加密,读取时自动解密
  • 对应用透明(MapReduce / Spark / Hive 无感)
  • 密钥由 KMS(Key Management Server) 管理

1. 前置条件

  • Hadoop 2.6+(推荐 3.x)
  • 已部署 KMS(Hadoop 自带 KMS 或企业 KMS)
  • CentOS 7/8 正常安装 JDK

2. 配置 KMS(以 Hadoop 自带 KMS 为例)

(1)创建 KMS 密钥库

mkdir -p /etc/hadoop/kms
keytool -genkeypair \
  -alias kms \
  -keyalg RSA \
  -keysize 2048 \
  -keystore /etc/hadoop/kms/kms.jks \
  -storepass changeit

(2)配置 kms-site.xml

<property>
  <name>hadoop.kms.key.provider.uri</name>
  <value>jceks://file/etc/hadoop/kms/kms.jks</value>
</property>

(3)启动 KMS

hadoop --daemon start kms

3. 配置 HDFS 使用 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

4. 创建加密区(Encryption Zone)

# 创建密钥
hadoop key create mykey

# 创建目录
hdfs dfs -mkdir /secure

# 设置为加密区
hdfs crypto -createZone \
  -keyName mykey \
  -path /secure

✅ 之后写入 /secure 的数据自动加密


5. 验证

hdfs crypto -listZones
hdfs dfs -put test.txt /secure/

二、HDFS 传输加密(SSL/TLS)

防止 网络抓包

配置 hdfs-site.xml

<property>
  <name>dfs.http.policy</name>
  <value>HTTPS_ONLY</value>
</property>

配置 ssl-server.xml

  • 使用 CA 签发证书
  • 配置 KeyStore / TrustStore

三、磁盘级加密(可选补充)

适合 物理机/虚拟机磁盘泄露风险

LUKS 加密(CentOS)

cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb secure_disk
mkfs.ext4 /dev/mapper/secure_disk

⚠️ 注意:LUKS 不能替代 HDFS 透明加密


四、权限 & 合规建议

  • 结合 Kerberos 做身份认证
  • 使用 Ranger / Sentry 做访问控制
  • 加密区目录不要放临时数据

五、总结对比

方式 加密位置 是否透明 推荐度
HDFS 透明加密 文件级 ⭐⭐⭐⭐⭐
SSL/TLS 网络 ⭐⭐⭐⭐
LUKS 磁盘 ⭐⭐⭐

如果你愿意,我可以:

  • 给你一份 CentOS + Hadoop 3.x 完整加密部署清单
  • 或针对 CDH / HDP / 社区版 给具体步骤

0