ความคิดคือการใส่ข้อมูลที่ละเอียดอ่อนทั้งหมดของเรา [... ]
ความหมายของคำว่า "ทั้งหมด" ในประโยคนี้ควรได้รับการวิเคราะห์อย่างรอบคอบก่อนดำเนินการตามแนวทางที่คุณวางแผน
Ansible vault เป็นเครื่องมือที่มีประโยชน์มาก แต่ควรใช้เพื่อเก็บความลับที่:
- จำเป็นสำหรับการปรับใช้ที่ไม่สามารถใช้ได้โดยเฉพาะ
- ทำให้ไร้ประโยชน์อย่างง่ายดายสำหรับเจ้าของที่ควรระวังพวกเขา แต่นั่นอาจ "จำ" พวกเขาอย่างผิดกฎหมาย (โดยทั่วไปคือพนักงานที่ไม่ได้ประจำ)
จุดที่สองมีความสำคัญ
หลายคนและอาจเป็นทั้งทีม DevOps จะสามารถเข้าถึงรหัสผ่านห้องนิรภัยได้ดังนั้นจึงเป็นความลับทั้งหมด
ดังนั้นสำหรับความลับทั้งหมดที่เก็บไว้ในห้องนิรภัยเงื่อนไขควรมีไว้ซึ่งบุคคลหรือเครื่องที่เข้าถึงโดยไม่ได้รับอนุญาตควรไม่สามารถใช้ประโยชน์จากสิ่งเหล่านี้ได้หากต้องการ
ในแง่ที่เป็นรูปธรรมหากคุณใช้ ansible ในการปรับใช้ฐานข้อมูลและผู้ใช้คุณสามารถเก็บรหัสผ่านไว้ในห้องนิรภัยได้ แต่คุณจะต้องระมัดระวังเป็นอย่างมาก และไม่จำเป็นต้องมีการรับรองความถูกต้อง VPN ใด ๆ !
ผู้ใช้ (DevOps) ที่เปิดเผยความลับควรไม่สามารถใช้รหัสผ่านที่ "จำได้" หากมีการกำหนดสิ่งกีดขวางด้านความปลอดภัย (เช่นการเข้าถึง VPN ถูกเพิกถอน) นอกจากนี้การเข้าถึงที่เก็บซอร์สโค้ด (ที่เก็บ vault) ควรถูกเพิกถอนก่อนที่จะเปลี่ยนรหัสผ่าน
ภายใต้เงื่อนไขเหล่านี้ ansible vault เป็นเครื่องมือที่มีประโยชน์มาก
การพยายามเก็บความลับที่บุคคลหรือเครื่องสามารถใช้บนอินเทอร์เน็ตในห้องนิรภัยนั้นจะเป็นความผิดพลาดแทน (เช่นข้อมูลรับรอง VPN ของผู้ใช้)
มีตัวเลือกอื่น ๆ ซึ่งเป็นวิธีที่ดีที่สุด (และปลอดภัย) ในการจัดเก็บรหัสผ่าน ansible-vault
ภายใต้เงื่อนไขจากย่อหน้าก่อนหน้าฉันคิดว่าแนวทางปฏิบัติที่ดีจะเป็น:
- เก็บรหัสผ่านห้องนิรภัยในห้องนิรภัยภายนอก (เช่นVault จาก HashiCorpหรือ SaaS สำหรับการจัดการข้อมูลประจำตัว)
- อนุญาตให้เข้าถึงรายการ vault ภายนอกไปยัง DevOps (พวกเขาจะต้องใช้รหัสผ่านสำหรับการทดสอบ) และระบบ CI / CD หรือตัวควบคุมที่ไม่สามารถใช้ได้
รักษาแบบแผนเพื่อใช้ความลับ ! คุณจะไม่สามารถตรวจสอบการเปลี่ยนแปลงความลับและคุณจะไม่สามารถ grep สำหรับตัวแปรที่เชื่อได้ในไฟล์ลับ! ดังนั้นให้ละเอียดตั้งแต่ต้น การประชุมที่ดีคือการตั้งชื่อตัวแปรทั้งหมดที่เก็บไว้ในหลุมฝังศพที่มีsecret_
คำนำหน้า เมื่อไหร่คุณจะเห็นสิ่งที่ชอบ:
postgres.yml:
postgres_password: "{{ secret_postgres_password }}"
คุณจะรู้ว่าค่าถูกเก็บไว้ในหลุมฝังศพ