จากการไปแนะนำเรื่อง 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 ไป
- Developer
- Auditor
- Architect
- System และ Network engineer
ลองศึกษาเพิ่มเติมดูได้ครับ น่าสนใจมาก ๆ