自動化部署時如何處理密碼?

自動化部署時如何處理密碼?

作為負責任的管理員,我們知道常見的弱點,例如

但在實踐中我們該如何處理呢?

當然,借助 SSH 無密碼身份驗證等技術和 sudo 等工具,可以擺脫重要位置儲存的登入憑證,這在 Linux 伺服器的自動化部署過程中確實很有幫助。

但是,一旦您離開作業系統並安裝應用程序,您很可能會遇到安全儲存密碼的問題。

例如,如果您安裝資料庫伺服器,很可能需要將明文密碼儲存到 Web 應用程式的設定檔中。

然後,您應該保護設定文件,以便只有管理員才能查看憑證,並且您應該限制資料庫使用者的存取權限,以限制可能的安全性影響。

但是如何處理例如主管理資料庫帳戶?至少你的資料庫管理員應該知道它(所以你需要在某個地方有明文),並且作為作業系統管理員你應該知道不是知道憑據。或者部署是由 DevOps 完成的,他們不應該知道任何生產伺服器上的憑證。

可能的解決方案

經過長時間的思考,我提出了三種可能的解決方案,但它們都有自己的弱點:

  1. 在部署期間產生隨機憑證並將其以一次寫入的方式儲存在資料庫中。例如,dbas 有另一個只能讀取資料庫憑證的使用者。但是要如何處理 webapps 設定檔中的明文密碼呢? root 使用者可以讀取它們。密碼資料庫的 root 使用者也可能讀取全部密碼憑證。

  2. 在部署期間接受明文密碼和預設憑證,並新增可變更的後記任何和所有密碼。甚至可能是互動的,授權人員必須在腳本運行時輸入憑證。

  3. 使用受信任第三方的金鑰對密碼進行非對稱加密。當請求密碼時,它必須是後來改變了。

你怎麼認為?您在這裡看到任何最佳實踐嗎?

答案1

  1. 您應該擁有一個安全、加密的資料庫,其中包含您的所有憑證
  2. 在部署期間,伺服器應該透過防火牆完全無法從外部存取
  3. 可以讓腳本產生隨機通行證並將其透過電子郵件發送給您
  4. 在配置伺服器之後、在允許公開存取之前更改該密碼也是可以的
  5. 透過電子郵件向自己發送密碼是可以的,只要它使用您的內部郵件伺服器並且不是透過 SMTP 透過公共路由(SMTPS 是一個不同的故事)

您可以用電子郵件代替幾乎任何協議。您可以將密碼發送到某處,使用 onetimesecret api 建立一次性訊息,使用 https 將其上傳到私人要點,或您能想到的任何其他方式。

我認為這涵蓋了它。

相關內容