Bảo mật bí mật của bạn với Ansible Vault



Blog Ansible vault này giải thích cách dữ liệu nhạy cảm (mật khẩu / khóa bí mật / tệp cert) được lưu trữ trong các tệp được mã hóa và nhúng vào Ansible Playbooks.

Việc sử dụng công nghệ càng cao thì mối đe dọa an ninh càng lớn. Một thiết lập Ansible điển hình yêu cầu bạn cung cấp 'Bí mật'. Những bí mật này có thể là bất kỳ thứ gì theo nghĩa đen, mật khẩu, mã thông báo API, khóa công khai hoặc riêng tư SSH, chứng chỉ SSL, v.v. Ansible cung cấp một tính năng gọi là Ansible Vault.

Trong blog này, tôi sẽ trình bày cách sử dụng Ansible Vault và khám phá một số phương pháp hay nhất để giữ an toàn cho dữ liệu.





Các chủ đề được đề cập trong blog này:

Nếu bạn muốn thành thạo DevOps, ' khóa học sẽ là lựa chọn đi đến của bạn.



Ansible Vault là gì?

Có cơ sở hạ tầng dưới dạng mã có thể gây ra nguy cơ lộ dữ liệu nhạy cảm của bạn với thế giới, dẫn đến các vấn đề bảo mật không mong muốn. Ansible Vault là một tính năng cho phép bạn giữ mọi bí mật của mình an toàn. Nó có thể mã hóa toàn bộ tệp, toàn bộ vở kịch YAML hoặc thậm chí một vài biến. Nó cung cấp một phương tiện mà bạn không chỉ có thể mã hóa dữ liệu nhạy cảm mà còn tích hợp chúng vào sách vở của mình.

Vault được triển khai với mức độ chi tiết ở cấp độ tệp trong đó các tệp được mã hóa hoàn toàn hoặc hoàn toàn không được mã hóa. Nó sử dụng cùng một mật khẩu để mã hóa cũng như giải mã các tệp, điều này làm cho việc sử dụng Ansible Vault rất thân thiện với người dùng.

Tại sao sử dụng Ansible Vault?

Vì Ansible đang được sử dụng để tự động hóa, nên có khả năng cao là sách chơi chứa thông tin xác thực, chứng chỉ SSL hoặc dữ liệu nhạy cảm khác. Lưu dữ liệu nhạy cảm như văn bản thuần túy là một ý tưởng tồi. Một cam kết sai đối với GitHub hoặc hành vi trộm cắp máy tính xách tay có thể gây ra tổn thất lớn cho tổ chức. Đây là nơi Ansible vault xuất hiện trong bức tranh. Đó là một cách tuyệt vời để có cơ sở hạ tầng dưới dạng mã, mà không ảnh hưởng đến bảo mật.



Giả sử, chúng tôi có một playbook cung cấp phiên bản EC2 của bạn trên AWS. Bạn cần cung cấp id khóa truy cập AWS và khóa bí mật AWS của mình trong playbook. Bạn không chia sẻ các khóa này với người khác vì những lý do rõ ràng. Làm thế nào để bạn giữ cho chúng không bị phơi sáng? Có hai cách - Mã hóa hai biến này và nhúng chúng vào playbook hoặc mã hóa toàn bộ playbook.

Đây chỉ là một trong những kịch bản nơi có thể sử dụng hầm bảo vệ. Chúng tôi có thể mã hóa toàn bộ tệp hoặc chỉ mã hóa một số biến có thể chứa dữ liệu nhạy cảm và sau đó Ansible tự động giải mã chúng trong thời gian chạy. Bây giờ chúng ta có thể cam kết các giá trị này một cách an toàn cho GitHub.

Tạo tệp được mã hóa

Để tạo một tệp được mã hóa, hãy sử dụng ansible-vault tạo và chuyển tên tệp.

$ ansible-vault tạo filename.yaml

Bạn sẽ được nhắc tạo mật khẩu rồi xác nhận bằng cách nhập lại.

ansible vault tạo - Ansible Vault - Edureka

Khi mật khẩu của bạn được xác nhận, một tệp mới sẽ được tạo và mở cửa sổ chỉnh sửa. Theo mặc định, trình chỉnh sửa cho Ansible Vault là vi. Bạn có thể thêm dữ liệu, lưu và thoát.

Và tệp của bạn đã được mã hóa.

Chỉnh sửa tệp được mã hóa

Nếu bạn muốn chỉnh sửa một tệp được mã hóa, bạn có thể chỉnh sửa nó bằng cách sử dụng ansible-vault chỉ huy.

$ ansible-vault chỉnh sửa secret.txt

Trong đó secret.txt là một tệp đã được tạo, mã hóa.

Bạn sẽ được nhắc nhập mật khẩu vault. Tệp (phiên bản được giải mã) sẽ mở trong trình chỉnh sửa vi và sau đó bạn có thể thực hiện các thay đổi cần thiết.

Nếu bạn kiểm tra đầu ra, bạn sẽ thấy văn bản của mình sẽ được mã hóa tự động khi bạn lưu và đóng.

Xem tệp được mã hóa

Nếu bạn chỉ muốn xem một tệp được mã hóa, bạn có thể sử dụng chế độ xem ansible-vault chỉ huy.

$ ansible-vault xem filename.yml

Một lần nữa, bạn sẽ được nhắc nhập mật khẩu.

và bạn sẽ thấy kết quả tương tự.

