顯然,我們不想在每個腳本中對明文密碼進行硬編碼。這將使循環密碼變得困難,因爲除了密碼是以明文形式出現之外,還需要改變大量的腳本。處理需要數據庫(MySQL)密碼的腳本的安全方法是什麼?
如果腳本將密碼作爲參數,那麼我們需要擔心修改'ps'輸出而不顯示密碼參數的值。我們也不得不擔心在shell歷史中記錄的命令。這可以通過bash上的HISTIGNORE/HISTCONTROL進行潛在的處理,但是還有其他的shell使用不同的靈活的歷史控制(例如:zsh)。 我們也可以使用命令行特定的環境變量(FOO = bar ./script),雖然'FOO = bar'不會顯示在'ps'中,但默認情況下仍然會記錄到shell歷史記錄中。此外,無論如何,一些系統會暴露其他用戶的進程環境(通過'ps')。
可以使用一個密碼(配置)文件來存儲明文密碼。這個文件可以擁有/許可,以加強其訪問。但是,在一天結束時,您仍然擁有明文密碼。
提示也是一種選擇,但這往往不太方便(例如,儘管如此,仍然可以通過預期),並且如果腳本需要這樣的話,非交互性會變得複雜。
可以使用一些風味的加密,但是我們仍然有類似的問題來解決解密密鑰。
我應該只是去上面的一個嗎?其他選擇可能會更好嗎?人們如何處理這種情況是一種安全的方式?
這裏的一般目標是,如果攻擊者以某種方式進入使用數據庫服務器的系統,攻擊者不應該能夠組成數據庫服務器。例如,攻擊不應該能夠找到位於某處的密碼,不應該能夠觀察系統('ps')發現它,並且不應該能夠「及時回顧」 (shell歷史)來找到它。
我完善的意識到,有數百萬的場景(kmem,交換頁面等..等),並且大多數投注如果攻擊者得到根或物理訪問,並且沒有什麼會是100%安全。我只是真的想在之內尋找最好的方法。 :-)
是,這樣做。 +1。 – MarkR 2010-02-12 07:55:16