[ThoughtWorks] Talismanでキー情報が含まれたファイルの公開を防ぐ

2016.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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を紹介しました。
設定も簡単ですし、とりあえずインストールしておいて損はないかと思います。

参考サイトなど

  • 公式
  • Github https://www.thoughtworks.com/radar/tools/talisman