ข้อมูลลับใน Dockerfile - ตัวแปรสภาพแวดล้อมสำหรับข้อมูลลับใน Dockerfile

ความลับของ Dockerfile: เหตุใดเลเยอร์จึงช่วยปกป้องข้อมูลสำคัญของคุณได้อย่างถาวร

การซ่อนความลับไว้ในเลเยอร์ของ Docker – ความลับใน Dockerfile

การสร้าง Docker แต่ละครั้งจะสร้างเลเยอร์ที่ไม่สามารถเปลี่ยนแปลงได้ แม้ว่าคุณจะ "ลบ" ข้อมูลลับไปแล้ว Docker ก็ยังคงเก็บเลเยอร์ก่อนหน้าไว้ในประวัติของอิมเมจ นั่นเป็นเหตุผลว่าทำไมข้อมูลลับใน Dockerfile และโดยเฉพาะอย่างยิ่งตัวแปรสภาพแวดล้อมของ Dockerfile จึงอันตราย เพราะข้อมูลประจำตัวหรือคีย์ส่วนตัวของคุณอาจยังคงฝังอยู่ในเลเยอร์เก่า ซึ่งสามารถกู้คืนได้อย่างสมบูรณ์ผ่านประวัติของ Docker หรือไฟล์บีบอัดอิมเมจที่ส่งออก

⚠️ตัวอย่างที่ไม่ปลอดภัย มีไว้เพื่อการศึกษาเท่านั้น ห้ามนำไปใช้ในงานจริง

ตัวอย่างนี้ฝังข้อมูลที่ละเอียดอ่อนไว้ใน ENV ตัวแปร. ความลับจะถูกจัดเก็บอย่างถาวรในเมตาเดตาของเลเยอร์และสามารถกู้คืนได้จากประวัติรูปภาพ เวอร์ชันที่ปลอดภัย:

หมายเหตุให้ความรู้: หลีกเลี่ยงการเก็บข้อมูลลับไว้ในเลเยอร์ของ Docker ให้ใช้ BuildKit แทน -ความลับ เพื่อการจัดการอย่างปลอดภัย ความลับของ Dockerfile ส่งข้อมูลในระหว่างการสร้างโดยไม่ทิ้งร่องรอยใดๆ

ข้อผิดพลาดทั่วไปของนักพัฒนา: ARG, ENV และรหัสลับที่เขียนตายตัว

นักพัฒนาซอฟต์แวร์มักจะ leak secrets ตลอด ตัวแปรสภาพแวดล้อมลับใน Dockerfile (.env) ไฟล์หรือ ข้อมูลประจำตัวที่กำหนดไว้ตายตัวเมื่อค่าเหล่านั้นถูกฝังลงในภาพแล้ว ก็ไม่สามารถลบออกได้อย่างปลอดภัย

⚠️ตัวอย่างที่ไม่ปลอดภัย มีไว้เพื่อการศึกษาเท่านั้น ห้ามนำไปใช้ในงานจริง

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

หมายเหตุให้ความรู้: โดยค่าเริ่มต้น ให้ถือว่าตัวแปรสภาพแวดล้อมของ Dockerfile secrets นั้นไม่ปลอดภัย ใช้งาน .ด็อกเกอร์เพิกเฉย เพื่อยกเว้นไฟล์ที่มีความละเอียดอ่อนและโหลดข้อมูลรับรองแบบไดนามิกในระหว่างการทำงาน ไม่ใช่ในระหว่างการสร้าง

การติดตามหาความลับใน CI/CD Pipelines

ข้อมูลลับมักรั่วไหลผ่านระบบอัตโนมัติ เช่น แคชของโปรแกรม การตั้งค่ารีจิสทรีที่ไม่ถูกต้อง หรือ... pipeline ไฟล์บันทึกสามารถเก็บรักษาข้อมูลลับของ Dockerfile ไว้ได้ตลอดไป

⚠️ตัวอย่างที่ไม่ปลอดภัย มีไว้เพื่อการศึกษาเท่านั้น ห้ามนำไปใช้ในงานจริง

สิ่งนี้ใช้ –สร้างอาร์กิวเมนต์โดยฝังความลับไว้ในเมตาเดต้าของรูปภาพ ใครก็ตามที่มีสิทธิ์เข้าถึงรีจิสทรีก็สามารถดึงข้อมูลนั้นออกมาได้ เวอร์ชันที่ปลอดภัย:

หมายเหตุให้ความรู้: หลีกเลี่ยง –สร้างอาร์กิวเมนต์ สำหรับความลับต่างๆ ของ BuildKit ลับ ช่วยให้มั่นใจได้ว่าข้อมูลลับจะถูกใช้ในหน่วยความจำระหว่างการสร้างเท่านั้น และจะไม่ถูกจัดเก็บไว้ในเลเยอร์ใดๆ

การป้องกันเชิงปฏิบัติ: การก่อสร้างที่สะอาดและการจัดการความลับที่ปลอดภัย

การสร้างระบบที่สะอาดหมดจดเป็นรากฐานของการใช้งาน Docker อย่างปลอดภัย กระบวนการทำงานที่ปลอดภัยจะกำจัดข้อมูลลับตั้งแต่เนิ่นๆ และป้องกันการเก็บรักษาข้อมูลโดยไม่ตั้งใจในเลเยอร์ระดับกลาง

