######################### git-secrets 導入 ######################### :small:`created at 2019-08-22 15:42+0900` git-secrets とはコミットやコミットメッセージに機密情報が含まれていた場合、叱ってくれるありがたいツール。 * Prevents you from committing passwords and other sensitive information to a git repository. * https://github.com/awslabs/git-secrets * git-secretsはじめました * https://qiita.com/jqtype/items/9196e047eddb53d07a91 以下、git-secrets の導入手順の覚書。 ************************* git secrets インストール ************************* .. code-block:: bash brew install git-secrets ******************************************* git リポジトリに git hooks をインストール ******************************************* .. code-block:: bash # 作成ずみの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スクリプトと探索パターン設定を追加する。 .. code-block:: bash # 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 ******************************************* 独自探査パターン設定 ******************************************* 秘密のことば(のパターン)を改行区切りで出力するコマンドをプロバイダとして登録できる。 .. code-block:: bash cat <>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だけじゃなくて、任意のファイルを探索できる。 .. code-block:: bash # 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とか作っていなかったから、テンプレートファイルはどこへ置けばいいのか悩んだ。(結局上記のようにインストールしたけどさ) .. csv-table:: :header: "種類","パス" "システム設定","/usr/local/etc/gitconfig" "ユーザごとのグローバルignore設定","$HOME/.config/git/ignore" "ユーザごとのグローバル設定","$HOME/.gitconfig" "ローカル設定","{各リポジトリのディレクトリ}/.git/config" "デフォルトの?テンプレートディレクトリ","/usr/local/share/git-core/templates" **************************************** まとめ **************************************** ファイルをgrepしてNGワードの書かれたファイルを出力するスクリプトを自分で作っていたけれど、もっと良いものがすでにあったよ。ありがち。