Cách sử dụng Ansible Vault để lưu trữ khóa bí mật – CloudSavvy IT

Với hầu hết tự động hóa, thông tin đăng nhập là cần thiết để xác thực và sử dụng các tài nguyên an toàn. Điều luôn luôn là một thách thức là làm thế nào tốt nhất để lưu trữ những thông tin đó một cách an toàn. Ansible là một hệ thống tự động hóa cung cấp phần mềm cung cấp, quản lý cấu hình và triển khai ứng dụng.

Như với bất kỳ hệ thống tự động hóa nào, Ansible cần một cách an toàn để lưu trữ bí mật. Trong trường hợp của Ansible, hệ thống đó được gọi là Kho tiền. Ansible Vault cung cấp giải pháp đa nền tảng để lưu trữ thông tin đăng nhập một cách an toàn.

Giới thiệu Ansible Vault

Ansible Vault có thể được sử dụng để mã hóa bất kỳ tệp nào, hoặc chính các biến, từ trong một cuốn sách. Theo mặc định, AES được sử dụng là mã hóa dựa trên bí mật chung. Cả hai phương pháp mã hóa tập tin và biến đều có lợi ích và hạn chế của chúng.

Mã hóa tập tin

Để tạo một tệp được mã hóa mới có tên secret.yml, chỉ cần sử dụng lệnh ansible-vault sau đây.

ansible-vault tạo secret.yml

Sau khi nhắc mật khẩu, lệnh ansible-vault sẽ khởi chạy trình chỉnh sửa tệp hệ thống mặc định, dẫn đến một tệp được mã hóa khi lưu.

Tương tự, để mã hóa một tệp không được mã hóa trước đó, hãy sử dụng lệnh ansible-vault sau đây. Lưu ý rằng điều này sử dụng tham số mã hóa thay vì tham số tạo.

ansible-vault mã hóa secret.yml

Nhược điểm của việc sử dụng mã hóa tập tin là khả năng đọc. Nếu bạn mở tệp thì bạn sẽ thấy rằng không cần giải mã, nó không thể giải mã được nội dung.

Mã hóa biến

Trong một playbook, có thể sử dụng một biến được mã hóa bằng cách đặt trước dữ liệu được mã hóa bằng thẻ! Vault. Chạy đối số mã hóa_ chuỗi của lệnh ansible_vault sẽ dẫn đến một chuỗi được mã hóa mà bạn có thể sử dụng trong sổ chơi của mình.

ansible-vaultrypt_ chuỗi ‘secret_data’ –name ‘my_secret’

Sau khi nhắc bạn nhập mật khẩu, bạn sẽ nhận được chuỗi mã hóa sau.

my_secret :! vault |
          $ ANSIBLE_VAULT; 1.1; AES256
          37636561366636643464376336303466613062633537323632306566653533383833366462366662
          6565353063303065303831323539656138653863353230620a653638643639333133306331336365
          6237373762333761613038613737346130653538353837316231626338616537371313162363132343434
          3866363862363335620a376466656164383032633338306162326639643635663936623939666238
          3161

Mã hóa biến rất tốt cho khả năng đọc, nhưng khả năng sử dụng chức năng gõ lại dòng lệnh bị hy sinh khi sử dụng phương pháp này.

Sử dụng Ansible Vault trong thực tế

Bạn có thể nhận ra rằng sử dụng Ansible Vault trong sản xuất là một thách thức. Để sử dụng hiệu quả Ansible Vault, các kỹ thuật sau đây giúp quá trình này dễ dàng hơn.

  • Giải mã chưa hoàn thành
  • Nhiều hầm
  • Rekeying

Giải mã chưa hoàn thành

Một tùy chọn để giải mã trong suốt một tệp hoặc biến trong khi sử dụng Ansible là lưu trữ mật khẩu trong tệp mật khẩu được bảo vệ và không có phiên bản. Để tham chiếu mật khẩu được lưu trữ này, chỉ cần chuyển vào vị trí tệp bằng tham số tệp vault-password-file.

ansible-playbook –vault-password-file / path / vault-password-file secret.yml

Điều này sẽ giải mã bất kỳ tập tin hoặc biến được mã hóa bao gồm sử dụng mật khẩu đi kèm.

Điều rất quan trọng là không cam kết tệp mật khẩu văn bản gốc của bạn vào hệ thống kiểm soát phiên bản của bạn. Tương tự, chỉ bảo vệ tệp này cho người dùng hoặc nhóm cần truy cập vào mật khẩu được lưu trữ trên hệ thống tệp bằng danh sách kiểm soát truy cập (ACL,).

Nhiều hầm

Mặc dù nó rất tiện lợi khi có một kho tiền duy nhất với tất cả các bí mật được mã hóa, một thực tiễn bảo mật tốt hơn là tách các thông tin bảo mật thành các kho riêng biệt có liên quan. Một ví dụ về điều này sẽ tách biệt một môi trường sản xuất và phát triển. Rất may, Ansible Vault cho phép chúng tôi tạo ra nhiều kho tiền và tài liệu tham khảo mà kho dữ liệu được mã hóa đến từ việc sử dụng nhãn.

