在oozie spark job工作流程中更好地存储密码的方法

时间:2016-08-01 14:26:19

标签: hadoop apache-spark oozie

我有一个oozie工作流,它执行一个spark作业,需要用户名和密码才能连接到各种服务器。现在我将它作为参数传递给workflow.xml: 用户名 密码

它(当然)是一种不好的方法,因为它使密码可见。在这种情况下,模糊密码的标准方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

Sqoop 是一个有趣的案例,您可以在其documentation中看到:

  • 起初只有--password命令行选项,后面是纯文本密码(哎呀!)
  • 然后引入--password-file,然后是包含密码的文件;它是一个明显的改进因为(a)在边缘节点上运行时,任何运行ps命令的人都无法看到密码本身<\ n em>(b)在Oozie中运行时,您只需在HDFS中上传一次文件,然后告诉Oozie将其下载到运行您作业的YARN容器的CWD,并使用<file>选项,并且密码本身对于检查作业定义的人来说是不可见的 ----但是你不要忘记在边缘节点和HDFS上限制访问该死的文件,否则密码仍可能受到损害----
  • 最后,在Hadoop中引入了可选的Credential Store,Sqoop原生支持(尽管您现在遇到了保护用于连接到Credential Store的密码的问题......) < / LI>

同样,对于 Spark (以及任何自定义Java / Scala / Python应用程序),我强烈建议您将所有敏感信息存储在&#34;属性&#34; file,限制对该文件的访问,然后将其作为命令行参数传递给您的程序。

如果你有不同的Dev / Test / Prod环境 - Oozie脚本和&#34;属性&#34;它也会让你的生活更轻松。文件名将完全相同,但实际的道具将是特定于环境的。