第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Golang 中使用 docker 將敏感數(shù)據(jù)作為參數(shù)傳遞

在 Golang 中使用 docker 將敏感數(shù)據(jù)作為參數(shù)傳遞

Go
蕭十郎 2023-01-03 11:19:43
我在Go中創(chuàng)建了一個(gè)程序,它接收參數(shù),project_id并且private_token. 基本上這就是我的做法:project_id := flag.String("project", "", "The id of the project")private_token := flag.String("pat", "", "The personal access token with api and read user permissions")flag.Parse()我創(chuàng)建了以下 docker 鏡像:FROM golang:1.16-alpineWORKDIR /appCOPY . /appRUN go buildENV PROJECT=""ENV PRIVATE_TOKEN=""ENTRYPOINT "./my-program" "-project" $PROJECT "-pat" $PRIVATE_TOKEN我通過(guò)運(yùn)行運(yùn)行圖像:docker run -e PROJECT=29065042 -e PRIVATE_TOKEN="glpat-1CHf9T8Nz98W8ZzyT7V4" --rm -it my-image-name如您所見(jiàn),我正在傳遞一個(gè)私有令牌,這是一個(gè)敏感數(shù)據(jù)。我想知道這是否是將敏感數(shù)據(jù)從 docker 傳遞到我的 go 程序的最佳方法,或者是否有更好的模式?
查看完整描述

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文件,godotenvviper,我更喜歡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 的 VaultGoogle Cloud 的秘密管理器。AWSParameter 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)。


查看完整回答
反對(duì) 回復(fù) 2023-01-03
?
滄海一幻覺(jué)

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


查看完整回答
反對(duì) 回復(fù) 2023-01-03
  • 2 回答
  • 0 關(guān)注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)