【问题标题】:How to Encrypt / Decrpyt files present in HDFS with GPG Encryption如何使用 GPG 加密对 HDFS 中存在的文件进行加密/解密
【发布时间】:2018-10-05 22:07:17
【问题描述】:
我想编写作业(在 Spark/JAVA 中),它应该执行加密和解密 HDFS 中存在的文件,而不是使用 GPG 复制回本地。
我有其他人的公钥来加密文件,我的私钥来解密其他人的文件。加密输入文件是 .gpg 格式,而解密输出文件应该是 .gpg
任何建议和代码都有帮助
【问题讨论】:
标签:
java
scala
apache-spark
encryption
gnupg
【解决方案1】:
我们实际上有使用 PGP 进行写入加密的生产流程。
您可以这样做的方法是设置加密编解码器。
不幸的是,AFAIK,没有准备好为 PGP/GPG 使用编解码器。
你可以使用这个:https://github.com/spotify/hadoop-openpgp-codec,但要注意它声明它不完整,不应该用于生产。
我们实际上以它为起点,并在 Scala 中为 spark 编写了自己的全部内容。不幸的是,它是为工作而完成的,我无法分享。
您还必须添加管理密钥的逻辑。我们只用它来加密,所以我们只是捆绑了公钥,但是为了解密,你必须管理你的私钥的安全性。
如果您已准备好编解码器并在 spark 作业中编译,您可以让 spark 自动加密和解密,如下所示:
context.hadoopConfiguration.set("mapreduce.output.fileoutputformat.compress", "true")
context.hadoopConfiguration.set("mapreduce.output.fileoutputformat.compress.codec", "com.spotify.hadoop.openpgp.OpenPgpCodec")