รักษาความลับของคุณด้วย Ansible Vault



บล็อก Ansible vault นี้อธิบายถึงวิธีการจัดเก็บข้อมูลที่ละเอียดอ่อน (รหัสผ่าน / คีย์ลับ / ไฟล์ใบรับรอง) ในไฟล์ที่เข้ารหัสและฝังไว้ใน Ansible Playbooks

การใช้เทคโนโลยีที่สูงขึ้นอาจทำให้เกิดภัยคุกคามต่อความปลอดภัยมากขึ้น การตั้งค่า Ansible โดยทั่วไปคุณจะต้องป้อน 'ความลับ' ความลับเหล่านี้อาจเป็นอะไรก็ได้รหัสผ่านโทเค็น API คีย์สาธารณะหรือคีย์ส่วนตัว SSH ใบรับรอง SSL ฯลฯ เราจะรักษาความลับเหล่านี้ให้ปลอดภัยได้อย่างไร? Ansible มีคุณลักษณะที่เรียกว่า Ansible Vault

ในบล็อกนี้ฉันจะสาธิตวิธีใช้ Ansible Vault และสำรวจแนวทางปฏิบัติที่ดีที่สุดบางประการในการรักษาข้อมูลให้ปลอดภัย





หัวข้อที่กล่าวถึงในบล็อกนี้:

หากคุณต้องการที่จะเชี่ยวชาญ DevOps ' แน่นอนจะเป็นตัวเลือกที่คุณต้องการ



Ansible Vault คืออะไร?

การมีโครงสร้างพื้นฐานเป็นรหัสอาจก่อให้เกิดภัยคุกคามต่อการเปิดเผยข้อมูลที่ละเอียดอ่อนของคุณไปทั่วโลกซึ่งนำไปสู่ปัญหาด้านความปลอดภัยที่ไม่ต้องการ Ansible Vault เป็นคุณสมบัติที่ช่วยให้คุณเก็บความลับทั้งหมดของคุณให้ปลอดภัย สามารถเข้ารหัสไฟล์ทั้งไฟล์สมุดเล่น YAML ทั้งหมดหรือแม้แต่ตัวแปรบางตัว มันมีสิ่งอำนวยความสะดวกที่คุณไม่เพียง แต่เข้ารหัสข้อมูลที่ละเอียดอ่อน แต่ยังรวมเข้ากับเพลย์บุ๊คของคุณด้วย

ห้องนิรภัยถูกนำไปใช้โดยมีความละเอียดระดับไฟล์โดยที่ไฟล์จะถูกเข้ารหัสทั้งหมดหรือไม่เข้ารหัสทั้งหมด ใช้รหัสผ่านเดียวกันในการเข้ารหัสและถอดรหัสไฟล์ซึ่งทำให้การใช้ Ansible Vault ใช้งานง่ายมาก

ทำไมต้องใช้ Ansible Vault

เนื่องจาก Ansible ถูกใช้สำหรับระบบอัตโนมัติจึงมีความเป็นไปได้สูงที่ playbook จะมีข้อมูลประจำตัวใบรับรอง SSL หรือข้อมูลที่ละเอียดอ่อนอื่น ๆ การบันทึกข้อมูลที่ละเอียดอ่อนดังกล่าวเป็นข้อความธรรมดาถือเป็นความคิดที่ไม่ดี การกระทำผิดอย่างหนึ่งต่อ GitHub หรือการขโมยแล็ปท็อปอาจทำให้องค์กรสูญเสียครั้งใหญ่ นี่คือจุดที่ Ansible vault เข้ามาในภาพ เป็นวิธีที่ยอดเยี่ยมในการมีโครงสร้างพื้นฐานเป็นรหัสโดยไม่กระทบต่อความปลอดภัย



สมมติว่าเรามี Playbook ที่จัดเตรียมอินสแตนซ์ EC2 ของคุณบน AWS คุณต้องระบุรหัสคีย์การเข้าถึง AWS และรหัสลับ AWS ใน Playbook คุณไม่เปิดเผยคีย์เหล่านี้กับผู้อื่นด้วยเหตุผลที่ชัดเจน คุณจะไม่เปิดเผยได้อย่างไร? มีสองวิธี - เข้ารหัสทั้งสองตัวแปรและฝังลงในเพลย์บุ๊กหรือเข้ารหัสทั้งเพลย์บุ๊ก

นี่เป็นเพียงหนึ่งในสถานการณ์จำลองที่สามารถใช้ Ansible vault ได้ เราสามารถเข้ารหัสไฟล์ทั้งหมดหรือเข้ารหัสตัวแปรเพียงไม่กี่ตัวซึ่งอาจเก็บข้อมูลที่ละเอียดอ่อนจากนั้น Ansible จะถอดรหัสโดยอัตโนมัติระหว่างรันไทม์ ตอนนี้เราสามารถส่งค่าเหล่านี้ไปยัง GitHub ได้อย่างปลอดภัย