Đang kiểm tra lại mật khẩu Vault

Tất nhiên, đôi khi bạn sẽ muốn thay đổi mật khẩu vault. Bạn có thể dùng khóa lại ansible-vault chỉ huy.

$ ansible-vault rekey secret.txt

Bạn sẽ được nhắc với mật khẩu hiện tại của vault, sau đó là mật khẩu mới và cuối cùng được thực hiện bằng cách xác nhận mật khẩu mới.

Mã hóa các tệp không được mã hóa

Giả sử bạn có một tệp mà bạn muốn mã hóa, bạn có thể sử dụng mã hóa ansible-vault chỉ huy.

$ ansible-vault mã hóa filename.txt

Bạn sẽ được nhắc chèn và xác nhận mật khẩu và tệp của bạn được mã hóa.

Bây giờ bạn nhìn vào nội dung tệp, tất cả đều được mã hóa.

Giải mã các tệp được mã hóa

Nếu bạn muốn giải mã một tệp được mã hóa, bạn có thể sử dụng ansible-vault giải mã chỉ huy.

$ ansible-vault giải mã filename.txt

Như thường lệ, nó sẽ nhắc bạn nhập và xác nhận mật khẩu vault.

Mã hóa các biến cụ thể

Phương pháp hay nhất khi sử dụng Ansible Vault là chỉ mã hóa dữ liệu nhạy cảm. Trong ví dụ được giải thích ở trên, nhóm phát triển không muốn chia sẻ mật khẩu của họ với nhóm sản xuất và dàn dựng nhưng họ có thể cần quyền truy cập vào một số dữ liệu nhất định để thực hiện nhiệm vụ của riêng mình. Trong những trường hợp như vậy, bạn chỉ nên mã hóa dữ liệu mà bạn không muốn chia sẻ với người khác, giữ nguyên phần còn lại.

Ansible Vault chỉ cho phép bạn mã hóa các biến cụ thể. Bạn có thể dùng ansible-vault Encrypt_string lệnh cho điều này.

$ ansible-vault cryptpt_string

Bạn sẽ được nhắc nhập và sau đó xác nhận mật khẩu vault. Sau đó, bạn có thể bắt đầu chèn giá trị chuỗi mà bạn muốn mã hóa. Nhấn ctrl-d để kết thúc quá trình nhập. Bây giờ bạn có thể chỉ địnhgiá trịvào một chuỗi trong playbook.

Bạn cũng có thể đạt được điều tương tự trong một dòng duy nhất.

$ ansible-vault Encrypt_string 'string' --name 'variable_name'

tạo lớp singleton trong java

Giải mã các tệp được mã hóa trong thời gian chạy

Nếu bạn muốn giải mã một tệp trong thời gian chạy, bạn có thể sử dụng –Ask-vault-pass cờ.

$ ansible-playbook Launc.yml --ask-vault-pass

Thao tác này sẽ giải mã tất cả các tệp được mã hóa được sử dụng cho playbook Launc.yml này để thực thi. Ngoài ra, điều này chỉ có thể thực hiện được nếu tất cả các tệp được mã hóa bằng cùng một mật khẩu.

Lời nhắc mật khẩu có thể gây khó chịu. Mục đích của tự động hóa trở nên vô nghĩa. Làm thế nào để chúng tôi làm cho điều này tốt hơn? Ansible có một tính năng gọi là “tệp mật khẩu” tham chiếu đến tệp chứa mật khẩu. Sau đó, bạn có thể chỉ cần chuyển tệp mật khẩu này trong thời gian chạy để tự động hóa nó.

$ ansible-playbook Launc.yml --vault-password-file ~ / .vault_pass.txt

Cũng có thể có một tập lệnh riêng để chỉ định mật khẩu. Bạn cần đảm bảo rằng tệp script có thể thực thi được và mật khẩu được in ở đầu ra tiêu chuẩn để nó hoạt động mà không gặp lỗi khó chịu.

$ ansible-playbook Launc.yml --vault-password-file ~ / .vault_pass.py

Sử dụng Vault Id

Vault Id là một cách cung cấp số nhận dạng cho một mật khẩu vault cụ thể. Vault ID giúp mã hóa các tệp khác nhau với các mật khẩu khác nhau để được tham chiếu trong một playbook. Tính năng này của Ansible xuất hiện cùng với việc phát hành Ansible 2.4. Trước bản phát hành này, chỉ một mật khẩu vault có thể được sử dụng trong mỗi lần thực thi playbook có thể kiểm soát được.

Vì vậy, bây giờ nếu bạn muốn thực hiện một vở kịch Ansible sử dụng nhiều tệp được mã hóa bằng các mật khẩu khác nhau, bạn có thể sử dụng Vault Id.

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

Với điều này, chúng ta sẽ đến phần cuối của blog Ansible Vault này. Thật tuyệt vời khi bắt kịp công nghệ và tận dụng tối đa chúng nhưng không ảnh hưởng đến bảo mật. Đây là một trong những cách tốt nhất để có Cơ sở hạ tầng dưới dạng mã (IaC).

Nếu bạn thấy bài viết này hữu ích, hãy xem ' do Edureka cung cấp. Nó bao gồm tất cả các công cụ đã làm cho ngành CNTT trở nên thông minh hơn.

Có một câu hỏi cho chúng tôi? Hãy đăng nó trên và chúng tôi sẽ liên hệ lại với bạn.