0Pricing
DevOps Bootcamp · บทเรียน

แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile

ใช้มาตรการรักษาความปลอดภัยภายใน Dockerfile เพื่อลดช่องโหว่และลดพื้นที่เสี่ยงต่อการโจมตี

แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

รักษาความปลอดภัยให้ Dockerfile ของคุณ

ยินดีต้อนรับสู่ แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของ Dockerfile แอปพลิเคชันที่ปลอดภัยเริ่มต้นจากพื้นฐานที่ปลอดภัย

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

ในบทเรียนนี้ เราจะสำรวจกลยุทธ์สำคัญในการเสริมความปลอดภัยให้กับอิมเมจ Docker และลดพื้นผิวการโจมตีที่อาจเกิดขึ้น

แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile — ภาพประกอบ 1

เริ่มต้นด้วยอิมเมจพื้นฐานที่เชื่อถือได้

คำสั่ง FROM คือแนวป้องกันด่านแรกของคุณ เลือกอิมเมจพื้นฐานอย่างเป็นทางการที่ได้รับการดูแลเป็นอย่างดีจากแหล่งที่เชื่อถือได้ เช่น Docker Hub เสมอ

  • อิมเมจอย่างเป็นทางการ: ได้รับการตรวจสอบและอัปเดตเป็นประจำ
  • แท็กที่ระบุชัดเจน: หลีกเลี่ยง latest ใช้แท็กเวอร์ชันที่ระบุชัดเจน เช่น alpine:3.18 เพื่อให้คาดการณ์และรักษาเสถียรภาพได้
  • อิมเมจขนาดเล็ก: เลือกเวอร์ชัน 'slim' หรือ 'alpine' ซึ่งมีแพ็กเกจน้อยกว่า จึงมีช่องโหว่ที่อาจเกิดขึ้นน้อยกว่า

การเลือกอิมเมจพื้นฐานที่ปลอดภัย

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

FROM alpine:3.18
# This is better than:
# FROM ubuntu:latest
# FROM python:latest

# Alpine is a minimal Linux distribution,
# making the image smaller and more secure.

ลดขนาดอิมเมจให้เล็กที่สุด

ทุกไฟล์ แพ็กเกจ หรือการอ้างอิงที่คุณเพิ่มลงในอิมเมจจะเพิ่ม 'พื้นผิวการโจมตี' ยิ่งมีซอฟต์แวร์อยู่น้อย ช่องโหว่ที่อาจเกิดขึ้นก็ยิ่งน้อยลง

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

ทำความสะอาดหลังการติดตั้ง

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

