様々な記事で取り上げられておりますが備忘録として残します。
サーバーのアクセスキーの情報やシークレット情報を使って開発する際、
誤ってアクセスキーの情報をgitにコミットしないためにgit-secretsを設定します。
参考記事
環境
M1 MAC
macOS Ventura バージョン13.2.1
MACの設定方法
以下のコマンドの設定をすると、PC上にある全gitでバージョン管理されている対象に対して、AWSの保護を行うgit-secretsが適用されます。
git secretsのinstall
$ brew install git-secrets
端末全体のgitでバージョン管理されているリポジトリの保護
$ git secrets --install ~/.git-templates/git-secrets
$ git config --global init.templatedir '~/.git-templates/git-secrets'
AWSの保護
$ git secrets --register-aws --global
下記の様に、~/.gitconfigに設定が追記されたら成功です。
[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 = AKIAIOSFODNN7EXAMPLE
allowed = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
エラーが出るかテスト
今回はダウンロードフォルダに「test」というフォルダを作成し、その中にAWSのアクセスキー(ダミー)を記載した「secret.txt」というファイルを作成し、git addしてcommitしてみます。
ダウンロードフォルダに移行
$ cd Downloads
testフォルダを作成し、testフォルダに移動
$ mkdir test && cd test
gitリポジトリを新規に作成(初期化の意味も持つ)
$ git init
git secretsをインストールすることで設定を行う
$ git secrets --install
AWS向けのcommit検査設定を導入
$ git secrets --register-aws
「secret.txt」ファイルを作成
$ touch secret.txt
$ echo "aws_secret_access_key = ABcDe1F2hIjkl3nop45sTUv6XYz7aBcDEFghIJKL" > secret.txt
ファイル検査
$ git secrets --scan secret.txt
secret.txt:1:aws_secret_access_key = ABcDe1F2hIjkl3nop45sTUv6XYz7aBcDEFghIJKL
[ERROR] Matched one or more prohibited patterns
Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive
上のような記載があれば、検出成功です。
あとはアクセスキーの記載を削除し、下記を実行すれば、無事コミットできます。
$ git add .
$ git commit -m "firstcommit"
※本来であればcommitした際に検出されるようですが、私は検出されず、原因が分からなかったため、ファイル検査にて検出しました。
解決方法お分かりの方おりましたらご教示いただけますと幸いです。