[英]Private and public Git repositories with sensitive data
我目前正在Heroku上運行一項服務。
部署與Heroku一起使用的方式是將代碼推送到git存儲庫,該存儲庫觸發構建並隨后部署新代碼。
由於這是將服務部署到Heroku的唯一方法,因此該git存儲庫包含許多敏感信息,例如幾個配置文件中的令牌和客戶端機密。 因此,存儲庫目前是一個私有存儲庫,但我想將其變為公共存儲庫。
通常我只是.gitignore配置文件並將它們排除在外,但由於提交文件是將它們送到Heroku的唯一方法,我不能這樣做。
我想我可以通過兩個分支來解決這個問題,我只需要推送到不同的遙控器,其中一個是私人的去Heroku,一個是GitHub的公共分支。
在開發過程中,我會推送到私有分支,然后將這些更改(減去配置)合並到公共分支,一切都會好的。 不幸的是,這樣做會導致合並包含來自私有分支的所有歷史記錄,其中包括敏感數據,所以這是不行的。
是否有可能以其他方式做到這一點?
我也對替代解決方案持開放態度。
這些情況通常如何解決?
我覺得這不可能是一個獨特的情況。
您可以使用Heroku的Config Vars存儲您的敏感數據。 您將能夠從代碼中將數據作為環境變量進行訪問。
如今,大多數雲托管服務都能讓您設置環境變量,將其用於敏感值被認為是一種很好的做法 。
例如,您可以使用heroku cli設置環境變量,如下所示:
heroku config:set GITHUB_USERNAME=joesmith
大多數編程語言提供了訪問環境變量的方法。 例如,使用Python,您可以使用:
import os
print(os.environ['GITHUB_USERNAME'])
無論您當前使用敏感數據,都可以將其替換為環境變量。
環境變量的另一個優點是它們無處不在。 幾乎每個操作系統和雲服務都支持它們,因此如果您希望開源項目並支持盡可能多的平台,那么它們就不用擔心了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.