สำหรับอิมเมจที่ใช้ Debian เป็นพื้นฐาน เช่น Ubuntu ให้ใช้ apt-get clean และลบ /var/lib/apt/lists/* ในคำสั่ง RUN เดียวกัน

FROM debian:stable-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends \ 
    curl \ 
    git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# All in one RUN command to leverage Docker's caching and reduce layers.

อย่าทำงานในฐานะรูท

โดยค่าเริ่มต้น กระบวนการภายในคอนเทนเนอร์ Docker จะทำงานในฐานะผู้ใช้ root ซึ่งเป็นความเสี่ยงด้านความปลอดภัยอย่างมาก

หากผู้โจมตีควบคุมคอนเทนเนอร์ของคุณได้ ผู้โจมตีจะมีสิทธิ์ระดับรูท ซึ่งอาจทำให้หลบหนีออกจากคอนเทนเนอร์หรือเจาะระบบโฮสต์ได้

สร้างผู้ใช้เฉพาะที่ไม่ใช่รูทเสมอ แล้วเปลี่ยนไปใช้ผู้ใช้นั้นด้วยคำสั่ง USER

ตั้งค่าผู้ใช้ที่ไม่ใช่รูท

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

FROM alpine:3.18

# Create a non-root user and group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Switch to the non-root user
USER appuser

CMD ["echo", "Hello from non-root user!"]

อย่าใส่ข้อมูลลับใน Dockerfile

อย่าเขียนข้อมูลสำคัญแบบตายตัว เช่น คีย์ API รหัสผ่านฐานข้อมูล หรือคีย์ส่วนตัวลงใน Dockerfile โดยตรง หรือบันทึกข้อมูลเหล่านี้ลงในอิมเมจของคุณ

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

ให้ใช้วิธีที่ปลอดภัยแทน เช่น Docker Secrets ตัวแปรสภาพแวดล้อมสำหรับข้อมูลที่ไม่สำคัญ หรือ Kubernetes Secrets ขณะทำงาน

เลือกใช้ COPY แทน ADD

ทั้งคำสั่ง COPY และ ADD ใช้คัดลอกไฟล์ลงในอิมเมจ แต่โดยทั่วไปควรเลือกใช้ COPY เพื่อความปลอดภัยและความชัดเจน

  • COPY: คัดลอกได้เฉพาะไฟล์หรือไดเรกทอรีในเครื่อง เป็นคำสั่งที่ตรงไปตรงมาและคาดการณ์ได้
  • ADD: สามารถดึงไฟล์จาก URL และแตกไฟล์บีบอัดโดยอัตโนมัติ เช่น tar และ gzip ความสามารถเพิ่มเติมนี้นำมาซึ่งความเสี่ยงด้านความปลอดภัย เช่น การดาวน์โหลดเนื้อหาที่ไม่น่าเชื่อถือหรือการแตกไฟล์ที่เป็นอันตราย

ใช้ COPY เป็นหลัก เว้นแต่คุณจำเป็นต้องใช้ฟีเจอร์ขั้นสูงของ ADD และเข้าใจความเสี่ยงแล้ว

ตรวจสอบความปลอดภัย

แนวทางปฏิบัติใดต่อไปนี้ใน Dockerfile เป็นขั้นตอนสำคัญในการลดพื้นผิวการโจมตีและลดช่องโหว่ที่อาจเกิดขึ้น

เส้นทางสู่ Dockerfile ที่ปลอดภัยของคุณ

ทำได้ดีมาก คุณได้เรียนรู้แนวทางปฏิบัติที่สำคัญด้านความปลอดภัยของ Dockerfile ซึ่งเป็นพื้นฐานของการใช้คอนเทนเนอร์อย่างปลอดภัยแล้ว:

  • เริ่มต้นด้วยอิมเมจพื้นฐานที่เชื่อถือได้และมีขนาดเล็ก: ใช้อิมเมจอย่างเป็นทางการ ระบุเวอร์ชันชัดเจน และมีขนาดกะทัดรัด
  • ลดขนาดอิมเมจ: ติดตั้งเฉพาะสิ่งที่จำเป็นและทำความสะอาดหลังการติดตั้ง
  • ทำงานในฐานะผู้ใช้ที่ไม่ใช่รูท: จำกัดสิทธิ์เพื่อลดผลกระทบจากการถูกเจาะระบบ
  • หลีกเลี่ยงข้อมูลลับ: อย่าเขียนข้อมูลสำคัญแบบตายตัวลงใน Dockerfile
  • เลือกใช้ `COPY` แทน `ADD`: เลือกคำสั่ง COPY ที่คาดการณ์ได้และปลอดภัยกว่า

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

คำถามที่พบบ่อย

บทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile”

ใช้มาตรการรักษาความปลอดภัยภายใน Dockerfile เพื่อลดช่องโหว่และลดพื้นที่เสี่ยงต่อการโจมตี คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างแบบหลายขั้นตอนเพื่อประสิทธิภาพ
  2. การใช้ประโยชน์จากแคชการสร้าง
  3. แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile
  4. ลดขนาดอิมเมจด้วยฐาน Slim และ Distroless
← กลับไปที่ DevOps Bootcamp