การใช้เทคโนโลยีที่สูงขึ้นอาจทำให้เกิดภัยคุกคามต่อความปลอดภัยมากขึ้น การตั้งค่า Ansible โดยทั่วไปคุณจะต้องป้อน 'ความลับ' ความลับเหล่านี้อาจเป็นอะไรก็ได้รหัสผ่านโทเค็น API คีย์สาธารณะหรือคีย์ส่วนตัว SSH ใบรับรอง SSL ฯลฯ เราจะรักษาความลับเหล่านี้ให้ปลอดภัยได้อย่างไร? Ansible มีคุณลักษณะที่เรียกว่า Ansible Vault
ในบล็อกนี้ฉันจะสาธิตวิธีใช้ Ansible Vault และสำรวจแนวทางปฏิบัติที่ดีที่สุดบางประการในการรักษาข้อมูลให้ปลอดภัย
หัวข้อที่กล่าวถึงในบล็อกนี้:
- 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 คือ 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 ครอบคลุมเครื่องมือทั้งหมดที่ทำให้อุตสาหกรรมไอทีฉลาดขึ้น
มีคำถามสำหรับเรา? กรุณาโพสต์บน และเราจะติดต่อกลับ