เทคนิคการสร้าง Multi-Stage Docker Build สำหรับ Python API ให้ปลอดภัยและเบาขึ้น
แนวทางการคอนเทนเนอร์ไรซ์แอปพลิเคชัน Python สำหรับใช้งานจริงบน Production ด้วยสถาปัตยกรรมแบบ Multi-Stage ปลอดภัยและไร้สิทธิ์รูท

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- หลีกเลี่ยงอิมเมจ Docker ที่มีขนาดใหญ่และไม่ปลอดภัยจากการคอมไพล์โค้ดบนโปรดักชัน
- แยกขั้นตอนการติดตั้ง dependencies ออกจากการรันระบบจริงด้วย Multi-Stage Build
- รันแอปพลิเคชันในสภาพแวดล้อมแบบ non-root เพื่อยกระดับความปลอดภัย
- เพิ่มการตรวจสอบสุขภาพ (health check) และ OCI image metadata เข้าไปในคอนเทนเนอร์
การนำเว็บแอปพลิเคชันภาษา Python เข้าสู่กระบวนการคอนเทนเนอร์ไรซ์เพื่อเตรียมขึ้นระบบจริงในระดับ Production มักจะมาพร้อมกับปัญหาการได้อิมเมจที่มีขนาดใหญ่เทอะทะและมีความเสี่ยงด้านความปลอดภัย เนื่องจากมักจะหลงเหลือคอมไพเลอร์ ไฟล์เฮดเดอร์ รวมถึงการตั้งค่าให้รันด้วยสิทธิ์ root ซึ่งเป็นเป้าหมายชั้นดีของผู้ไม่หวังดี
บทความนี้จึงได้นำเสนอวิธีการสร้างอิมเมจ Docker ที่ผ่านการฮาร์ดเดน (hardened) ระบบความปลอดภัย ด้วยกระบวนการ multi-stage โดยใช้สภาพแวดล้อมรันไทม์แบบ non-root มีระบบตรวจสอบสุขภาพและใส่ OCI image metadata มาให้พร้อมสรรพ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในตัวอย่าง Dockerfile แบบหลายขั้นตอนนี้ นักพัฒนาได้เลือกใช้ base image เป็น python:3.11-slim-bookworm เพื่อแยกกระบวนการดาวน์โหลดและติดตั้ง dependencies ออกจากการประมวลผลในช่วงรันไทม์อย่างเด็ดขาด ช่วยตัดทอนส่วนเกินที่ไม่จำเป็นออกไปได้อย่างหมดจด
การทำ Multi-Stage Docker Build ถือเป็นแนวปฏิบัติที่ดีเยี่ยม (Best Practice) ในวงการ DevOps ยุคใหม่ เพราะช่วยลด Attack Surface หรือช่องโหว่ที่อาจเกิดขึ้นจากแพ็กเกจแปลกปลอมในอิมเมจ และยังช่วยประหยัดแบนด์วิดท์ในการรับส่งอิมเมจระหว่าง CI/CD Pipeline ไปยัง Registry อีกด้วย
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น