亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Golang 中使用 docker 將敏感數據作為參數傳遞

在 Golang 中使用 docker 將敏感數據作為參數傳遞

Go
蕭十郎 2023-01-03 11:19:43
我在Go中創建了一個程序,它接收參數,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()我創建了以下 docker 鏡像:FROM golang:1.16-alpineWORKDIR /appCOPY . /appRUN go buildENV PROJECT=""ENV PRIVATE_TOKEN=""ENTRYPOINT "./my-program" "-project" $PROJECT "-pat" $PRIVATE_TOKEN我通過運行運行圖像:docker run -e PROJECT=29065042 -e PRIVATE_TOKEN="glpat-1CHf9T8Nz98W8ZzyT7V4" --rm -it my-image-name如您所見,我正在傳遞一個私有令牌,這是一個敏感數據。我想知道這是否是將敏感數據從 docker 傳遞到我的 go 程序的最佳方法,或者是否有更好的模式?
查看完整描述

2 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

有多種方法可以使用 docker 在 Go 應用程序中存儲和使用敏感數據。每種方法都有其優點和缺點。

1.硬編碼代碼里面的秘密(永遠不要這樣做)

const (
    PROJECT_NAME = "MyProject"
    PRIVATE_TOKEN="kjdnioqvnocw")
  • 優點:沒有。永遠不要這樣做。

  • 缺點:開發人員會將您的生產機密視為他們日常工作的一部分。您的秘密將被檢查到源代碼管理中。兩者都是安全風險。此外,您必須修改代碼以在不同的環境中使用它,例如開發、測試和生產。

2. 將秘密放入環境變量中,從 .env 文件加載。 有兩個包可以輕松使用.env文件,godotenvviper,我更喜歡godotenv因為它更容易。

  • 優點:開發人員不會看到您的生產機密。您可以在開發、測試和生產中使用不同的秘密,而無需修改代碼。

  • 缺點:惡意代碼可以讀取您的秘密。您應用程序的大部分代碼可能是開源庫。錯誤的代碼可能會在您不知情的情況下潛入。

3. 將秘密放入專門的秘密管理器中,例如HashiCorp 的 Vault、Google Cloud 的秘密管理器AWSParameter Store, Azure的Azure Key Vault

  • 優點:惡意代碼更難讀取您的秘密。您可以審核誰在何時訪問了機密。您可以為誰更新機密以及誰可以讀取機密分配細粒度的角色。您可以更新和版本您的秘密。

  • 缺點:這是您學習的附加技術。它可能是您需要設置和管理的附加軟件,除非它包含在您使用的云平臺中。

所以選擇實際上是在上面的第 2 項和第 3 項之間。您選擇哪一個將取決于您的秘密有多敏感以及使用專門的秘密管理器需要多少額外工作。例如,如果您的項目在 Google Cloud Platform 上運行,Secret Manager 只需一次 API 調用即可。在其他主要的云平臺上可能也一樣容易,但我對它們沒有第一手經驗。


查看完整回答
反對 回復 2023-01-03
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

ENTRYPOINT "./my-program" "-project" $PROJECT "-pat" $PRIVATE_TOKEN是一個獨立的 shell,不能共享以前 Dokerfile 行中的變量,這是使用 Dockerfiles 的權衡。

我想建議修改./my-program以閱讀config-file類似的內容kubectl。有一個很好的 Viper 包可以幫助實現這種方法。

IE: ENTRYPOINT "./my-program" "--config-file" "config.yaml"

您應該在 ENTRYPOINT 之前將所有秘密保存在 config.yaml 中

參考資料:https ://github.com/spf13/viper


查看完整回答
反對 回復 2023-01-03
  • 2 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號