จากการไปแนะนำเรื่อง Docker มาก็มีคำถามเรื่อง Security !!
ผมก็ไม่ค่อยมีประสบการณ์เรื่องนี้มากนัก
แต่ก็ไปเจอว่าทาง OWASP นั้นได้สร้าง project OWASP Docker Top 10 ขึ้นมา
เพื่อเป็นแนวทางในการวางแผนและสร้าง container ด้วย Docker อย่างปลอดภัย
ซึ่งตอนนี้เป็น Draft version
มาดูกันหน่อยว่ามีอะไรกันบ้าง ?

สิ่งที่ต้องเข้าใจก่อนก็คือ

Docker นั้นไม่ได้แก้ไขปัญหาเรื่องของ security
ไม่ได้ช่วยเรื่องของ input validation
ไม่ได้ช่วยป้องกันเรื่องของ SQL Injection
เรื่องเหล่านี้มันคือ Application Security ล้วน ๆ

การนำ Container มาใช้งานนั้น กระทบหลายส่วนมาก ๆ
ทั้งการ deployment
ทั้งเรื่องของ system
ทั้งเรื่องของ network
ทั้งเรื่องของ hardware
แน่นอนว่า เรื่อง security ก็จำเป็นอย่างมาก
ซึ่งเป็นที่มาของ project นี้
ก่อนที่จะเริ่มต้น environment ของเราต้องปลอดภัยก่อน
นั่นคือการวางแผน จากนั้นก็จะมี cost ในการ rollout ตามมาอีก !!

เรามาดูกันดีกว่าว่า Top 10 มีอะไรกันบ้าง แบบสั้น ๆ ไม่รู้ว่าเข้าใจถูกไหม !!

  • D1 Secure User Mapping คือ application ใน container ไม่ควร run ด้วย root
  • D2 Patch Management Strategy คือไม่ว่าจะเป็นเครื่อง host, base image และเครื่องมือในการจัดการ container อะไรมักจะมี security bug เสมอ ดังนั้นจำเป็นต้องมีการจัดการเรื่องของการทำ patching แบบปกติและฉุกเฉินไว้ด้วย
  • D3 Network Separation and Firewalling คือ การออกแบบ network ของระบบสำคัญมาก ๆ ทั้ง network ของเครื่องมือในการจัดการ ทั้ง network ของ container ต่าง ๆ ว่า container ใดจะเข้าถึงได้จากภายในเท่านั้นหรือภายนอกเท่านั้น
  • D4 Secure Defaults and Hardening คือการทำให้แน่ใจว่ามีเพียงสิ่งที่เราต้องการใช้งานเท่านั้นที่ถูกติดตั้งและทำงานอยู่ ไม่ว่าจะเป็นที่ host, container และเครื่องมือในการจัดการ
  • D5 Maintain Security Contexts คือการแยกการทำงานของแต่ละส่วนงานให้อยู่ต่างเครื่องกัน เช่น frontend กับ backend เป็นต้น เพื่อให้สามารถจัดการความปลอดภัยแยกกัน ซึ่งช่วยลดความผิดพลาดได้ดีขึ้น
  • D6 Protect Secrets คือการจัดการพวก secret ต่าง ๆ ให้ดีทั้ง password, token และ private key เป็นต้น
  • D7 Resource Protection คือการจัดการใช้งาน resource ของแต่ละ container ให้อยู่ในขอบเขตที่กำหนดเสมอ (limit resources) ทั้ง CPU, Memeory, Disk และ Network เพื่อไม่ให้ไปกระทบต่อการทำงานของ container อื่น ๆ
  • D8 Container Image Integrity and Origin คือการจัดการ Image ที่ปลอดภัย ว่าจะไม่ถูกเปลี่ยนแปลงตั้งแต่ต้นจนถึงการ deploy
  • D9 Follow Immutable Paradigm คือ container ส่วนใหญ่ไม่ต้องการเขียนข้อมูลหรือ mount ไปยัง file system ดังนั้นกำหนดให้ container ทำงานแบบ read-only ก็พอ ช่วยทำให้มีความปลอดภัยมากขึ้น
  • D10 Logging คือทุก ๆ container, host และเครื่องมือในการ deploy ไม่ว่าจะเกิดเหตุการณ์ใด ๆ ก็ตามจะต้องถูกบันทึกไว้เสมอ เพื่อให้สามารถพิสูจน์การทำงานและตัวตนได้ โดย log ไม่ได้เขียนไว้ใน container แนะนำให้เก็บแบบ remote หรือพวก centralize log ไป

โดยเป้าหมายของ project ได้ประกอบไปด้วย

  • Developer
  • Auditor
  • Architect
  • System และ Network engineer

ลองศึกษาเพิ่มเติมดูได้ครับ น่าสนใจมาก ๆ