การสร้างไฟล์เข้ารหัส

ในการสร้างไฟล์ที่เข้ารหัสให้ใช้ไฟล์ สร้าง ansible-vault คำสั่งและส่งผ่านชื่อไฟล์

$ ansible-vault สร้าง filename.yaml

คุณจะได้รับแจ้งให้สร้างรหัสผ่านจากนั้นยืนยันโดยพิมพ์ใหม่

สร้างห้องนิรภัยที่ตอบได้ - Ansible Vault - Edureka

เมื่อรหัสผ่านของคุณได้รับการยืนยันไฟล์ใหม่จะถูกสร้างขึ้นและจะเปิดหน้าต่างแก้ไข โดยค่าเริ่มต้นตัวแก้ไขสำหรับ Ansible Vault คือ vi คุณสามารถเพิ่มข้อมูลบันทึกและออก

และไฟล์ของคุณถูกเข้ารหัส.

การแก้ไขไฟล์ที่เข้ารหัส

หากคุณต้องการแก้ไขไฟล์ที่เข้ารหัสคุณสามารถแก้ไขได้โดยใช้ การแก้ไข ansible-vault คำสั่ง

$ ansible-vault แก้ไข secret.txt

โดยที่ secret.txt เป็นไฟล์ที่เข้ารหัสไว้แล้ว

คุณจะได้รับแจ้งให้ใส่รหัสผ่านของห้องนิรภัย ไฟล์ (เวอร์ชันถอดรหัส) จะเปิดขึ้นในตัวแก้ไข vi จากนั้นคุณสามารถทำการเปลี่ยนแปลงที่ต้องการได้

หากคุณตรวจสอบผลลัพธ์คุณจะเห็นข้อความของคุณจะถูกเข้ารหัสโดยอัตโนมัติเมื่อคุณบันทึกและปิด

การดูไฟล์ที่เข้ารหัส

หากคุณต้องการดูไฟล์ที่เข้ารหัสคุณสามารถใช้ไฟล์ มุมมอง ansible-vault คำสั่ง

$ ansible-vault ดู filename.yml

คุณจะได้รับแจ้งให้ป้อนรหัสผ่านอีกครั้ง

และคุณจะเห็นผลลัพธ์ที่คล้ายกัน

การป้อนรหัสผ่านของห้องนิรภัยใหม่

แน่นอนว่ามีหลายครั้งที่คุณต้องเปลี่ยนรหัสผ่านห้องนิรภัย คุณสามารถใช้ไฟล์ rekey ansible-vault คำสั่ง

$ ansible-vault rekey secrets.txt

คุณจะได้รับแจ้งให้ใส่รหัสผ่านปัจจุบันของห้องนิรภัยจากนั้นรหัสผ่านใหม่และในที่สุดก็ยืนยันรหัสผ่านใหม่

การเข้ารหัสไฟล์ที่ไม่เข้ารหัส

สมมติว่าคุณมีไฟล์ที่คุณต้องการเข้ารหัสคุณสามารถใช้ไฟล์ การเข้ารหัส ansible-vault คำสั่ง

$ ansible-vault เข้ารหัส filename.txt

คุณจะได้รับแจ้งให้ใส่และยืนยันรหัสผ่านและไฟล์ของคุณจะถูกเข้ารหัส

ตอนนี้คุณดูเนื้อหาไฟล์แล้วมันเข้ารหัสทั้งหมด

การถอดรหัสไฟล์ที่เข้ารหัส

หากคุณต้องการถอดรหัสไฟล์ที่เข้ารหัสคุณสามารถใช้ไฟล์ การถอดรหัส ansible-vault คำสั่ง

$ ansible-vault ถอดรหัส filename.txt

ตามปกติระบบจะแจ้งให้คุณใส่และยืนยันรหัสผ่านของห้องนิรภัย

การเข้ารหัสตัวแปรเฉพาะ

แนวทางปฏิบัติที่ดีที่สุดในขณะใช้ Ansible Vault คือเข้ารหัสเฉพาะข้อมูลที่ละเอียดอ่อน ในตัวอย่างที่อธิบายไว้ข้างต้นทีมพัฒนาไม่ต้องการแชร์รหัสผ่านกับฝ่ายผลิตและทีมจัดเตรียม แต่อาจต้องเข้าถึงข้อมูลบางอย่างเพื่อดำเนินงานของตนเอง ในกรณีเช่นนี้คุณควรเข้ารหัสเฉพาะข้อมูลที่คุณไม่ต้องการแบ่งปันกับผู้อื่นโดยปล่อยให้ส่วนที่เหลือเหมือนเดิม

