1. 程式人生 > >如何刪除GIT倉庫中的敏感資訊

如何刪除GIT倉庫中的敏感資訊

如何刪除GIT倉庫中的敏感資訊

正常Git倉庫中應該儘量不包含資料庫連線/AWS帳號/巨大二進位制檔案,否則一旦洩漏到Github,這些非常敏感資訊會影響客戶的資訊保安已經公司的信譽。公司可能其它還有相關規定,如禁止私人郵件加入GIT倉庫。如果違反這些規定,可能會面臨辭退、高額罰款、或牢獄之災等非常嚴厲的懲罰。

由於Git的正常操作流程,導致敏感資訊一旦進入主分支,再怎麼在新的Pull Request中刪除,也無能為力了。其它人都能在歷史記錄中查詢到歷史記錄中的配置。所以這要求對Git的簽名和簽入、推送要有高度的敬畏之心。

然而根據墨菲定律,可能發生的事情一定會發生。時不時,故意或失手,就會有人將這些資訊寫到了Git

倉庫中。如果程式碼還沒有上傳(git push),那可能還好說,只要將分支刪除,然後重新寫一下功能即可。但如果已經上傳了,或功能太多太複製沒辦法及時刪除,就會後悔莫及了。

這裡我將演示一個故意寫滿“敏感資訊”的Github倉庫,然後一步一步演示怎麼在歷史記錄中,刪除“敏感資訊”,以完成“脫敏”。

倉庫需處理的問題說明:

敏感源 敏感原因 處理方法
[email protected] 個人郵箱簽入公司專案 替換為“公司”郵箱:[email protected]
檔案Program.cs AWS Key儲存在檔案 替換將AWS Key為:REPLACED
檔案appsettings.Production.json 生產環境配置檔案 刪除
資料夾userSecrets 敏感資訊資料夾 刪除
Program.exe 大二進位制檔案簽入 刪除

這個演示滿載“敏感”資訊的程式碼倉庫,可以從:https://github.com/sdcb/sensitive-repo-demo 這裡下載。

“敏感”資訊演示:

  • 個人郵箱簽入“公司”專案,可以通過gitk命令看到:

  • AWS Key配置寫在程式碼中(見Program.cs):

      string awsAccessKey = "pwiCZSMCIcM6+q+h";
      string awsSecretKey = "861YUaeCHqzaS5OX+OmAK1XD37kmQhA2";
      Console.WriteLine("Hello, I Switched to correct email!");
  • 生產環境配置檔案(見appsettings.Production.json):

      {
          "ConnectionString": "Data Source=production-db.starworks.cc,32768; User Id=sensitive_user; Password=MyVeryVerlyStr0ngPassw0rd!; Initial Catalog=ProductionDB; app=Program1"
      }
  • 敏感資訊資料夾(見userSecrets資料夾)
  • 大二進位制檔案(見bin\Program.exe

從以上敏感資訊的誠意,可見小編(周杰的DotNet騷操作)為了寫這遍文章已經拼了