2017-09-20 108 views
5

Używam Ansible 2.2 do zarządzania serwerami w chmurze z mojego laptopa. Chcę przenieść klucz prywatny OpenSSL do określonej lokalizacji na jednym z serwerów, który ma być używany przez nginx do zakończenia TLS. Oczywiście jest to plik, który powinien być trzymany w tajemnicy, więc zaszyfrowałem go przy pomocy Ansible Vault. Ale Vault chroni tylko plik na dysku na maszynie sterującej. Nie wchodzi w grę podczas przesyłania danych z maszyny sterującej do węzła zarządzanego.Czy pliki przenoszenia ansibli są bezpieczne?

Chcę mieć pewność, że klucz prywatny nie zostanie naruszony podczas transportu przez kogoś monitorującego ruch sieciowy. Nie ma konkretnej wzmianki o tym, czego szukam, co mogę zobaczyć w docs for the copy module. O ile mi wiadomo, cała moja komunikacja z zarządzanymi węzłami odbywa się przez SSH. Czy to bezpieczne założenie? Czy obejmuje transfer plików?

+2

Odpowiedź Rene jest poprawna. Aby uzyskać dalszą gwarancję, możesz uruchomić książkę do gry z opcją -vvvv, aby zobaczyć cały ruch przechodzący przez połączenie ssh, co zapewni komfort, że jest wysyłany przez bezpieczny kanał do twojego węzła, np. 'ansible-playbook -vvvv myplaybook.yml' –

Odpowiedz

2

Odpowiedź jest zależna od rodzaju połączenia.

Istnieje wtyczka Ansible copy, która odsyła do połączenia. Kod źródłowy wtyczki jest tutaj:

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

ten odracza kopie ActionBase._transfer_file który następnie odkłada do Connection.put_file.

Istnieje wiele różnych implementacji połączeń, z których niektóre są bezpieczne, a inne nie. Jeśli korzystasz z połączenia SSH, to używa on scp lub sftp do wykonania rzeczywistej kopii i jest bezpieczny.

Widać to w źródle ssh tutaj:

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

Które deleguje put_file do _file_transport_command które następnie można użyć SCP, SFTP, "inteligentnych", lub rur. Inteligentne wykrywa, które z pozostałych trzech najlepiej użyć.

Uwaga: Istnieje moduł kopiowania ansibl który kopiuje tylko pliki lokalnie i nie ma potrzeby bezpiecznej kopii. Tak mylnie wskazywała moja poprzednia odpowiedź, dlatego ją usunąłem.

3

Masz rację, cała komunikacja z zarządzanym węzłem odbywa się bezpiecznie przez ssh. Skarbiec jest odszyfrowywany na kontrolerze, klucz prywatny jawny jest wysyłany przez bezpieczne połączenie ssh i przesyłany do węzła docelowego.

tekstu jawnego klucza prywatnego może być niezabezpieczone na węźle docelowym, w zależności od tego, kto może się zalogować, prawa własności, członkostwo w grupie, uprawnienia dostępu i tak dalej. To do ciebie należy bezpieczna konfiguracja.

+0

Próbowałem zlokalizować kod ansible odpowiedzialny za ten transfer w module' copy', ale nie mogłem tego zrobić. Czy wiesz, gdzie mogę go znaleźć? –

+0

@PiotrBabij https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/copy.py wydaje się to być, ale nie ma odniesienia do ssh lub bezpiecznej kopii. –

+1

@PiotrBabij faktycznie to tylko lokalnych kopii, kopiowanie wtyczka jest tutaj https://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py zobaczyć nową odpowiedź więcej szczegółów. –