Ansible Vault อนุญาตให้คุณเข้ารหัสเฉพาะตัวแปรที่เจาะจง คุณสามารถใช้ไฟล์ ansible-vault encrypt_string คำสั่งสำหรับสิ่งนี้

$ ansible-vault encrypt_string

คุณจะได้รับแจ้งให้ใส่และยืนยันรหัสผ่านของห้องนิรภัย จากนั้นคุณสามารถเริ่มแทรกค่าสตริงที่คุณต้องการเข้ารหัส กด ctrl-d เพื่อสิ้นสุดการป้อนข้อมูล ตอนนี้คุณสามารถกำหนดเข้ารหัสนี้ได้มูลค่าเป็นสตริงใน playbook

คุณยังสามารถบรรลุสิ่งเดียวกันได้ในบรรทัดเดียว

$ ansible-vault encrypt_string 'string' --name 'variable_name'

อะไรคือความแตกต่างระหว่างการโอเวอร์โหลดและการลบล้าง

การถอดรหัสไฟล์ที่เข้ารหัสระหว่างรันไทม์

หากคุณต้องการถอดรหัสไฟล์ระหว่างรันไทม์คุณสามารถใช้ไฟล์ –ask-vault-pass ธง.

$ ansible-playbook launch.yml --ask-vault-pass

การดำเนินการนี้จะถอดรหัสไฟล์ที่เข้ารหัสทั้งหมดที่ใช้สำหรับ playbook launch.yml นี้เพื่อดำเนินการ นอกจากนี้จะทำได้ก็ต่อเมื่อไฟล์ทั้งหมดถูกเข้ารหัสด้วยรหัสผ่านเดียวกัน

การแจ้งรหัสผ่านอาจสร้างความรำคาญ วัตถุประสงค์ของระบบอัตโนมัติกลายเป็นสิ่งที่ไร้จุดหมาย เราจะทำให้ดีขึ้นได้อย่างไร Ansible มีคุณลักษณะที่เรียกว่า 'ไฟล์รหัสผ่าน' ซึ่งอ้างอิงถึงไฟล์ที่มีรหัสผ่าน จากนั้นคุณสามารถส่งไฟล์รหัสผ่านนี้ในระหว่างรันไทม์เพื่อทำให้เป็นอัตโนมัติ

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.txt

การมีสคริปต์แยกต่างหากที่ระบุรหัสผ่านก็เป็นไปได้เช่นกัน คุณต้องตรวจสอบให้แน่ใจว่าไฟล์สคริปต์ทำงานได้และรหัสผ่านถูกพิมพ์ไปยังเอาต์พุตมาตรฐานเพื่อให้ทำงานได้โดยไม่มีข้อผิดพลาดที่น่ารำคาญ

$ ansible-playbook launch.yml --vault-password-file ~ / .vault_pass.py

การใช้รหัสห้องนิรภัย

Vault Id เป็นวิธีการระบุรหัสผ่านของห้องนิรภัย Vault ID ช่วยในการเข้ารหัสไฟล์ต่างๆด้วยรหัสผ่านที่แตกต่างกันเพื่ออ้างอิงภายใน playbook ฟีเจอร์นี้ของ Ansible ออกมาพร้อมกับการเปิดตัว Ansible 2.4 ก่อนการเปิดตัวนี้สามารถใช้รหัสผ่านห้องนิรภัยได้เพียงรหัสเดียวในการเรียกใช้งานเพลย์บุ๊กแต่ละรายการ

ดังนั้นหากคุณต้องการเรียกใช้งาน Ansible playbook ซึ่งใช้ไฟล์หลายไฟล์ที่เข้ารหัสด้วยรหัสผ่านที่แตกต่างกันคุณสามารถใช้ Vault Id ได้

$ ansible-playbook --vault-id vault-pass1 --vault-id vault-pass2 filename.yml

ด้วยเหตุนี้เราจึงมาถึงจุดสิ้นสุดของบล็อก Ansible Vault นี้ มันน่าทึ่งมากที่ได้ติดตามเทคโนโลยีและทำให้เต็มที่ แต่ไม่ลดทอนความปลอดภัย นี่เป็นวิธีที่ดีที่สุดวิธีหนึ่งในการมีโครงสร้างพื้นฐานเป็นรหัส (IaC)

หากคุณพบว่าบทความนี้มีประโยชน์โปรดดูไฟล์ ' นำเสนอโดย Edureka ครอบคลุมเครื่องมือทั้งหมดที่ทำให้อุตสาหกรรมไอทีฉลาดขึ้น

มีคำถามสำหรับเรา? กรุณาโพสต์บน และเราจะติดต่อกลับ