AWS のクレデンシャル情報を誤って git に commit されるのを防ぐために、git-secrets を使う。
インストール
% brew install git-secrets
設定(各リポジトリ毎)
テンプレートのインストールを行う。
$ cd /path/to/repos $ git secrets --install ✓ Installed commit-msg hook to .git/hooks/commit-msg ✓ Installed pre-commit hook to .git/hooks/pre-commit ✓ Installed prepare-commit-msg hook to .git/hooks/prepare-commit-msg
AWS IAM の Access Key / Secrets Access Key の文字列パターンをチェックするオプションを実行する。
% git secrets --register-aws OK
/path/to/repos/.git/config
に以下がセットされる。
[secrets] providers = git secrets --aws-provider patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16} patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')? patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')? allowed = $AccessKey allowed = $SecretAccessKey
設定(グローバル)
~/.git-templates/git-secrets
にテンプレートのインストールを行う。
% git secrets --install ~/.git-templates/git-secrets ✓ Installed commit-msg hook to /Users/dshimizu/.git-templates/git-secrets/hooks/commit-msg ✓ Installed pre-commit hook to /Users/dshimizu/.git-templates/git-secrets/hooks/pre-commit ✓ Installed prepare-commit-msg hook to /Users/dshimizu/.git-templates/git-secrets/hooks/prepare-commit-msg
AWS IAM の Access Key / Secrets Access Key の文字列パターンをチェックするオプションを実行する。
% git secrets --register-aws --global OK
git init 実行時に git-secrets も有効にしたい場合は、以下を実行すれば global config に反映される。
% git config --global init.templateDir ~/.git-templates/git-secrets
~/.gitconfig
に以下がセットされる。
[init] templateDir = /Users/dshimizu/.git-templates/git-secrets [secrets] providers = git secrets --aws-provider patterns = (A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16} patterns = (\"|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)(\"|')?\\s*(:|=>|=)\\s*(\"|')?[A-Za-z0-9/\\+=]{40}(\"|')? patterns = (\"|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?(\"|')?\\s*(:|=>|=)\\s*(\"|')?[0-9]{4}\\-?[0-9]{4}\\-?[0-9]{4}(\"|')? allowed = $AccessKey allowed = $SecretAccessKey