ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~14 นาที

Security — ทำให้คลัสเตอร์ปลอดภัย

NetworkPolicy, Pod security, image และ least privilege

เปรียบเทียบให้เห็นภาพ

ความปลอดภัยคลัสเตอร์เหมือนระบบรักษาความปลอดภัยตึกหลายชั้น: ประตูห้อง (NetworkPolicy), บัตรพนักงาน (RBAC), ตรวจของก่อนเข้า (image scanning), และไม่ให้ใครถือกุญแจ master โดยไม่จำเป็น (least privilege)

NetworkPolicy — ไฟร์วอลล์ระหว่าง Pod

ค่าเริ่มต้นของ K8s คือ Pod ทุกตัวคุยกันได้หมด (flat network) · NetworkPolicy ให้เราจำกัดว่า Pod ไหนคุยกับ Pod/namespace ไหนได้ — เช่น ให้เฉพาะ frontend เรียก backend, และ backend เท่านั้นที่แตะ database

จำกัดเส้นทาง: อนุญาตเฉพาะ frontend→backend→db

frontend
อนุญาต
backend
อนุญาต
database

🚫 frontend เรียก database ตรง ๆ ไม่ได้ (ถูก NetworkPolicy บล็อก)

ไม่มี policy = ทุก Pod คุยกันได้หมด · มี NetworkPolicy = อนุญาตเฉพาะเส้นทางที่กำหนด

เช็กลิสต์ความปลอดภัยที่ควรทำ

  • NetworkPolicy — ปิด traffic ที่ไม่จำเป็น (default-deny แล้วเปิดเฉพาะที่ต้อง)
  • RBAC least privilege — ให้ ServiceAccount สิทธิ์เท่าที่ใช้ (ทบทวนจาก M6)
  • Pod Security — ห้ามรันเป็น root, ปิด privileged, ตั้ง readOnlyRootFilesystem (ผ่าน Pod Security Standards)
  • Image security — ใช้ image จาก registry ที่เชื่อถือได้, สแกนช่องโหว่ (Trivy), pin เวอร์ชันไม่ใช้ latest
  • Secrets — เปิด encryption at rest, ใช้ External Secrets/Vault (ทบทวนจาก M4)

สรุป Key Takeaways

  • ดีฟอลต์ Pod คุยกันได้หมด — ใช้ NetworkPolicy (default-deny) จำกัดเส้นทาง
  • ต้องมี CNI ที่รองรับ (Calico/Cilium) NetworkPolicy ถึงมีผล
  • ซ้อนหลายชั้น: NetworkPolicy + RBAC + Pod Security + image scanning + secrets
อ่านจบแล้วอย่าลืมทำเครื่องหมาย