について、リプライいただいたことをまとめました。
CMSで動いているproduction環境に、機能追加やテスト等を行うために、vagrant+ansibleで開発環境を構築する設定を書いていました。
ホストPC上にvagrantでVMが生成され、ansibleでapacheやtomcat、CMS等の組み込みと設定を行い、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が侵害されて秘密鍵が漏れても、入れる場所は結局コピー元のところだけなので、それは使いまわしても良いわけです。