ansible-vault tạo –vault-id prod @ prompt prod-secret.yml

Đoạn mã trên sẽ tạo ra một prod vault và lời nhắc cho mật khẩu của bạn khi chạy (như được lưu ý bởi chuỗi @prompt). Nếu bạn đã có một tệp mật khẩu mà bạn muốn sử dụng, chỉ cần chuyển vào đường dẫn đến tệp.

ansible-vault tạo –vault-id prod @ / path / prod-vault-password-file prod-secret.yml

Hãy nói rằng chúng tôi muốn mã hóa cùng một biến my_secret, nhưng lần này lưu trữ trong kho prod của chúng tôi. Cũng như trước đây, sử dụng mã hóa_ chuỗi nhưng với vault-id có liên quan cho phép lưu trữ bí mật ở vị trí đã chỉ định.

ansible-vaultrypt_opes –vault-id prod @ / path / prod-vault-password-file ‘secret_data’ –name ‘my_secret’

Bạn sẽ nhận thấy rằng sau chuỗi AES256, một đoạn văn bản mới, prod được hiển thị. Điều này chỉ ra kho tiền mà văn bản được mã hóa được đặt trong.

my_secret :! vault |
          $ ANSIBLE_VAULT; 1.1; AES256; prod
          37636561366636643464376336303466613062633537323632306566653533383833366462366662
          6565353063303065303831323539656138653863353230620a653638643639333133306331336365
          6237373762333761613038613737346130653538353837316231626338616537371313162363132343434
          3866363862363335620a376466656164383032633338306162326639643635663936623939666238
          3161

Điều gì nếu bạn muốn bao gồm nhiều kho tiền trong một playbook duy nhất? Bạn có thể dễ dàng chuyển qua nhiều khai báo vault-id trên một dòng lệnh ansible-playbook.

ansible-playbook –vault-id dev @ / path / dev-vault-password-file –vault-id prod @ / path / prod-vault-password-file site.yml

Rekeying

Cuối cùng, điều quan trọng là thường xuyên quay vòng mật khẩu của bạn. Đối với các tệp được mã hóa, bạn có thể sử dụng dòng lệnh bên dưới. Truyền tham số new-vault-id giúp dễ dàng thay đổi mật khẩu mà các bí mật được mã hóa.

ansible-vault rekey –vault-id prod @ / path / prod-vault-password-file-old –new-vault-id prod @ / path / prod-vault-password-file-new site.yml

Như đã lưu ý ở trên, việc gõ lại dòng lệnh không hoạt động đối với các biến được mã hóa. Trong trường hợp này, bạn sẽ cần mã hóa lại các chuỗi riêng lẻ và thay thế chúng trong một playbook nhất định.

Thực hành tốt nhất

Bảo mật là khó khăn, đặc biệt là khi sử dụng các bí mật trong các hệ thống tự động hóa. Với ý nghĩ đó, dưới đây là một số cách thực hành tốt nhất để sử dụng khi sử dụng Ansible Vault. Mặc dù chúng tôi đã đề cập đến một số trong số này trước đây, nhưng thật thận trọng khi nhắc lại những thực hành đó.

  • Các tệp mật khẩu được bảo vệ và không đảo ngược của ACL Các tệp mật khẩu phải được lưu trữ trong các hệ thống kiểm soát phiên bản, chẳng hạn như GIT. Ngoài ra, đảm bảo rằng chỉ những người dùng thích hợp mới có thể truy cập tệp mật khẩu.
  • Các hầm riêng biệt, nhiều môi trường khác nhau đang được sử dụng. Do đó, tốt nhất là tách thông tin đăng nhập cần thiết vào kho tiền thích hợp.
  • Tái sử dụng tập tin và mật khẩu thường xuyên Trong trường hợp sử dụng lại mật khẩu hoặc rò rỉ, tốt nhất là thường xuyên sử dụng lại mật khẩu đang sử dụng để hạn chế tiếp xúc.

Phần kết luận

Như với bất kỳ hệ thống tự động hóa nào, điều cực kỳ quan trọng là các bí mật được bảo vệ và kiểm soát đúng cách. Với Ansible Vault, quá trình đó được thực hiện dễ dàng và linh hoạt. Sử dụng các thực tiễn tốt nhất được nêu ở trên, lưu trữ và sử dụng các bí mật trong Ansible là an toàn và bảo mật.

Để mở rộng Ansible Vault hơn nữa và đưa quá trình này lên cấp độ tiếp theo, bạn có thể sử dụng các tập lệnh tích hợp vào các giải pháp quản lý mật khẩu. Như bạn có thể thấy, Ansible Vault là một cách tuyệt vời để sử dụng các bí mật trong các vở kịch Ansible.



Nguồn HowToGeek

Chúng tôi rất vui khi biết đánh giá của bạn

Leave a reply

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

GiaTot7
Logo
Reset Password