วิธีใช้ Ansible Vault ใน Playbooks เพื่อปกป้องข้อมูลที่ละเอียดอ่อน - ตอนที่ 10
เมื่อคุณใช้ Ansible คุณอาจต้องป้อนข้อมูลที่เป็นความลับหรือเป็นความลับใน Playbook ซึ่งรวมถึงคีย์ส่วนตัวและสาธารณะ SSH รหัสผ่าน และใบรับรอง SSL ที่จะกล่าวถึงบางส่วน ดังที่เราทราบกันดีอยู่แล้ว การบันทึกข้อมูลที่ละเอียดอ่อนนี้เป็นข้อความธรรมดาด้วยเหตุผลที่ชัดเจนถือเป็นแนวปฏิบัติที่ไม่ดี ข้อมูลนี้จำเป็นต้องถูกเก็บไว้ภายใต้การล็อกและคีย์ เนื่องจากเราสามารถจินตนาการได้ว่าจะเกิดอะไรขึ้นหากแฮกเกอร์หรือผู้ใช้ที่ไม่ได้รับอนุญาตเข้ายึดครองข้อมูลดังกล่าว
โชคดีที่ Ansible มอบฟีเจอร์ที่มีประโยชน์ที่เรียกว่า Ansible Vault ให้กับเรา ตามชื่อที่แนะนำ Ansible Vault ช่วยรักษาความปลอดภัยข้อมูลลับสำคัญดังที่เราได้พูดคุยกันก่อนหน้านี้ Ansible Vault สามารถเข้ารหัสตัวแปร หรือแม้แต่ไฟล์ทั้งหมดและ Playbooks YAML ตามที่เราจะสาธิตในภายหลัง มันเป็นเครื่องมือที่มีประโยชน์มากและใช้งานง่ายซึ่งต้องใช้รหัสผ่านเดียวกันเมื่อทำการเข้ารหัสและถอดรหัสไฟล์
ตอนนี้มาเจาะลึกและดูภาพรวมของการดำเนินการต่างๆ ที่สามารถทำได้โดยใช้ Ansible vault
วิธีสร้างไฟล์ที่เข้ารหัสใน Ansible
หากคุณต้องการสร้างไฟล์ Playbook ที่เข้ารหัส เพียงใช้คำสั่ง ansible-vault create และระบุชื่อไฟล์ตามที่แสดง
ansible-vault create filename
ตัวอย่างเช่น หากต้องการสร้างไฟล์ที่เข้ารหัส mysecrets.yml ให้ดำเนินการคำสั่ง
ansible-vault create mysecrets.yml
หลังจากนั้นคุณจะได้รับแจ้งให้ใส่รหัสผ่าน และหลังจากยืนยันแล้ว หน้าต่างใหม่จะเปิดขึ้นโดยใช้โปรแกรมแก้ไข vi ซึ่งคุณสามารถเริ่มเขียนบทละครของคุณได้
ด้านล่างนี้คือตัวอย่างข้อมูลบางส่วน เมื่อคุณทำเสร็จแล้ว เพียงบันทึกและออกจาก Playbook และนั่นคือทั้งหมดเมื่อสร้างไฟล์ที่เข้ารหัส
หากต้องการตรวจสอบการเข้ารหัสไฟล์ให้ใช้คำสั่ง cat ดังที่แสดง
cat mysecrets.yml
วิธีดูไฟล์ที่เข้ารหัสใน Ansible
หากคุณต้องการดูไฟล์ที่เข้ารหัส เพียงส่งคำสั่ง ansible-vault ดังที่แสดงด้านล่าง
ansible-vault view mysecrets.yml
คุณจะได้รับแจ้งให้ใส่รหัสผ่านอีกครั้ง คุณจะสามารถเข้าถึงข้อมูลของคุณได้อีกครั้ง
วิธีแก้ไขไฟล์ที่เข้ารหัสใน Ansible
หากต้องการเปลี่ยนแปลงไฟล์ที่เข้ารหัส ให้ใช้คำสั่ง ansible-vault edit ดังที่แสดง
ansible-vault edit mysecrets.yml
และเช่นเคย ให้ระบุรหัสผ่านแล้วดำเนินการแก้ไขไฟล์ต่อไป
หลังจากที่คุณแก้ไขเสร็จแล้ว ให้บันทึกและออกจากโปรแกรมแก้ไขเป็นกลุ่ม
วิธีการเปลี่ยนรหัสผ่าน Ansible Vault
ในกรณีที่คุณรู้สึกว่าจำเป็นต้องเปลี่ยนรหัสผ่าน Ansible vault คุณสามารถทำได้โดยใช้คำสั่ง ansible-vault rekey ดังที่แสดงด้านล่าง
ansible-vault rekey mysecrets.yml
ซึ่งจะแจ้งให้คุณใส่รหัสผ่านห้องนิรภัย และจะขอให้คุณป้อนรหัสผ่านใหม่และยืนยันในภายหลัง
วิธีการเข้ารหัสไฟล์ที่ไม่ได้เข้ารหัสใน Ansible
สมมติว่าคุณต้องการเข้ารหัสไฟล์ที่ไม่ได้เข้ารหัส คุณสามารถทำได้โดยการรันคำสั่ง ansible-vault encrypt ดังที่แสดง
ansible-vault encrypt classified.txt
คุณสามารถดูไฟล์ได้ในภายหลังโดยใช้คำสั่ง cat ตามที่ระบุด้านล่าง
วิธีถอดรหัสไฟล์ที่เข้ารหัส
หากต้องการดูเนื้อหาของไฟล์ที่เข้ารหัส เพียงถอดรหัสไฟล์โดยใช้ การเข้ารหัส ansible-vault ดังแสดงในตัวอย่างด้านล่าง
ansible-vault decrypt classified.txt
วิธีการเข้ารหัสตัวแปรเฉพาะใน Ansible
นอกจากนี้ Ansible vault ยังให้คุณสามารถเข้ารหัสตัวแปรบางตัวได้ ซึ่งทำได้โดยใช้คำสั่ง ansible-vault encrypt_string ดังที่แสดง
ansible-vault encrypt_string
Ansible vault จะแจ้งให้คุณใส่รหัสผ่านและต้องการให้คุณยืนยันในภายหลัง ถัดไป พิมพ์ค่าสตริงที่คุณต้องการเข้ารหัส สุดท้าย ให้กด ctrl+d
หลังจากนั้น คุณสามารถเริ่มกำหนดค่าที่เข้ารหัสใน Playbook ได้
สามารถทำได้ในบรรทัดเดียวดังที่แสดงด้านล่าง
ansible-vault encrypt_string 'string' --name 'variable_name'
วิธีถอดรหัสไฟล์ Playbook ระหว่างรันไทม์
หากคุณมีไฟล์ Playbook และต้องการถอดรหัสในระหว่างรันไทม์ ให้ใช้ตัวเลือก --ask-vault-pass
ตามที่แสดง
ansible-playbook deploy.yml --ask-vault-pass
วิธีนี้จะถอดรหัสไฟล์ทั้งหมดที่ใช้ใน Playbook โดยมีการเข้ารหัสโดยใช้รหัสผ่านเดียวกัน
การแจ้งรหัสผ่านอาจสร้างความรำคาญในบางครั้ง ข้อความแจ้งเหล่านี้ทำให้ระบบอัตโนมัติไม่สามารถป้องกันได้ โดยเฉพาะอย่างยิ่งเมื่อระบบอัตโนมัติเป็นกุญแจสำคัญ เพื่อปรับปรุงกระบวนการถอดรหัส Playbooks ในระหว่างรันไทม์ ขอแนะนำให้มีไฟล์รหัสผ่านแยกต่างหากที่มีรหัสผ่าน Ansible vault ไฟล์นี้สามารถส่งผ่านได้ในระหว่างรันไทม์ดังที่แสดง
ansible-playbook deploy.yml --vault-password-file /home/tecmint/vault_pass.txt
สิ่งนี้นำเราไปสู่บทสรุปของหัวข้อนี้และซีรีส์ Ansible Automation เราหวังว่าบทช่วยสอนจะเติมความรู้ที่เป็นประโยชน์เกี่ยวกับวิธีการทำงานอัตโนมัติในเซิร์ฟเวอร์หลายเครื่องจากระบบกลางเดียว