2 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
有多種方法可以使用 docker 在 Go 應(yīng)用程序中存儲(chǔ)和使用敏感數(shù)據(jù)。每種方法都有其優(yōu)點(diǎn)和缺點(diǎn)。
1.硬編碼代碼里面的秘密。(永遠(yuǎn)不要這樣做)
const ( PROJECT_NAME = "MyProject" PRIVATE_TOKEN="kjdnioqvnocw")
優(yōu)點(diǎn):沒(méi)有。永遠(yuǎn)不要這樣做。
缺點(diǎn):開發(fā)人員會(huì)將您的生產(chǎn)機(jī)密視為他們?nèi)粘9ぷ鞯囊徊糠?。您的秘密將被檢查到源代碼管理中。兩者都是安全風(fēng)險(xiǎn)。此外,您必須修改代碼以在不同的環(huán)境中使用它,例如開發(fā)、測(cè)試和生產(chǎn)。
2. 將秘密放入環(huán)境變量中,從 .env 文件加載。 有兩個(gè)包可以輕松使用.env文件,godotenv和viper,我更喜歡godotenv因?yàn)樗菀住?br/>
優(yōu)點(diǎn):開發(fā)人員不會(huì)看到您的生產(chǎn)機(jī)密。您可以在開發(fā)、測(cè)試和生產(chǎn)中使用不同的秘密,而無(wú)需修改代碼。
缺點(diǎn):惡意代碼可以讀取您的秘密。您應(yīng)用程序的大部分代碼可能是開源庫(kù)。錯(cuò)誤的代碼可能會(huì)在您不知情的情況下潛入。
3. 將秘密放入專門的秘密管理器中,例如HashiCorp 的 Vault、Google Cloud 的秘密管理器。AWS的Parameter Store, Azure的Azure Key Vault
優(yōu)點(diǎn):惡意代碼更難讀取您的秘密。您可以審核誰(shuí)在何時(shí)訪問(wèn)了機(jī)密。您可以為誰(shuí)更新機(jī)密以及誰(shuí)可以讀取機(jī)密分配細(xì)粒度的角色。您可以更新和版本您的秘密。
缺點(diǎn):這是您學(xué)習(xí)的附加技術(shù)。它可能是您需要設(shè)置和管理的附加軟件,除非它包含在您使用的云平臺(tái)中。
所以選擇實(shí)際上是在上面的第 2 項(xiàng)和第 3 項(xiàng)之間。您選擇哪一個(gè)將取決于您的秘密有多敏感以及使用專門的秘密管理器需要多少額外工作。例如,如果您的項(xiàng)目在 Google Cloud Platform 上運(yùn)行,Secret Manager 只需一次 API 調(diào)用即可。在其他主要的云平臺(tái)上可能也一樣容易,但我對(duì)它們沒(méi)有第一手經(jīng)驗(yàn)。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
ENTRYPOINT "./my-program" "-project" $PROJECT "-pat" $PRIVATE_TOKEN
是一個(gè)獨(dú)立的 shell,不能共享以前 Dokerfile 行中的變量,這是使用 Dockerfiles 的權(quán)衡。
我想建議修改./my-program
以閱讀config-file
類似的內(nèi)容kubectl
。有一個(gè)很好的 Viper 包可以幫助實(shí)現(xiàn)這種方法。
IE: ENTRYPOINT "./my-program" "--config-file" "config.yaml"
您應(yīng)該在 ENTRYPOINT 之前將所有秘密保存在 config.yaml 中
參考資料:https ://github.com/spf13/viper
- 2 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報(bào)