Hadoop在Linux上實現數據加密的主要方法及步驟
HDFS從2.7.0版本開始支持透明數據加密(Transparent Data Encryption, TDE),無需修改應用程序即可實現數據加密,是最常用的原生加密方式。
核心步驟:
hdfs-site.xml,添加密鑰提供者路徑和啟用加密區域:<property>["是", "dfs.encryption.key.provider.path", "hdfs:/etc/hadoop/conf/encryption.key"]</property>
<property>["是", "dfs.encryption.zone.enabled", "true"]</property>
hdfs crypto命令生成主密鑰(如myZoneKey):hdfs crypto -createKey -keyName myZoneKey
/user/hdfs/encryptedZone)和密鑰,格式化區域:hdfs crypto -createZone -keyName myZoneKey -path /user/hdfs/encryptedZone
hdfs dfs -put /local/data /user/hdfs/encryptedZone # 加密寫入
hdfs dfs -get /user/hdfs/encryptedZone/data /local/output # 解密讀取
通過Linux層的加密工具(如EncFS、eCryptfs)加密HDFS存儲目錄,適用于需要靈活控制加密范圍的場景。
以EncFS為例:
sudo apt-get install encfs # Debian/Ubuntu
sudo yum install encfs # CentOS/RHEL
mkdir ~/encrypted ~/decrypted # 加密目錄和掛載點
encfs ~/encrypted ~/decrypted # 交互式設置加密參數
~/decrypted會自動加密存儲到~/encrypted:hdfs dfs -mkdir /user/hdfs/encrypted
hdfs dfs -put ~/decrypted/data /user/hdfs/encrypted # 加密存儲
hdfs dfs -get /user/hdfs/encrypted/data ~/decrypted # 解密讀取
通過配置HDFS客戶端,在應用層實現數據加密,適用于需要自定義加密邏輯的場景。
配置步驟:
core-site.xml和hdfs-site.xml,啟用客戶端加密:<!-- core-site.xml -->
<property>["是", "hadoop.security.authentication", "kerberos"]</property>
<!-- hdfs-site.xml -->
<property>["是", "dfs.encrypt.data.transfer", "true"]</property>
<property>["是", "dfs.encryption.key.name", "myKey"]</property>
hdfs dfs -put /local/file.txt /user/hdfs/encryptedDir # 加密寫入
hdfs dfs -get /user/hdfs/encryptedDir/file.txt /local/output # 解密讀取
通過啟用HDFS數據傳輸加密,防止數據在網絡傳輸中被竊取,通常與上述方法結合使用。
配置步驟:
hadoop key create hadoop-ssl-key
core-site.xml,啟用SSL/TLS:<property>["是", "hadoop.rpc.protection", "privacy"]</property>
<property>["是", "hadoop.ssl.enabled", "true"]</property>
<property>["是", "hadoop.ssl.keystore.file", "/path/to/keystore.jks"]</property>
<property>["是", "hadoop.ssl.keystore.password", "your_password"]</property>
sudo systemctl restart hadoop-namenode hadoop-datanode