Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

LAB: Bảo mật dữ liệu trong Ansible playbook với Ansible Vault

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • LAB: Bảo mật dữ liệu trong Ansible playbook với Ansible Vault

    Ý tưởng: Dựa trên bài lab HSRP trước đây. Ta sẽ để ssh username, ssh password và enable password vào 1 file riêng mà không nằm chung file chứa IP các thiết bị. Sau đó sẽ mã hóa file này với Ansible Vault. Mục đích chính là bảo mật thông tin tránh bị tấn công.

    Sơ đồ mạng:





    tả:
    • Sơ đồ gồm 1 Router, 2 Distributed Switch, 2 Access Switch, 2 PC cho 2 Vlan, được kết nối với Ansible Server. Mô hình thực hiện trên Linux OS và các thiết bị ảo.
    Yêu cầu: Bài lab được thực hiện trên môi trường Linux. Máy thực hiện đã được cài Ansible. Máy kết nối được đến các thiết bị bằng các công cụ như Putty hay CLI.
    • Thực hiện các công việc sau:
      • Các cú pháp cơ bản với Ansible Vault.
      • Tạo file playbook pass.yml.
      • Chạy playbook đã được mã hóa.
    Các bước thực hiện:

    Cấu hình Router và 4 Switch, các bạn tham khảo bài trước:
    https://www.forum.vnpro.org/forum/cc...3%B9ng-ansible
    Code các file thực hiện, các bạn có thể tham khảo ở đây: https://github.com/vnpro149/Ansible/tree/master/HSRP

    Lưu ý:
    • Thêm vào code đoạn sau trước mỗi phần tasks:
    • Đây là khai báo file pass.yml để lấy ssh user ssh password,… nếu đặt file không nằm chung vs file playbook, ta cần khai báo đường dẫn chính xác đến vị trí file vd: roles/group_vars/pass.yml
    Các giải thích chi tiết về cú pháp file YAML đã có ở bài trước, nếu quên, các bạn có thể xem lại
    Tạo playbook chứa các thông tin cần bảo mật: ssh username, ssh password, enable password, sudo password,….
    Một vài cú pháp cơ bản khác khi dùng Ansible Vault:
    • Để tạo file Ansible Vault gồm 2 cách:
      • Cách 1: Tạo playbook như bình thường bằng bất cứ công cụ editor nào bạn muốn: vi, vim, nano, gedit,.… sau đó mã hóa file đó với Ansible Vault bằng câu lệnh: sudo ansible-vault encrypt <filename>.yml
      • Cách 2: Tạo 1 file Ansible Vault với câu lệnh: sudo ansible-vault create <filename>.yml. Tuy nhiên, cách này mặc định ansible sẽ chọn vi làm editor. Các bạn có thể chỉnh thành editor mình muốn trong file ~/.bashrc: sudo nano ~/.bashrc và thêm dòng export EDITOR=nano hoặc bất cứ cái nào bạn muốn.
    • Để sửa file:
      • sudo ansible-vault edit <filename>.yml hoặc đơn giản là giải mã file và sửa nó, sau đó mã hóa lại.
      • Mã hóa file: sudo ansible-vault encrypt <filename>.yml
      • Giải mã file: sudo ansible-vault decrypt <filename>.yml
      • Thay đổi mật khẩu mã hóa: sudo ansible-vault rekey <filename>.yml
      • Xem nội dung file đã mã hóa: sudo ansible-vault view <filename>.yml
    Lưu ý: các câu lệnh rekey, encrypt, decrypt có thể sử dụng cho nhiều file cùng 1 lúc, vd: ansible-vault rekey file1.yml file2.yml

    Nội dung file của mình:
    Code:
    [FONT=Calibri][FONT=Times New Roman]---[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]ansible_ssh_user: admin[/FONT][/FONT]
    [FONT=Calibri][FONT=Times New Roman]ansible_ssh_pass: 123[/FONT][/FONT]
    [FONT=Times New Roman]ansible_become_password: 321[/FONT]
    Nội dung file sau khi mã hóa:




    Lưu ý: cần ghi nhớ mật khẩu mã hóa. Có thể đặt nhiều password cho 1 file.
    Chạy các playbook với pass.yml đã được mã hóa.
    sudo ansible-playbook <filename>.yml --ask-vault-pass sau đó nhập mật khẫu mã hóa
    có thể lưu mật khẩu mã hóa riêng ở 1 file hoặc 1 script và chạy với lệnh sau:
    sudo ansible-playbook <filename>.yml --vault-password-file password.txt
    hoặc
    sudo ansible-playbook <filename>.yml --vault-password-file password.py
    Giải thích: - -vault-password-file là lấy password file chứa password. - -ask-vault-pass là cho nhập password khi chạy kết quả.

    Chạy file AS.yml:



    Chạy file DS.yml:



    Chạy R.yml:



    Hoàn thành LAB.

    Thank you.
    Nguồn : VNPRO
Working...
X