Top 10 :: Docker security - Mrsmithz/Project-SW-Dev-and-Env GitHub Wiki

D1 Secure User Mapping

  ไม่ควรรัน app ใน container ด้วย root เพราะง่ายต่อการที่จะถูกโจมตี วิธีป้องกัน คือ ห้ามใช้ --privileged และต้องมีการกำหนดสิทธิ์ในการเรียกใช้งานอย่างชัดเขน มีการเพิ่ม user โดย RUN useradd หรือ RUN adduser ก่อนเริ่มใช้งานเรียกใช้คำสั่ง USER เพื่อสลับไปที่ผู้ใช้รายนี้ สามารถให้สิทธิ์ด้วย setcap แทน สิทธิ์ root แบบเต็มได้

D2 Patch Management Strategy

  security bug อาจเกิดขึ้นได้ ดังนั้นต้องมีการทำ patching เพื่อป้องกันการถูกควบคุม container ทั้งหมดจากผู้โจมตี

D3 Network Separation and Firewalling

  ออกแบบ network ของระบบสำคัญให้สามารถเข้าถึงได้จากภายในเท่านั้น

วิธีป้องกัน

  • เลือก driver ให้เหมาะกับ environment
  • แบ่งกลุ่ม DMZ ให้เหมาะสม
  • กำหนดการสื่อสารที่จำเป็น
  • ป้องกัน api จาก frontend ไม่ให้ถูกเปิดเผย

D4 Secure Defaults and Hardening

  ต้องมีเพียงสิ่งที่ใช้งานเท่านั้นที่ติดตั้งและทำงานอยู่

วิธีป้องกัน

  • เลือก OS ให้เหมาะกับ Host
  • ต้องรู้ว่ามี service อะไรบ้างประกอบอยู่
  • service ต้องสามารถเปิดปิดและไม่กระทบต่อการทำงาน
  • service ต้อง start บน localhost เท่านั้น

D5 Maintain Security Contexts

  การแยกการทำงานของแต่ละส่วนงานให้อยู่ต่างเครื่องกัน

วิธีป้องกัน

  • ไม่ควรมี service ที่มีการรักษาความปลอดภันต่างกันไว้
  • แยก container ที่ใช้งานจริงออกจากกัน
  • พิจารณาความปลอดภัยจากหน้าที่ของ service

D6 Protect Secrets

  จัดการพวก secret ต่างๆเช่น password, token และ private key ต้องมีการจัดเก็บให้ดี

D7 Resource Protection

  จัดการ resourse ของแต่ละ container ให้อยู่ในขอบเขตเพื่อป้องกันการกระทบกับ container อื่นๆ

วิธีป้องกัน

  • ต้องมีการตรวจดูอยู่สม่ำเสมอเพื่อไม่ให้ resourse เกินที่กำหนด

D8 Container Image Integrity and Origin

  จัดการ image ว่าจะไม่ถูกเปลี่ยนแปลงตั้งต้นจนถึงการ deploy

D9 Follow Immutable Paradigm

  กำนหนดให้ container ทำงานรูปแบบ read-only เพื่อความปลอดภัย

D10 Logging

  ทุก event จะมีการเก็บ log ไว้ โดย log จะไม่ได้ถูกเก็บไว้ใน container ควรเก็บแบบ remote

⚠️ **GitHub.com Fallback** ⚠️