使用git-secrets来防止通过git的信息泄露
我开始学习AWS,学习了如何通过`git-secrets’实现安全操作。为了不忘记,我整理了一下。
git-secrets是什么
防止您将密码和其他敏感信息提交到git库中。
这个工具将保护您的密码和其他敏感信息不会从提交中泄露出去。
在提交代码时或任何时刻,您都可以检查提交内容和消息是否包含机密信息。
在当今情报泄露成为问题的时代,通过这样的工具进行管理是非常重要的。
安装
$brew install git-secrets
命令摘要(Synopsis)
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]
git secrets --scan-history
git secrets --install [-f|--force] [<target-directory>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>
git secrets --add-provider [--global] <command> [arguments...]
git secrets --register-aws [--global]
git secrets --aws-provider [<credentials-file>]
AWS的初始设置
因为有专门的命令可以为AWS进行适合的配置,所以输入该命令即可。
$ git secrets --register-aws --global
您可以通过运行“git secret –list”命令来查看当前的检查模式是什么样的。
$ git secrets --list
secrets.providers git secrets --aws-provider
secrets.patterns (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
secrets.patterns ("|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)("|')?\s*(:|=>|=)\s*("|')?[A-Za-z0-9/\+=]{40}("|')?
secrets.patterns ("|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?("|')?\s*(:|=>|=)\s*("|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}("|')?
secrets.allowed AKIAIOSFODNN7EXAMPLE
secrets.allowed wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
经过 secrets.patterns 检验的内容将被拒绝,而经过 secrets.allowed 指定的内容将被特别允许。
– 似乎是 AWS Access Key ID (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}
– 似乎是分配的 AWS Secret Access Key。用任意引号括起来的 “:” 或 “=”
– 似乎是分配的 AWS account ID。用任意引号括起来的 “:” 或 “=”
– 被排除的 ~/.aws/credentials 中指定的内容
– 被允许的示例 AWS key 模式的配置 (AKIAIOSFODNN7EXAMPLE 和 )
请注意,以上是允许的设置。
使用”global”关键词,可以作为用户的共同设置。
$ git secrets --install ~/.git-templates/git-secrets
将用于存储库的git hooks安装到~/.git-templates/git-secrets中。
$ git config --global init.templatedir '~/.git-templates/git-secrets'
在config中设置安装的模板。
这个操作能够将关于AWS的基本知识扎实地掌握,并可以成功通过审核。?
其他命令
扫描
对于想要检查特定文件/文件夹而不进行提交的情况,这是有效的。
$ git secrets --scan test.txt // ファイルの検査
$ git secrets --scan testDir // ディレクトリの検査
$ git secrets --scan -r testDir // 再帰的にディレクトリを検査
只有通过 git ls-files 列出的扫描文件才是目标文件,所以 .gitignore 中的文件等都不在目标范围内。很方便。
顺便提一下,加上 –no-index 选项后,它可以检查非 git 文件。
扫描历史
只需一個選項,下面是原文的中文翻譯:
該工具可以檢查過去的提交記錄,對於在途中引入git-secrets等工具時非常有用。
$ git secrets --scan-history
添加
您可以添加禁止或者允许的正则表达式模式。
$git secrets --add "secret\s*=\s*"
使用SourceTree进行操作
【追加】如果在SourceTree上安装了git-secrets,并尝试进行任何操作时,
git: 'secrets' is not a git command. See 'git --help'.
只需要一种选择,原句的中文释义是:
出现了这个错误。
要解决这个问题,
-
- git実行プログラムと同じ階層にgit-secrets実行プラグラムをおく(もしくはシンボリックリンクを貼る)
- soureTreeのgit実行プログラムを同じ階層に貼る。
可以解决。
#gitの場所
$ which git
/usr/bin/git
#git-secretsの場所
$ which git-secrets
/usr/local/bin/git-secrets
in #実行プログラムを同じ階層にコピー
cp /usr/bin/git /usr/local/bin
如果在Mac上出现权限错误等情况,可能是系统完整性保护(SIP)被启用了。
【高级用户】禁用System Integrity Protection (SIP)的方法。
文献引用
为了在AWS上进行系统设计和最佳实践,我正在实践Terraform,这是由三省堂书店通过Impress R&D出版的书籍。我开始使用git-secrets了。为了不让AWS访问密钥混入到Git仓库中,我引入了git-secrets。为了避免云端破产,我正在使用git-secrets。