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

เริ่มต้นด้วยอิมเมจพื้นฐานที่เชื่อถือได้
คำสั่ง 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) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile”
ใช้มาตรการรักษาความปลอดภัยภายใน Dockerfile เพื่อลดช่องโหว่และลดพื้นที่เสี่ยงต่อการโจมตี คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม
ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างแบบหลายขั้นตอนเพื่อประสิทธิภาพ
- การใช้ประโยชน์จากแคชการสร้าง
- แนวทางปฏิบัติที่ดีด้านความปลอดภัยของ Dockerfile
- ลดขนาดอิมเมจด้วยฐาน Slim และ Distroless