การเสริมความปลอดภัยให้ Pod ด้วย securityContext
การฝังค่าเริ่มต้นตามหลักสิทธิ์เท่าที่จำเป็นลงในแม่แบบ
การเสริมความปลอดภัยให้ Pod ด้วย securityContext เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงควรเสริมความปลอดภัยตั้งแต่เริ่มต้น
ชาร์ตที่มาพร้อมค่าเริ่มต้นแบบใช้สิทธิ์เท่าที่จำเป็นจะปกป้องทุกคลัสเตอร์ที่ติดตั้งชาร์ตนั้น การใส่ความปลอดภัยไว้ในแม่แบบตั้งแต่ต้นย่อมดีกว่าหวังว่าผู้ใช้จะจำได้ว่าต้องเพิ่มเอง
securityContext สองระดับ
คุณสามารถกำหนด securityContext ในระดับพ็อดเพื่อใช้กับคอนเทนเนอร์ทั้งหมด และกำหนดค่าที่จำกัดกว่าเป็นรายคอนเทนเนอร์ได้ การตั้งค่าระดับคอนเทนเนอร์จะมีผลแทนระดับพ็อดสำหรับคอนเทนเนอร์นั้น
อย่าทำงานด้วยสิทธิ์ root
กำหนด runAsNonRoot เป็น true เพื่อให้ Kubernetes ปฏิเสธการเริ่มคอนเทนเนอร์ที่จะทำงานด้วยสิทธิ์ root นี่คือค่าเริ่มต้นที่ส่งผลต่อความปลอดภัยมากที่สุดเพียงค่าเดียวที่คุณกำหนดได้
securityContext:
runAsNonRoot: true
runAsUser: 1000ระบบไฟล์รากแบบอ่านอย่างเดียว
เปิดใช้ readOnlyRootFilesystem เพื่อไม่ให้คอนเทนเนอร์เขียนลงในเลเยอร์อิมเมจของตนเอง ให้เมานต์ emptyDir สำหรับเส้นทางใด ๆ ที่แอปจำเป็นต้องเขียนจริง
containers:
- name: app
securityContext:
readOnlyRootFilesystem: trueลบความสามารถของ Linux
แอปส่วนใหญ่ไม่จำเป็นต้องมีสิทธิ์พิเศษระดับเคอร์เนล ดังนั้นให้ลบความสามารถ ALL แล้วเพิ่มกลับเฉพาะความสามารถที่เวิร์กโหลดจำเป็นต้องใช้จริงในกรณีที่พบไม่บ่อย
capabilities:
drop:
- ALLปิดกั้นการยกระดับสิทธิ์
กำหนด allowPrivilegeEscalation เป็น false เพื่อไม่ให้กระบวนการได้รับสิทธิ์มากกว่าที่มีตั้งแต่เริ่มต้น แม้จะทำผ่านไบนารี setuid ก็ตาม 🔒
allowPrivilegeEscalation: falseกำหนด fsGroup
ใช้ fsGroup ใน securityContext ระดับพ็อด เพื่อให้วอลุ่มที่เมานต์มีเจ้าของเป็นกลุ่มที่ผู้ใช้ซึ่งไม่ใช่ root เป็นสมาชิก และหลีกเลี่ยงข้อผิดพลาดด้านสิทธิ์
securityContext:
fsGroup: 2000อย่ากำหนด privileged เป็น true
คอนเทนเนอร์แบบ privileged มีสิทธิ์เข้าถึงโฮสต์เกือบทั้งหมด จึงแทบไม่ควรปรากฏเป็นค่าเริ่มต้นของชาร์ต ปล่อยค่าไว้โดยไม่กำหนด ซึ่งหมายถึง false
เปิดให้แทนที่ค่าได้
เชื่อม securityContext เข้ากับ values ด้วย toYaml เพื่อให้ผู้ใช้ปรับค่าได้ แต่ยังคงการตั้งค่าที่เสริมความปลอดภัยไว้เป็นค่าเริ่มต้นที่ปลอดภัย
securityContext:
{{- toYaml .Values.securityContext | nindent 4 }}ให้สอดคล้องกับมาตรฐานความปลอดภัยของพ็อด
ค่าเริ่มต้นเหล่านี้สอดคล้องกับมาตรฐานความปลอดภัยของพ็อดแบบ restricted ของ Kubernetes ดังนั้นชาร์ตของคุณจึงติดตั้งได้อย่างราบรื่นแม้ในเนมสเปซที่ล็อกการเข้าถึงอย่างเข้มงวด
ตรวจสอบหลังการติดตั้ง
ยืนยันว่าการเสริมความปลอดภัยมีผลแล้ว โดยตรวจสอบข้อกำหนดของพ็อดที่กำลังทำงานด้วย kubectl get pod -o yaml และตรวจดูฟิลด์ securityContext
kubectl get pod myapp -o jsonpath='{.spec.securityContext}'ตรวจสอบอย่างรวดเร็ว
การตั้งค่าใดจะหยุดไม่ให้คอนเทนเนอร์เริ่มทำงาน หากคอนเทนเนอร์นั้นจะทำงานด้วยผู้ใช้ root
ทบทวน
คุณได้เสริมความปลอดภัยให้พ็อดด้วย runAsNonRoot ลบความสามารถต่าง ๆ ใช้ระบบไฟล์แบบอ่านอย่างเดียว และปิดการยกระดับสิทธิ์ ค่าเริ่มต้นที่ปลอดภัยจะปกป้องทุกการติดตั้ง ✅
คำถามที่พบบ่อย
บทเรียน “การเสริมความปลอดภัยให้ Pod ด้วย securityContext” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเสริมความปลอดภัยให้ Pod ด้วย securityContext” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเสริมความปลอดภัยให้ Pod ด้วย securityContext”
การฝังค่าเริ่มต้นตามหลักสิทธิ์เท่าที่จำเป็นลงในแม่แบบ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเสริมความปลอดภัยให้ Pod ด้วย securityContext” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ป้ายกำกับมาตรฐานและหลักเกณฑ์การตั้งชื่อ
- ค่าเริ่มต้นที่เหมาะสมและมีเอกสารกำกับ
- การเสริมความปลอดภัยให้ Pod ด้วย securityContext
- การตรึงเวอร์ชันและหลีกเลี่ยง latest