[ThoughtWorks] Talismanでキー情報が含まれたファイルの公開を防ぐ
Githubに間違ってキー情報ファイルをpushしたりとか
gitをつかって開発していると、たまに変更内容を細かく見ずにgit add .とかしてcommitしてしまいます。
そんなときに誤ってsshキーファイル等のキーファイルやhistoryファイルをpushしてしまうことがあるかもしれません。
実環境で使用するキーファイルやキー情報の記述されたファイルを意図せずに公開(privateリポジトリだとしても)してしまうのは
非常に危険なので、リモートにpushされるのを防ぐ必要があります。
そのためのツールが、ここで紹介するTalismanです。
Talismanとは
ThoughtWorksが開発したgit hook(gitで特定のコマンドが実行されたときにスクリプトを起動させる仕組み)のツールです。
これはgit push前に起動されるため、コードがリポジトリにpushされる前に問題を発見することができます。
公式サイトによると、
Talismanは、開発者のローカルgitリポジトリからプッシュされるコードの変更を検証するツールであり、
gitで提供されているpushをhookすることで、sshキーや認証トークンなどの疑わしい変更を検証してくれるとのことです。
環境
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.10.5
- Git : 2.10.2
Talismanを使ってみる
talismanをインストールしてみましょう。
curlを使用してインストール可能です。
#インストール % curl https://thoughtworks.github.io/talisman/install.sh > ~/install-talisman.sh % chmod +x ~/install-talisman.sh
次にテスト用リモートリポジトリを用意し、それをcloneしてローカルに持ってきます。
% git clone <test-rep> % cd /path/your/test-rep
対象のgitリポジトリにtalismanをインストールします。
% ~/install-talisman.sh Downloading and verifying binary... Talisman successfully installed to '.git/hooks/pre-push'.
次に、talismanの動作を確認するため、キーファイルのダミーを作成してコミット後にpushします。 pushしようとするとルールにひっかかるためにエラーとなります。
%vi test.pem %git add test.pem %git commit [master ab19221] add pem 1 file changed, 1 insertion(+) create mode 100644 test.pem %git push origin master The following errors were detected in test.pem The file name "test.pem" failed checks against the pattern ^.+\.pem$ error: failed to push some refs to 'git@github.com:xxxxxxx/test-rep.git'
なお、pushを許可したい場合、プロジェクトのルートに.talismanignoreを用意してそこへ記述することで
pushが許可されます。
% echo './test.pem' >> .talismanignore
まとめ
今回は潜在的なセキュリティリスクに対処するためのツール、talismanを紹介しました。
設定も簡単ですし、とりあえずインストールしておいて損はないかと思います。