git-secretsがキーを検出しない。
Q&A
解決したいこと
git-secretsを導入するも、単一機能ファイルでのスキャンはブロックして機能しますが、ダミーアクセスキー、シークレットキーの組み合わせをなん度も変えても普通にコミット、プッシュを通してしまいます。なんとか通さないことを確認したいです。
症状
対象のファイルの中身。(.txtにしたり.tfにしたり拡張子なしにしたり、文字を変えてみたりしてみましたので色々ありますがベースは以下です。これだと通常だとgitconfigでは例外として許可されていることはわかります。
[default]
aws_access_key_id = AKIAIOSFODNNEXAMPLEx
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCEXAMPLEKEYz
スキャンすると検出します
git secrets --scan credentials2.txt
credentials2.txt:3:aws_secret_access_key = hJalrXUtnFEMI/Z7MDENG/aPxRfiCEXAMPLEKEYz
[ERROR] Matched one or more prohibited patterns
が、コミット、プッシュは普通にできる。
git commit -m "aaa"
[master 4a00d6c] aaa
1 file changed, 3 insertions(+)
create mode 100644 credentials2.txt
試したこと
やったことその1
1.configの確認
2.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
やったことその2
1..git/hooksディレクトリに移動してpre-commitファイルが存在することを確認
2.1.の内容を確認
#!/usr/bin/env bash
git secrets --pre_commit_hook -- "$@"
3.ファイルの最初に echo "pre-commit hook is running!" を追加
4..git/hooks/pre-commit を実行して、エコーメッセージが表示されるかどうかを確認します。
5.表示されたので、実行はしていることがわかった。
やったことその3
1.OSを変えて別機体で同様に実行しました。
2.結果は変わらず。OS依存ではないことがわかりました。