2017-09-20 50 views
5

Tôi đang sử dụng Ansible 2.2 để quản lý một số máy chủ đám mây từ máy tính xách tay của mình. Tôi muốn chuyển một khóa riêng OpenSSL đến một vị trí cụ thể trên một trong các máy chủ, được nginx sử dụng để chấm dứt TLS. Đương nhiên, đây là một tập tin cần được giữ bí mật, vì vậy tôi đã mã hóa nó bằng cách sử dụng Ansible Vault. Nhưng Vault chỉ bảo vệ tệp trên đĩa trên Máy điều khiển. Nó không đi vào hoạt động khi truyền dữ liệu từ máy điều khiển sang nút được quản lý.Có truyền tệp an toàn không?

Tôi muốn đảm bảo rằng khóa riêng tư không bị xâm phạm bởi người giám sát lưu lượng truy cập mạng. Không có đề cập cụ thể về những gì tôi đang tìm kiếm mà tôi có thể thấy trong số docs for the copy module. Theo như tôi biết, tất cả các giao tiếp của tôi với các nút được quản lý được thực hiện thông qua SSH. Đó có phải là một giả định an toàn không? Nó có bao gồm chuyển tập tin không?

+2

Câu trả lời của Rene là chính xác. Để đảm bảo hơn nữa, bạn có thể chạy playbook của mình với -vvvv để xem tất cả lưu lượng truy cập đi qua kết nối ssh, điều này sẽ mang lại cho bạn sự thoải mái khi nó được gửi qua kênh bảo mật tới nút của bạn, ví dụ: 'ansible-playbook -vvvv myplaybook.yml' –

Trả lời

2

Câu trả lời là tùy thuộc vào loại kết nối.

Có một plugin sao chép Ansible để ngăn kết nối. Mã nguồn của plugin là ở đây:

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

này trì hoãn bản để ActionBase._transfer_file mà sau đó trì hoãn để Connection.put_file.

Có nhiều triển khai kết nối khác nhau, một số trong số đó là an toàn và một số thì không. Nếu bạn đang sử dụng một kết nối SSH sau đó nó sử dụng hoặc scp hoặc sftp để làm bản sao thực tế và được an toàn.

Điều này có thể được nhìn thấy trong các nguồn ssh ở đây:

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

Những đại biểu put_file để _file_transport_command mà sau đó có thể sử dụng scp, sftp, "thông minh", hoặc ống dẫn. Phát hiện thông minh của ba loại khác là tốt nhất để sử dụng.

Lưu ý: Có một mô-đun sao chép Ansible chỉ sao chép tệp cục bộ và không cần bản sao bảo mật. Đó là những gì câu trả lời trước đó của tôi đã chỉ ra sai và vì vậy tôi đã xóa nó.

3

Bạn nói đúng, tất cả liên lạc với nút được quản lý được thực hiện một cách an toàn thông qua ssh. Vault của bạn được giải mã trên bộ điều khiển, khóa riêng của bản rõ thô được gửi qua kết nối ssh an toàn và thả vào nút đích của bạn.

Khóa riêng tư thô có thể trở thành không an toàn trên nút đích của bạn, tùy thuộc vào người có thể đăng nhập, chủ sở hữu, tư cách thành viên nhóm, quyền truy cập và v.v. Bạn có thể định cấu hình chúng một cách an toàn.

+0

Tôi đã cố gắng tìm xác định vị trí trong mã không thể đọc được chịu trách nhiệm cho việc chuyển giao trong mô-đun' copy' nhưng tôi không thể làm điều này. Bạn có biết nơi tôi có thể tìm thấy nó? –

+0

@PiotrBabij https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/files/copy.py có vẻ là nó nhưng không có tham chiếu đến ssh hoặc bản sao bảo mật. –

+1

@PiotrBabij thực sự chỉ dành cho các bản sao cục bộ, sao chép plugin ở đây https://github.com/ansible/ansible/blob/bc66faa328b1413646ec249cd2753de5e09f1a35/lib/ansible/plugins/action/copy.py xem câu trả lời mới để biết thêm chi tiết. –