使用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)的方法。

スクリーンショット 2021-05-27 15.12.45.png

文献引用

为了在AWS上进行系统设计和最佳实践,我正在实践Terraform,这是由三省堂书店通过Impress R&D出版的书籍。我开始使用git-secrets了。为了不让AWS访问密钥混入到Git仓库中,我引入了git-secrets。为了避免云端破产,我正在使用git-secrets。

广告
将在 10 秒后关闭
bannerAds