モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

vagrant+ansibleなどでテスト環境の構築自動化する場合のsshキーペアの扱い

について、リプライいただいたことをまとめました。


CMSで動いているproduction環境に、機能追加やテスト等を行うために、vagrant+ansibleで開発環境を構築する設定を書いていました。

ホストPC上にvagrantVMが生成され、ansibleでapachetomcatCMS等の組み込みと設定を行い、production環境から現在のデータやファイルをコピーしてきて、ほとんどミラーに近い環境を構築します。


このとき、データベースや追加されたファイルなどを取ってくる処理を、production環境上でダンプやtarしたものをfetchで一度ホストPCに持ってきて、それをVM上に展開するという処理にしていました。
しかし、転送が二度手間になっていて時間もかかるため、例えばファイルについてはsynchronize(rsync)など使ってVM上から直接productionサーバの内容を最新のものに合わせたいと思いました。

ただそうするには、VMからproduction環境に接続するためのsshキーペアの設定が必要になります。
そこでVMにホストPCの秘密鍵をansibleで突っ込んでやればいいだろう、と思ったのですが、それはセキュリティ的にはやっぱ良くないよな…と思って書いたのが冒頭のツイートでした。


それでこの件に対し @_hito_ さんから色々アドバイスをいただきました。
で、後から見直すと下記2ツイートにまとまっちゃうのですが、最初はイマイチピンと理解できず…

何件か質問して噛み砕いて説明していただきました _o_


元々自分が考えていたのは、ホストPCとproduction環境の間で通常使うための鍵ペアをそのまま使い、VM秘密鍵を送り込んで接続するイメージでした。
しかしこれだと、その開発環境のVMが侵害された場合、ホストの秘密鍵が漏れてしまいます。


そこで、データコピー専用の鍵ペアを作って、それの公開鍵をproduction環境に入れておきます。
vagrantで生成したVMには、そのデータコピー専用の秘密鍵を入れてやります。
この下記ペアはデータコピー専用のものなので、もしどこかのVMが侵害されて秘密鍵が漏れても、入れる場所は結局コピー元のところだけなので、それは使いまわしても良いわけです。