はじめに
Gitはソースコード管理に非常に便利なツールですが、誤って機密情報を含むファイルを公開してしまうという事故が起こることもあります。そこで、AWSが提供するツール git-secretsを利用すれば、コミット時に機密情報を含む可能性があるファイルの存在をチェックし、公開を防ぐことができます。本記事ではその設定方法と使用方法について解説します。
git-secretsのインストール
Mac で Homebrew を使用している場合、 git-secrets のインストールは以下のコマンドを実行するだけで完了します。
$ brew install git-secrets
git-secrets が正しくインストールされていることを確認するには、次のコマンドを実行します。
$ git secrets
ヘルプメッセージが表示されれば、インストールは成功しています。
git-secretsの動作確認
git-secretsが正しく動作しているかどうかを確認する前に、git-secretsをリポジトリにセットアップする必要があります。これは以下のコマンドを実行することで設定できます。
$ 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
git-secretsは、あらかじめ設定した正規表現に一致する情報を探し出すことができます。AWSのIAM認証情報のパターンは、以下のコマンドで簡単に登録することができます。
$ git secrets --register-aws
OK
git-secretsが正しく動作しているかどうかを確認するために、認証情報を含むテストファイルを作成し、それをcommitしてみます。git-secretsが正しく設定されていれば、commitは拒否され、エラーメッセージが表示されます。
$ echo AKIAIOSFODNN7EXAMPLD > credentials.txt
$ git add credentials.txt
$ git commit -m "Test"
[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-secretsの一時的な無効化
一時的にgit-secretsを無効にしたい場合、commit時に--no-verify
オプションを使用します。
$ git commit -m "First Test" --no-verify
全てのGitリポジトリにgit-secretsの設定を適用
git-secretsの設定は各リポジトリごとに行う必要がありますが、全てのリポジトリに共通する設定を適用することも可能です。そのような場合、--global
オプションを使用します。
$ git secrets --register-aws --global
設定のカスタマイズ
許可するパターンを追加したい場合は、--add --allowed
オプションを使用します。
$ git secrets --add --allowed <pattern>
これにより、独自の設定を行うことができます。
Gitのpre-commitフックへのgit-secretsの追加
Gitのpre-commitフックにgit-secrets
を追加することも可能です。
pre-commitフックへの設定方法については以下の記事でまとめています。
以下、サンプルのスクリプトです。
#!/bin/sh
git secrets --scan -r || {
echo >&2 "COMMIT REJECTED due to detected AWS secret keys"
exit 1
}
終わりに
本記事では、git-secretsのインストール、設定、使用方法を詳しく解説しました。このツールを活用することで、誤って機密情報が公開されるリスクを大幅に減らすことが可能です。
この記事がどなたかの参考になれば幸いです。
コメント