ค้นหาเว็บไซต์

วิธีใช้ 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 เราหวังว่าบทช่วยสอนจะเติมความรู้ที่เป็นประโยชน์เกี่ยวกับวิธีการทำงานอัตโนมัติในเซิร์ฟเวอร์หลายเครื่องจากระบบกลางเดียว