git-secrets 導入¶
created at 2019-08-22 15:42+0900
git-secrets とはコミットやコミットメッセージに機密情報が含まれていた場合、叱ってくれるありがたいツール。
Prevents you from committing passwords and other sensitive information to a git repository.
git-secretsはじめました
以下、git-secrets の導入手順の覚書。
git secrets インストール¶
brew install git-secrets
git リポジトリに git hooks をインストール¶
# 作成ずみのgit リポジトリへ移動
cd ~/Documents/XDOCS/ && ls -la && pwd
# git hooks インスコ
git secrets --install
# 実行結果
MacBookPro:XDOCS ricotta$ 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用の設定を登録
git secrets --register-aws
git のグローバル設定に追加¶
グローバル設定の領域にhookスクリプトと探索パターン設定を追加する。
# aws用の設定を登録
git secrets --register-aws --global
# hooksのテンプレートをインストール
ls -la $HOME/.config/git/templates
mkdir -p $HOME/.config/git/templates
git secrets --install $HOME/.config/git/templates
# 実行結果
MacBookPro:XDOCS ricotta$ git secrets --install $HOME/.config/git/templates
✓ Installed commit-msg hook to /Users/ricotta/.config/git/templates/hooks/commit-msg
✓ Installed pre-commit hook to /Users/ricotta/.config/git/templates/hooks/pre-commit
✓ Installed prepare-commit-msg hook to /Users/ricotta/.config/git/templates/hooks/prepare-commit-msg
# テンプレートディレクトリをグローバル設定へ追加
git config --global init.templateDir $HOME/.config/git/templates
独自探査パターン設定¶
秘密のことば(のパターン)を改行区切りで出力するコマンドをプロバイダとして登録できる。
cat <<EOF>>SECRET_WORDS.txt
ぱすわーどに
しそうなことば
こじんじょうほう
へいとわーど
ひみつじょうほう
とかを改行区切りで
せいきひょうげんもおけ
EOF
# 探索パターン登録
git secrets --add-provider -- cat SECRET_WORDS.txt
# 設定内容確認
git secrets --list
git config --local --list | grep secrets
# NGワードファイルはgit管理外にする
echo 'SECRET_WORDS.txt' >> .gitignore
# 設定を削除する場合
git config --unset secrets.providers 'cat SECRET_WORDS.txt'
機密情報探索¶
コミット時のhookだけじゃなくて、任意のファイルを探索できる。
# git ls-files で該当するファイルを対象に探索する。
git secrets --scan -r
# インデックスに登録されたファイルを対象に探索する。
git secrets --scan --cached
# indexに入れてないファイルを対象に探索する。
git secrets --scan --no-index
# untrackedファイルも対象にして探索する。
git secrets --scan --untracked
# コミット履歴を探索する。
git secrets --scan-history
(おまけ)git 設定ファイルの場所¶
git 設定ファイルがいっぱいあって困った。独自hookとか作っていなかったから、テンプレートファイルはどこへ置けばいいのか悩んだ。(結局上記のようにインストールしたけどさ)
種類 |
パス |
---|---|
システム設定 |
/usr/local/etc/gitconfig |
ユーザごとのグローバルignore設定 |
$HOME/.config/git/ignore |
ユーザごとのグローバル設定 |
$HOME/.gitconfig |
ローカル設定 |
{各リポジトリのディレクトリ}/.git/config |
デフォルトの?テンプレートディレクトリ |
/usr/local/share/git-core/templates |
まとめ¶
ファイルをgrepしてNGワードの書かれたファイルを出力するスクリプトを自分で作っていたけれど、もっと良いものがすでにあったよ。ありがち。