ก่อนอื่นผมอยากบอกไว้ก่อนว่าผมไม่ได้มองว่าตัวเองเป็นผู้เชี่ยวชาญด้าน security ของแอปพลิเคชัน สิ่งที่ผมพยายามเป็นมีเพียงแค่ conscious incompetent —หรือพูดง่ายๆ คือผมอยากเข้าใจว่าตัวเองไม่รู้อะไรบ้าง และตระหนักถึงขีดจำกัดของตัวเอง ยิ่งผมเรียนรู้เรื่องนี้มากขึ้นเท่าไร ก็ยิ่งพบว่ายังมีอะไรให้เรียนรู้อีกมาก แต่นั่นไม่ได้แปลว่าการศึกษาเรื่องแบบนี้ไม่มีประโยชน์—ผมรู้สึกว่าทุกอย่างที่ผมได้เรียนรู้เกี่ยวกับเรื่องนี้ตลอดสิบปีที่ผ่านมาทำให้ผมเป็นนักพัฒนาและสถาปนิกที่มีประสิทธิภาพมากขึ้น

ในบทนี้ ผมจะเน้นประเด็นด้าน security ที่ผมคิดว่ามีประโยชน์สำหรับนักพัฒนา สถาปนิก หรือคนทำงานด้าน operations ทั่วไปที่ทำงานกับสถาปัตยกรรม microservice ควรทำความเข้าใจ เรายังคงต้องการการสนับสนุนจากผู้เชี่ยวชาญด้าน security ของแอปพลิเคชันอยู่ดี—แต่ถึงแม้คุณจะมีคนเหล่านี้คอยช่วยเหลือ การมีพื้นฐานความเข้าใจในหัวข้อเหล่านี้ก็ยังสำคัญอยู่ดี เช่นเดียวกับที่นักพัฒนาได้เรียนรู้เรื่อง testing หรือการจัดการข้อมูลมากขึ้น ซึ่งแต่ก่อนเป็นเรื่องที่จำกัดอยู่แค่ผู้เชี่ยวชาญเฉพาะทาง การมีความตระหนักรู้ทั่วไปเกี่ยวกับเรื่อง security จึงมีความสำคัญอย่างยิ่งในการสร้างความปลอดภัยเข้าไปในซอฟต์แวร์ของเราตั้งแต่ต้น

เมื่อ เรานำ microservices ไปเปรียบเทียบกับสถาปัตยกรรมที่กระจายตัวน้อยกว่า จะพบว่าเรากำลังเจอกับข้อขัดแย้งที่น่าสนใจ ด้านหนึ่ง เรามีข้อมูลไหลผ่านเครือข่ายมากขึ้นกว่าเดิมที่เคยอยู่แค่ในเครื่องเดียว และเรามี infrastructure ที่ซับซ้อนขึ้นในการรันสถาปัตยกรรมของเรา—พื้นที่ผิวสำหรับการโจมตี (attack surface) ของเราจึงกว้างขึ้นมาก อีกด้านหนึ่ง microservices ก็ให้โอกาสเรามากขึ้นในการทำ defense in depth และจำกัดขอบเขตการเข้าถึง ซึ่งอาจช่วยเพิ่มการป้องกันระบบของเราไปพร้อมๆ กับลดผลกระทบหากเกิดการโจมตีขึ้นจริง ความขัดแย้งที่ดูเหมือนจะเป็นไปได้นี้—ที่ microservices สามารถทำให้ระบบของเราทั้ง less ปลอดภัยและ more ปลอดภัยไปพร้อมกัน—ก็เป็น เพียงการรักษาสมดุลอย่างละเอียดอ่อนเท่านั้น ผมหวังว่าเมื่อจบบทนี้ คุณจะอยู่ฝั่งที่ถูกต้องของสมการนี้

เพื่อ ช่วยให้คุณหาจุดสมดุลที่เหมาะสมเมื่อพูดถึง security ของสถาปัตยกรรม microservice เราจะพูดถึงหัวข้อต่อไปนี้:

Core principles (หลักการพื้นฐาน)

แนวคิดพื้นฐานที่เป็นประโยชน์ในการนำมาใช้เมื่อต้องการสร้างซอฟต์แวร์ที่ปลอดภัยมากขึ้น

The five functions of cybersecurity (ห้าฟังก์ชันหลักของ cybersecurity)

Identify, protect, detect, respond และ recover—ภาพรวมของห้าฟังก์ชันหลักด้าน security ของแอปพลิเคชัน

Foundations of application security (พื้นฐานของ application security)

แนวคิดพื้นฐานบางส่วนของ application security และวิธีที่แนวคิดเหล่านี้นำไปใช้กับ microservices ไม่ว่าจะเป็นเรื่อง credentials และ secrets, การ patch, การสำรองข้อมูล (backup) และการ rebuild

Implicit trust versus zero trust (implicit trust เทียบกับ zero trust)

แนวทางที่แตกต่างกันสำหรับความไว้วางใจ (trust) ในสภาพแวดล้อม microservice ของเรา และผลกระทบต่อกิจกรรมที่เกี่ยวข้องกับ security

Securing data (การรักษาความปลอดภัยของข้อมูล)

วิธีที่เราปกป้องข้อมูลทั้งขณะเดินทางผ่านเครือข่ายและขณะพักอยู่บนดิสก์

Authentication and authorization (authentication และ authorization)

วิธีการทำงานของ single sign-on (SSO) ในสถาปัตยกรรม microservice โมเดล authorization แบบรวมศูนย์เทียบกับแบบกระจายศูนย์ และบทบาทของ JWT token ในเรื่องนี้