2017-09-20 17 views
5

私は自分のラップトップからいくつかのクラウドサーバを管理するためにAnsible 2.2を使用しています。 OpenSSL秘密鍵をサーバの特定の場所に転送して、TLS終了のためにnginxで使用したいと考えています。もちろん、これは秘密にしておかなければならないファイルなので、私はAnsible Vaultを使って暗号化しました。しかし、Vaultは、制御マシン上のディスク上のファイルのみを保護します。コントロール・マシンから管理対象ノードにデータを転送するときには機能しません。ファイルを安全に転送できますか?

ネットワークトラフィックを監視している人が、転送中に秘密鍵が侵害されていないことを確認します。私がdocs for the copy moduleで見ることができるものを具体的に言及していません。私が知る限り、管理ノードとの私の通信はすべてSSH経由で行われます。それは安全な仮定ですか?それはファイル転送を含んでいますか?

+2

ルネの答えは正しいです。さらなる保証のために、-vvvvを使ってプレイブックを実行すると、ssh接続を経由するすべてのトラフィックを見ることができます。これにより、セキュアなチャネルを介してノードに送信されるという快適さがもたらされます。 'ansible-playbook -vvvv myplaybook.yml' –

答えて

2

答えは接続の種類によって異なります。

接続を拒否するAnipalコピープラグインがあります。プラグインのソースコードはここにある:

https://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py

これは、その後Connection.put_fileに延期ActionBase._transfer_fileへのコピーを延期します。

接続にはさまざまな実装がありますが、その中にはセキュリティで保護されているものと、セキュリティで保護されていないものがあります。 SSH接続を使用している場合は、scpまたはsftpのいずれかを使用して実際のコピーを行い、安全です。

これは、ここでのsshソースで見ることができます。

https://github.com/ansible/ansible/blob/442af3744ebd60c7ffcaae22b61fb762ccc7c425/lib/ansible/plugins/connection/ssh.py#L954

委譲し、その後scpコマンドを使用することができます_file_transport_commandput_file、SFTP、 "スマート"、またはパイプ。スマートは、他の3つのうちどれが使用するのが最も良いかを検出します。

注:ファイルをローカルにのみコピーし、安全なコピーを必要としないAnipalコピーモジュールがあります。それは私の以前の答えが間違って指摘したものなので、私はそれを削除しました。

3

管理ノードとのすべての通信はssh経由で安全に行われます。ボールトがコントローラ上で復号化され、平文の秘密鍵が安全なssh接続を介して送信され、ターゲットノードにドロップされます。

プライベートキーは、誰がログインできるか、所有権、グループメンバーシップ、アクセス権などによって、ターゲットノードでセキュリティ保護されなくなることがあります。それらを安全に設定するのはあなた次第です。

+0

私は、' copy'モジュールでその転送を担当している、安全なコードの場所を正確に見つけることを試みましたが、私はこれを行うことができませんでした。私はどこでそれを見つけることができるか知っていますか? –

+0

@PiotrBabij https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/copy.pyはそうだが、sshや安全なコピーへの参照はないようだ。 –

+1

@PiotrBabij実際はローカルコピーのみですが、コピープラグインはこちらhttps://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py詳細は新しい回答をご覧ください。 –

関連する問題