Khởi tạo VPS trong 60 giây · Hoàn tiền trong 7 ngày · Hỗ trợ kỹ thuật 24/7
Bitech Bitech
Hướng dẫn

Hướng dẫn sử dụng Ansible Vault để bảo mật dữ liệu trong Playbook

Tìm hiểu cách sử dụng Ansible Vault để mã hóa mật khẩu, API key và dữ liệu nhạy cảm trong Ansible Playbook một cách an toàn và hiệu quả.

Trong quá trình tự động hóa hạ tầng bằng Ansible, việc lưu trữ các thông tin nhạy cảm như mật khẩu cơ sở dữ liệu, API key, hoặc khóa SSH riêng tư dưới dạng văn bản thuần (plain text) là một rủi ro bảo mật lớn. Ansible Vault là công cụ tích hợp sẵn của Ansible giúp bạn mã hóa tệp tin và các biến nhạy cảm một cách an toàn.

Bài viết này sẽ hướng dẫn bạn các thao tác kỹ thuật từ cơ bản đến nâng cao để bảo vệ dữ liệu với Ansible Vault.

1. Tạo tệp tin mã hóa mới

Để tạo một tệp tin cấu hình đã được mã hóa ngay từ đầu, sử dụng lệnh ansible-vault create:

ansible-vault create secrets.yml

Hệ thống sẽ yêu cầu bạn nhập và xác nhận mật khẩu mã hóa. Sau khi xác nhận, trình biên soạn văn bản mặc định (như Vim hoặc Nano) sẽ mở ra để bạn nhập các biến nhạy cảm dưới dạng YAML.

2. Mã hóa và giải mã tệp tin hiện có

Nếu bạn đã có sẵn tệp chứa dữ liệu nhạy cảm dạng plain text, hãy mã hóa nó bằng lệnh:

ansible-vault encrypt vars.yml

Trong quá trình phát triển, để làm việc với tệp đã mã hóa mà không làm lộ nội dung ra ổ đĩa:

  • Xem nội dung tệp:
    ansible-vault view vars.yml
    
  • Chỉnh sửa nội dung tệp:
    ansible-vault edit vars.yml
    
  • Giải mã hoàn toàn tệp về dạng ban đầu:
    ansible-vault decrypt vars.yml
    

3. Mã hóa biến riêng lẻ (Inline String Encryption)

Nếu chỉ muốn mã hóa một giá trị biến duy nhất thay vì toàn bộ tệp tin, bạn có thể sử dụng tính năng encrypt_string:

ansible-vault encrypt_string 'MatKhauBaoMat123' --name 'db_password'

Lệnh này sẽ trả về một chuỗi dạng !vault | .... Bạn chỉ cần sao chép đoạn mã đó dán trực tiếp vào tệp Playbook hoặc tệp group_vars thông thường.

4. Chạy Playbook chứa dữ liệu mã hóa

Khi thực thi Playbook có chứa dữ liệu mã hóa bởi Vault, bạn phải cung cấp mật khẩu để Ansible có thể giải mã lúc runtime:

  • Nhập mật khẩu thủ công từ bàn phím:
    ansible-playbook site.yml --ask-vault-pass
    
  • Sử dụng tệp chứa mật khẩu (Password File): Tạo một tệp chứa mật khẩu Vault (ví dụ .vault_pass) và phân quyền hạn chế (chmod 600 .vault_pass), sau đó chạy:
    ansible-playbook site.yml --vault-password-file .vault_pass
    

5. Quản lý nhiều Vault với Vault ID

Trong môi trường thực tế gồm nhiều nhóm hoặc nhiều môi trường (Dev, Staging, Prod), bạn có thể dùng Vault ID để quản lý các khóa mã hóa khác nhau:

# Tạo tệp mã hóa với Vault ID cụ thể
ansible-vault create --vault-id dev@prompt dev_secrets.yml

# Chạy playbook sử dụng Vault ID chỉ định tệp mật khẩu
ansible-playbook site.yml --vault-id dev@.vault_pass_dev

6. Các nguyên tắc bảo mật tốt nhất (Best Practices)

  • Thêm tệp mật khẩu vào .gitignore: Không bao giờ commit tệp chứa mật khẩu mã hóa (.vault_pass) lên Git repository.
  • Phân tách cấu hình: Đặt các biến đã mã hóa vào các tệp riêng trong thư mục group_vars/ hoặc host_vars/ để dễ quản lý.
  • Phân quyền truy cập tệp: Luôn thiết lập quyền đọc/ghi nghiêm ngặt (chmod 600) cho các tệp lưu mật khẩu trên máy local hoặc CI/CD runner.

Việc tích hợp Ansible Vault vào quy trình tự động hóa sẽ giúp doanh nghiệp tuân thủ các tiêu chuẩn bảo mật khắt khe mà không làm giảm tốc độ triển khai hệ thống.


Ngày phát hành: 29/06/2026
Nguồn: www.digitalocean.com