Top 10 :: Docker security - Mrsmithz/Project-SW-Dev-and-Env GitHub Wiki
ไม่ควรรัน app ใน container ด้วย root เพราะง่ายต่อการที่จะถูกโจมตี วิธีป้องกัน คือ ห้ามใช้ --privileged และต้องมีการกำหนดสิทธิ์ในการเรียกใช้งานอย่างชัดเขน มีการเพิ่ม user โดย RUN useradd หรือ RUN adduser ก่อนเริ่มใช้งานเรียกใช้คำสั่ง USER เพื่อสลับไปที่ผู้ใช้รายนี้ สามารถให้สิทธิ์ด้วย setcap แทน สิทธิ์ root แบบเต็มได้
security bug อาจเกิดขึ้นได้ ดังนั้นต้องมีการทำ patching เพื่อป้องกันการถูกควบคุม container ทั้งหมดจากผู้โจมตี
ออกแบบ network ของระบบสำคัญให้สามารถเข้าถึงได้จากภายในเท่านั้น
วิธีป้องกัน
- เลือก driver ให้เหมาะกับ environment
- แบ่งกลุ่ม DMZ ให้เหมาะสม
- กำหนดการสื่อสารที่จำเป็น
- ป้องกัน api จาก frontend ไม่ให้ถูกเปิดเผย
ต้องมีเพียงสิ่งที่ใช้งานเท่านั้นที่ติดตั้งและทำงานอยู่
วิธีป้องกัน
- เลือก OS ให้เหมาะกับ Host
- ต้องรู้ว่ามี service อะไรบ้างประกอบอยู่
- service ต้องสามารถเปิดปิดและไม่กระทบต่อการทำงาน
- service ต้อง start บน localhost เท่านั้น
การแยกการทำงานของแต่ละส่วนงานให้อยู่ต่างเครื่องกัน
วิธีป้องกัน
- ไม่ควรมี service ที่มีการรักษาความปลอดภันต่างกันไว้
- แยก container ที่ใช้งานจริงออกจากกัน
- พิจารณาความปลอดภัยจากหน้าที่ของ service
จัดการพวก secret ต่างๆเช่น password, token และ private key ต้องมีการจัดเก็บให้ดี
จัดการ resourse ของแต่ละ container ให้อยู่ในขอบเขตเพื่อป้องกันการกระทบกับ container อื่นๆ
วิธีป้องกัน
- ต้องมีการตรวจดูอยู่สม่ำเสมอเพื่อไม่ให้ resourse เกินที่กำหนด
จัดการ image ว่าจะไม่ถูกเปลี่ยนแปลงตั้งต้นจนถึงการ deploy
กำนหนดให้ container ทำงานรูปแบบ read-only เพื่อความปลอดภัย
ทุก event จะมีการเก็บ log ไว้ โดย log จะไม่ได้ถูกเก็บไว้ใน container ควรเก็บแบบ remote