##はじめに
AWSが提供しているgit-secretsを導入して、AWSの機密情報を誤ってGitHubにあげないように設定します。
一度設定するとこれからも、わざわざ設定しなくて済むように導入していきます。
よろしくお願いします。
##git-secretsとは
git-secretsとはAWSが提供しているツールで、コードをコミットするときにパスワードだと推定されるような文字列が含まれていると、処理を中断してくれます。
つまりはうっかりミスを指摘してくれます。
##git-secrets導入
ターミナルからHomebrewを経由してgit-secretsを導入します。
% cd ~/ #ホームディレクトリに移動
% brew install git-secrets
続いてアプリケーションに適用します。
% cd アプリケーション名 #開発中のアプリに移動
% git secrets --install
次に「Access key ID」や「Secret access key」などのアップロードしたくないAWS関連の秘密情報を一括で設定します。
下記のコマンドを開発中のアプリケーションで実行します。
% git secrets --register-aws --global
どのような設定がされているか気になる人は下記のコマンドで内容を表示できます。
様々な正規表現を用いて設定していることがわかります。
% git secrets --list
# ⬇️上記コマンドを実施すると、以下の内容が表示されます
secrets.providers git secrets --aws-provider
secrets.patterns [A-Z0-9]{20}
secrets.patterns ("|')?(AWS|aws|Aws)?_?(SECRET|secret|Secret)?_?(ACCESS|access|Access)?_?(KEY|key|Key)("|')?\s*(:|=>|=)\s*("|')?[A-Za-z0-9/\+=]{40}("|')?
secrets.patterns ("|')?(AWS|aws|Aws)?_?(ACCOUNT|account|Account)_?(ID|id|Id)?("|')?\s*(:|=>|=)\s*("|')?[0-9]{4}\-?[0-9]{4}\-?[0-9]{4}("|')?
secrets.allowed AKIAIOSFODNN7EXAMPLE
secrets.allowed wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
これで「git secrets --install」したリポジトリで、「git commit」コマンドを実行したときに秘密情報が含まれていないかチェックされるようになりました。
##可視化ツール GitHub Desktopの場合
可視化ツールのGitHub Desktopを仕様している場合さらに設定が必要になります。
下記のコマンドで適用できます。
% sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/app/git/bin/git-secrets
もし「No such file or directory」というエラーが出る場合は、GitHub Desktopのバージョンが古いことが原因かもしれません。
下記のコマンドを実行しましょう。
% sudo cp /usr/local/bin/git-secrets /Applications/GitHub\ Desktop.app/Contents/Resources/git/bin/git-secrets
##自動に適用されるようにする
これから作成するリポジトリには今回のように毎回設定せずに、自動でgit-secretsが適用されるようにします。
下記コマンドを実行します。
% git secrets --install ~/.git-templates/git-secrets
% git config --global init.templatedir '~/.git-templates/git-secrets'
これで今後作成するアプリケーションはわざわざgit-secretsを適用させる作業する必要はありません。
##最後に
GitHubにうっかり鍵をプッシュしてしまうのはかなり危険ですので、万が一のことを考えて導入はしておいた方がいいですね。