2016-08-01 66 views
0

我有一個執行spark工作的oozie工作流程,需要用戶名和密碼才能連接到各種服務器。現在我把它作爲參數傳遞到workflow.xml中: 用戶名 密碼在oozie spark作業工作流程中存儲密碼的更好方法

這是(當然)這樣做的壞方法,因爲它使密碼可見。在這種情況下,混淆密碼的標準方式是什麼?

謝謝!

回答

0

Sqoop是一個有趣的案例,因爲你可以在它的documentation看到:(!呸)

  • 起初有隻是--password命令行選項,然後在密碼爲明文
  • 然後--password-file被引入,後面是一個包含密碼的文件;這是一個明顯的進步,因爲
    (一)在邊緣節點上運行時,密碼本身是不運行任何人看見一個ps命令
    (B)在Oozie的運行時,你可以上傳文件一旦HDFS ,然後告訴Oozie將它下載到運行你的作業的YARN容器的CWD中,並使用<file>選項,並且任何檢查作業定義
    ----但是你不忘記限制對邊緣節點和HDFS上該死的文件的訪問,否則密碼仍然可能被破壞----
  • 最後,在Hadoop中引入了可選的Credential Store,第二Sqoop支持原生(儘管你現在有保護密碼的問題,您使用連接到憑據存儲...)

同樣,對於星火(以及任何自定義的Java/Scala/Python應用程序)我強烈建議您將所有敏感信息存儲在「屬性」文件中,限制對該文件的訪問,然後將其作爲命令行參數傳遞給您的程序。

如果你有獨特的Dev/Test/Prod環境,它也會讓你的生活更輕鬆 - Oozie腳本和「properties」文件名將完全相同,但實際的道具將是特定環境的。