2017-09-20 5 views
5

Ich verwende Ansible 2.2, um einige Cloud-Server von meinem Laptop zu verwalten. Ich möchte einen privaten OpenSSL-Schlüssel an einen bestimmten Ort auf einem der Server übertragen, der von nginx für die TLS-Beendigung verwendet wird. Natürlich ist dies eine Datei, die geheim gehalten werden sollte, also habe ich sie mit Ansible Vault verschlüsselt. Vault schützt jedoch nur eine Datei auf der Festplatte auf der Control Machine. Es spielt keine Rolle beim Übertragen von Daten von der Steuermaschine zu einem verwalteten Knoten.Kann Dateien sicher übertragen werden?

Ich möchte sicher sein, dass der private Schlüssel bei der Übertragung durch jemanden, der den Netzwerkverkehr überwacht, nicht kompromittiert wird. Es gibt keine spezielle Erwähnung von dem, was ich suche, die ich in der docs for the copy module sehen kann. Soweit ich weiß, erfolgt meine gesamte Kommunikation mit den verwalteten Knoten über SSH. Ist das eine sichere Annahme? Beinhaltet es Dateiübertragungen?

+2

Renes Antwort ist korrekt. Zur weiteren Sicherheit können Sie Ihr Playbook mit -vvvv laufen lassen, um den gesamten Verkehr über die SSH-Verbindung zu sehen, der Ihnen den Komfort bietet, dass es über einen sicheren Kanal an Ihren Knoten gesendet wird, z. 'ansible-playbook -vvvv myplaybook.yml' –

Antwort

2

Die Antwort hängt von der Art der Verbindung ab.

Es gibt ein Ansible Copy-Plugin, das auf die Verbindung verweist. Der Quellcode für das Plugin ist hier:

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

Diese aufschiebt Kopien ActionBase._transfer_file, die dann auf Connection.put_file aufschiebt.

Es gibt viele verschiedene Implementierungen von Verbindungen, von denen einige sicher sind und einige nicht. Wenn Sie eine SSH-Verbindung verwenden, verwendet sie entweder scp oder sftp, um die eigentliche Kopie zu erstellen und ist sicher.

Dies kann hier in der SSH-Quelle zu sehen:

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

Welche Delegierten put_file zu _file_transport_command die scp verwenden können dann, SFTP, "smart" oder Rohren. Smart erkennt, welche der anderen drei am besten zu verwenden ist.

Hinweis: Es gibt ein Ansible-Kopiermodul, das Dateien nur lokal kopiert und keine sichere Kopie benötigt. Darauf hat meine vorherige Antwort irrtümlich hingewiesen und deshalb habe ich sie gelöscht.

3

Sie haben Recht, die gesamte Kommunikation mit dem verwalteten Knoten erfolgt sicher über ssh. Ihr Vault wird auf dem Controller entschlüsselt, der private Klartextschlüssel wird über eine sichere SSH-Verbindung gesendet und auf dem Zielknoten abgelegt.

Der private Klartextschlüssel kann auf Ihrem Zielknoten unsicher werden, je nachdem, wer sich anmelden kann, Besitzrechte, Gruppenmitgliedschaften, Zugriffsberechtigungen und so weiter. Es liegt an Ihnen, diese sicher zu konfigurieren.

+0

Ich habe versucht, die Stelle in ansible code zu finden, die für diese Übertragung im' copy' Modul verantwortlich ist, aber ich konnte das nicht tun. Weißt du, wo ich es finden kann? –

+0

@PiotrBabij https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/copy.py scheint es zu sein, aber keine Verweise auf ssh oder sichere Kopie. –

+1

@PiotrBabij eigentlich das ist nur für lokale Kopien, Kopieren Plugin ist hier https://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py siehe neue Antwort für weitere Details. –

Verwandte Themen