Git-Secretsを用いて機密情報の誤公開を防ぐ

DevOps

はじめに

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のインストール、設定、使用方法を詳しく解説しました。このツールを活用することで、誤って機密情報が公開されるリスクを大幅に減らすことが可能です。
この記事がどなたかの参考になれば幸いです。

参考

コメント