Nginx

將機密(密碼、密鑰)導出到 systemd 託管服務環境的最佳實踐是什麼?

  • July 11, 2017

管理帳戶憑據和 SHA256 機密並將其提供給 systemd 託管服務的最佳實踐是什麼?

在舊的 init.d 方式中,我只需在 /etc/default 中安裝一個獲取原始碼的腳本。從那裡我可以將我想要的任何內容導入到環境變數中,然後我的服務可以使用這些內容。

所以我的問題是,為 systemd 託管服務提供登錄 ID/密碼憑據和其他“秘密”被認為是“最佳實踐”?是通過被認為“好”的環境傳遞它,還是有一種公認的更好/更安全的方式?

(即,放置您的服務(例如 mysql)密碼、SHA256 密碼等的最佳位置是什麼?您如何最有效地將這些資訊與需要它的長期執行的後台服務進行通信?有沒有比在環境中設置它們更好的管理方式在 systemd 啟動程序之前?)

我沒有一種正確的方法來傳遞安全憑證systemd。和指令肯定可以幫助傳遞環境變數Environment=EnvironmentFile=類似於舊的 init 系統。如果您正在尋找您曾經做過的事情的直接翻譯,就是這樣。

你的應用也可能使用它自己的配置系統,比如Node.js的node-config 。然後,配置包可以反過來提供用於管理機密的更多替代方案。例如,node-config 還可以從環境變數中載入值,但也可以git-crypt使用已加密儲存在 Git 中的值。

使用環境變數需要注意的一些事項:即使您不將設置的環境變數保存在文件中,如果在啟動時將它們傳遞給程序,環境變數及其值也可能在文件名中找到就像/proc/27/environ在 Linux 上一樣,使用者有權讀取文件。這些“啟動環境”值仍然存在,即使該過程稍後將其刪除。

如果您確實將環境變數載入到應用程序配置系統中,請考慮讓程序在配置系統中後從程序中刪除環境變數。那麼至少如果您在少一個地方擁有敏感資訊。

引用自:https://serverfault.com/questions/861361