如何删除GIT仓库中的敏感信息
如何删除GIT仓库中的敏感信息
正常Git
仓库中应该尽量不包含数据库连接/AWS帐号/巨大二进制文件,否则一旦泄漏到Github
,这些非常敏感信息会影响客户的信息安全已经公司的信誉。公司可能其它还有相关规定,如禁止私人邮件加入GIT仓库。如果违反这些规定,可能会面临辞退、高额罚款、或牢狱之灾等非常严厉的惩罚。
由于Git
的正常操作流程,导致敏感信息一旦进入主分支,再怎么在新的Pull Request
中删除,也无能为力了。其它人都能在历史记录中查询到历史记录中的配置。所以这要求对Git
的签名和签入、推送要有高度的敬畏之心。
然而根据墨菲定律
,可能发生的事情一定会发生。时不时,故意或失手,就会有人将这些信息写到了Git
仓库中。如果代码还没有上传(git push
),那可能还好说,只要将分支删除,然后重新写一下功能即可。但如果已经上传了,或功能太多太复制没办法及时删除,就会后悔莫及了。
这里我将演示一个故意写满“敏感信息”的Github
仓库,然后一步一步演示怎么在历史记录中,删除“敏感信息”,以完成“脱敏”。
仓库需处理的问题说明:
敏感源 | 敏感原因 | 处理方法 |
---|---|---|
sdflysha@qq.com | 个人邮箱签入公司项目 | 替换为“公司”邮箱:sdflysha@starworks.cc |
文件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骚操作
)为了写这遍文章已经拼了