保護Git倉庫敏感信息
代碼中無可避免有一些敏感信息,包含但不限於,數據庫信息,密鑰,賬號信息等等。通常我們會把這些信息放在配置文件,這些信息若泄露會造成安全問題。
以前我們做法,是把配置文件通過.gitignore
排除配置文件,但是這些配置文件通常經常變動,沒有一個地方統一維護,靠線下互相傳,效率低下不說,也沒法維護。
那能不能既方便又安全管理敏感信息?答案當然是有,不然就沒今天這篇文章
下面就介紹如何利用git-crypt達到想要的效果
安裝
-
Mac OS X
brew install git-crypt brew install gpg
-
Linux
make && make install PREFIX=/usr/local
-
Windows
- 下載git-crypt.exe
- 放在Path目錄/添加Path目錄
此方法為未嘗試
使用
方法一(不依賴GPG)
-
初始化倉庫
git-crypt init
-
創建
.gitattributes
文件並編輯指定的加密文件touch .gitattributes vi .gitattributes
格式如下
appsettings.json filter=git-crypt diff=git-crypt *.key filter=git-crypt diff=git-crypt config/**.json filter=git-crypt diff=git-crypt
-
上傳代碼
git add . && git commit -m 'git crypt' git push
-
導出密鑰
git-crypt export-key /Users/wilsonpan/wilson.pan/keys/git-crypt-key
-
解密(第一次克隆之后)
git-crypt unlock /Users/wilsonpan/wilson.pan/keys/git-crypt-key
方法二(使用GPG)
-
初始化倉庫
git-crypt init
-
創建
.gitattributes
文件並編輯指定的加密文件touch .gitattributes vi .gitattributes
格式如下
appsettings.json filter=git-crypt diff=git-crypt *.key filter=git-crypt diff=git-crypt config/**.json filter=git-crypt diff=git-crypt
-
生成密鑰
gpg --gen-key # 按提示輸入相關信息, name, email
-
配置git-crypt
git-crypt add-gpg-user <USER_ID> # <USER_ID>填入上面輸入的名稱/key,不然會報錯
-
上傳代碼
git add . && git commit -m 'git crypt' git push
-
導出GPG密鑰
gpg --output git-crypt.pgp --armor --export-secret-key <USER_ID> # 步驟二生成
-
導入GPG密鑰(團隊成員)
gpg --import git-crypt.pgp
-
解密
git-crypt unlock
注意:需要加密的文件需要在放在版本控制之前放在.gitattributes
兩個方法都是使用公鑰私鑰非對稱加密,只要私鑰不泄露,安全性都是一樣,但是方式二可以設置密碼保護私鑰,防篡改,方式二比方式一安全性又高一點
方式二需要用到GPG,步驟也多一點,安全就是要犧牲一點便利性。
當上面加密步驟操作完,本地操作是無感知,服務器上文件是加密的二進制文件,其他成員克隆/更新需要使用git-crypt unlock
解密,只需要操作一次,以后都是正常提交推送即可
服務器上看是這樣
本地日志是不受影響