Security

Elastic Beanstalk 的環境變數是否適合儲存機密值?

  • January 9, 2021

我已將我的 Django 應用程序部署到 Elastic Beanstalk,目的是使用其環境變數配置介面來儲存我的 API 密鑰,而不是將它們儲存在我的源中(如此處所述https://stackoverflow.com/a/17878600)。

這樣做之後,我發現 Beanstalk 所稱的環境變數實際上並不是 shell 環境變數(如此處所述https://stackoverflow.com/a/24564832/378638>)並且儲存在配置文件中的實例上(如此處描述<https://stackoverflow.com/a/24566283/378638)。

這對我來說似乎是一個安全問題。這不是破壞了將密鑰遠離源頭的目的嗎?我知道它們不再在儲存庫中,但它們仍然可以在實例上訪問。

我誤解了風險嗎?我是繼承的系統管理員,所以請原諒我的無知。我應該通過配置文件將 Beanstalk 變數載入為 shell 環境變數並繼續前進,因為該文件只能通過 root 訪問,還是我的擔憂有效?謝謝你。

對原始碼保密的目的是使它們不會進入原始碼控制。這在開源項目中特別有用。

部署時,密鑰是在文件中還是在 envvar 中都沒有關係。重要的是只有執行您的程序的作業系統使用者才能讀取它。這是 envvars 的預設值,很方便。

Root 可以隨時讀取所有內容。因此,如果亞馬遜願意,他們可以知道您的秘密值,因為它們是 root(儘管他們有禁止閱讀您的資料的政策)。

不過,它們確實支持昂貴的硬體安全模組 (HSM),這會使您的密鑰無法讀取。當然,他們仍然可以使用HSM 來解密你的東西,只是永遠不會得到實際的密鑰。

還有來自 AWS 的密鑰管理服務,它就像一個軟體 HSM

所以要麼你需要信任亞馬遜,要麼自己託管東西,要麼託管。

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