ปฏิบัติที่ดีที่สุด

  1. ควรใช้ BuildKit เสมอ -ความลับ ภูเขา สำหรับข้อมูลที่ละเอียดอ่อน
  2. ห้ามใช้ ARG หรือ ENV สำหรับข้อมูลรับรอง
  3. เพิ่ม .env, ความลับ/, กำหนดค่า/ ไปยัง .ด็อกเกอร์เพิกเฉย.
  4. ลบไฟล์ชั่วคราว ก่อนขั้นตอนการสร้างภาพขั้นสุดท้าย
  5. แยกแคชการสร้างออก ตามสภาพแวดล้อมเพื่อหลีกเลี่ยงการปนเปื้อนข้าม

รายการตรวจสอบการป้องกันฉบับย่อ

  • ตรวจสอบตัวแปรสภาพแวดล้อมลับทั้งหมดใน Dockerfile
  • ตรวจสอบให้แน่ใจว่าไม่มีข้อมูลประจำตัวใดปรากฏอยู่ ENV, หาเรื่องหรือ คัดลอก.
  • ใช้ BuildKit secret mounts สำหรับข้อมูลส่วนตัว
  • สแกนภาพก่อนกดส่ง
  • ตรวจสอบ .ด็อกเกอร์เพิกเฉย ไม่รวมไฟล์ส่วนตัว

หมายเหตุให้ความรู้: เลเยอร์ของ Docker นั้นไม่สามารถเปลี่ยนแปลงได้ ควรทำการสร้างอิมเมจแบบสะอาดและชั่วคราวเสมอ และเก็บข้อมูลลับไว้ภายนอกประวัติอิมเมจ

ตรวจจับความลับที่ถูกเปิดเผยด้วยการสแกนอัตโนมัติ

ระบบสแกนอัตโนมัติตรวจจับการรั่วไหล ตรวจสอบความลับใน Dockerfile ก่อนการปรับใช้ เครื่องมืออย่าง Trivy, Xygeni หรือ GitHub Advanced Security สามารถตรวจจับความลับในเลเยอร์ของอิมเมจหรือตัวแปรสภาพแวดล้อมที่ไม่ปลอดภัยใน Dockerfile ได้

ตัวอย่างโค้ดการทำงานและการบังคับใช้ตามบริบท

เพิ่มขั้นตอนนี้ลงใน CI/CD pipelineเป็นส่วนหนึ่งของระบบรักษาความปลอดภัย

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

Xygeni ช่วยรักษาความปลอดภัยให้กับระบบของคุณได้อย่างไร Pipeline

ไซเกนี ความลับด้านความปลอดภัย เสริมความแข็งแกร่งในการปกป้องการสร้าง Docker โดยการวิเคราะห์ Dockerfile และการกำหนดค่าการสร้างเพื่อค้นหาความลับใน Dockerfile การใช้งาน ENV/ARG ที่ไม่ปลอดภัย และข้อมูลประจำตัวที่เปิดเผยในเมตาเดต้าของอิมเมจ มันรวมเข้าเป็น CI/CD pipelineรวมถึงการบังคับใช้มาตรฐานการสร้างซอฟต์แวร์ที่สะอาดและเป็นไปตามข้อกำหนด และการบล็อกไฟล์ที่ไม่ปลอดภัยก่อนการเผยแพร่

ตัวอย่างโค้ดฟังก์ชันการทำงานและราวกันตก

หมายเหตุให้ความรู้: ไซเกนี บังคับใช้มาตรฐานการสร้างที่ปลอดภัยโดยอัตโนมัติ ช่วยให้ทีมรักษาการปฏิบัติตามข้อกำหนดและป้องกันการรั่วไหลของข้อมูลลับในเลเยอร์ของ Docker

สรุป: ป้องกันการรั่วไหลของข้อมูลลับจากตัวแปรสภาพแวดล้อมใน Dockerfile

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

เพื่อปกป้องคุณ pipelines:

  • ห้ามใช้เด็ดขาด หาเรื่อง or ENV เพื่อตรวจสอบคุณสมบัติ
  • สร้างด้วยเสมอ -ความลับ.
  • ยกเว้นไฟล์ที่มีความละเอียดอ่อนผ่านทาง .ด็อกเกอร์เพิกเฉย.
  • ผสานรวมการสแกนอัตโนมัติและ Xygeni Code Security การบังคับใช้

การปรับปรุงครั้งต่อไปของคุณไม่ควรทำให้ความลับของคุณยังคงอยู่ต่อไป จงปกป้องความลับเหล่านั้นก่อนที่มันจะฝังรากลึก

sca-tools-software-composition-analysis-tools
จัดลำดับความสำคัญ แก้ไข และรักษาความปลอดภัยความเสี่ยงด้านซอฟต์แวร์ของคุณ
สมัครบัญชีฟรีได้เลย
ไม่ต้องใช้บัตรเครดิต

รักษาความปลอดภัยให้กับการพัฒนาและส่งมอบซอฟต์แวร์ของคุณ

ด้วยชุดผลิตภัณฑ์ Xygeni