- ทำความเข้าใจเกี่ยวกับการควบคุมการเข้าถึงตามบทบาท
1.1 บทบาท (Roles) และบทบาทคลัสเตอร์ (ClusterRoles)
1.2 การผูกบทบาท (RoleBindings) และคลัสเตอร์บทบาทผูกมัด (ClusterRoleBindings) - การใช้นโยบายความปลอดภัยของ Pod
- วิธีการรักษาความปลอดภัยที่ครอบคลุมด้วย RBAC และ PSP
Kubernetes แพลตฟอร์มการจัดการคอนเทนเนอร์ชั้นนำ เป็นที่รู้จักในด้านความทนทานและคุณสมบัติที่หลากหลายซึ่งมีให้สำหรับการทำแอพคอนเทนเนอร์ที่ซับซ้อน อย่างไรก็ตาม เช่นเดียวกับระบบอื่นๆ ที่ทำแอพที่มีค่าของคุณ การดูแลความปลอดภัยของสภาพแวดล้อม Kubernetes เป็นความรับผิดชอบหลัก ในบริบทนี้ คุณลักษณะหลักสองประการ ได้แก่ การควบคุมการเข้าถึงตามบทบาท (RBAC) และนโยบายความปลอดภัยของพ็อด (PSP) มอบเครื่องมือที่มีประสิทธิภาพเพื่อปกป้องการปรับใช้ในการทำแอพ Kubernetes ของคุณ
1. ทำความเข้าใจเกี่ยวกับการควบคุมการเข้าถึงตามบทบาท
การควบคุมการเข้าถึงตามบทบาท (Role-Based Access Control) (RBAC) เป็นกลไกที่ใช้ในการจำกัดการเข้าถึงระบบของผู้ใช้ภายในสภาพแวดล้อม Kubernetes หลักการของ RBAC นั้นตรงไปตรงมา: คุณกำหนดบทบาทให้กับผู้ใช้ และบทบาทเหล่านี้กำหนดสิ่งที่ผู้ใช้สามารถทำได้ และทรัพยากรใด องค์ประกอบหลักในโมเดล Kubernetes RBAC คือ Role, RoleBinding, ClusterRole และ ClusterRoleBinding
1.1 บทบาท (Roles) และบทบาทคลัสเตอร์ (ClusterRoles)
บทบาท (Roles) ใน Kubernetes กำหนดการอนุญาตภายในเนมสเปซเฉพาะ ในขณะที่ ClusterRole ไม่ใช่เนมสเปซเฉพาะและใช้กับคลัสเตอร์ Kubernetes ทั้งหมด สิทธิ์เหล่านี้รวมถึงการดำเนินการต่างๆ เช่น ‘get’, ‘list’, ‘create’, ‘update’, ‘delete’ ในทรัพยากรต่างๆ (เช่น pods, services เป็นต้น)
ตัวอย่างเช่น พิจารณาสถานการณ์ที่คุณปรับใช้แอปพลิเคชันบน Kubernetes คุณอาจสร้างบทบาทหรือ ClusterRole ที่ให้คุณดำเนินการต่างๆ เช่น ‘create’, ‘get’, ‘update’, and ‘delete’ on ‘pods’ และ ‘services’
1.2 การผูกบทบาท (RoleBindings) และคลัสเตอร์บทบาทผูกมัด (ClusterRoleBindings)
เมื่อคุณกำหนด Role หรือ ClusterRoles แล้ว คุณจะผูกกับผู้ใช้ผ่าน RoleBindings หรือ ClusterRoleBindings RoleBinding ให้สิทธิ์ที่กำหนดในบทบาทแก่ผู้ใช้ภายในเนมสเปซเฉพาะ ในทำนองเดียวกัน ClusterRoleBinding ให้สิทธิ์ที่กำหนดไว้ใน ClusterRole แก่ผู้ใช้ทั่วทั้งคลัสเตอร์
ตัวอย่างเช่น ขณะที่ทำแอพบน Kubernetes คุณอาจต้องการให้ทีมพัฒนามีสิทธิ์ที่กำหนดในบทบาทเฉพาะ ในกรณีนี้ คุณจะสร้าง RoleBinding ที่ผูกทีมพัฒนาเข้ากับบทบาทนี้ในเนมสเปซของแอปพลิเคชัน
2. การใช้นโยบายความปลอดภัยของ Pod
ในขณะที่ RBAC ควบคุมว่าใครสามารถดำเนินการและทรัพยากรใด Pod Security Policies (PSP) จะควบคุมลักษณะเฉพาะของวิธีการทำงานของปริมาณงานในสภาพแวดล้อม Kubernetes ของคุณ โดยพื้นฐานแล้ว นโยบายความปลอดภัยของพ็อดเป็นทรัพยากรระดับคลัสเตอร์ที่กำหนดชุดเงื่อนไขที่พ็อดต้องปฏิบัติตามจึงจะยอมรับเข้าสู่ระบบได้ หากคำขอสร้างพ็อดไม่ตรงตามเงื่อนไขเหล่านี้ ระบบจะปฏิเสธคำขอนั้น
นโยบายความปลอดภัยของพ็อดจะควบคุมลักษณะต่างๆ ที่เกี่ยวข้องกับความปลอดภัยของพ็อด เช่น:
- การเพิ่มสิทธิ์: คุณสามารถป้องกันไม่ให้พ็อดทำงานด้วยสิทธิ์ระดับรูทได้โดยตั้งค่าฟิลด์ของ PSP
privileged
เป็นเท็จ - การเข้าถึงทรัพยากรของโฮสต์: คุณสามารถไม่อนุญาตให้พ็อดเข้าถึงทรัพยากรของโฮสต์ เช่น เครือข่ายและพื้นที่ดำเนินการได้โดยการปิดใช้งาน
hostNetwork
,hostIPC
,hostPID
และ - การใช้ประเภทโวลุ่ม (volume): PSP ให้คุณกำหนดประเภทวอลุ่มที่อนุญาตพิเศษในพ็อดของคุณได้
- บริบทความปลอดภัย (Security contexts): ด้วย PSP คุณสามารถบังคับใช้การตั้งค่าใน SecurityContext ของพ็อดของคุณได้ เช่น ไม่อนุญาตให้ใช้เนมสเปซผู้ใช้ของโฮสต์ บังคับใช้ระบบไฟล์รูทแบบอ่านอย่างเดียว และอื่นๆ
จินตนาการว่าคุณกำลังทำแอพที่ต้องการความปลอดภัยระดับหนึ่งภายในคลัสเตอร์ Kubernetes คุณไม่ต้องการให้พ็อดที่เรียกใช้แอปพลิเคชันนี้เข้าถึงทรัพยากรโฮสต์โดยไม่จำเป็น ในกรณีเช่นนี้ คุณต้องสร้างนโยบายการรักษาความปลอดภัยของ Pod ที่ไม่อนุญาตให้มีการเข้าถึงดังกล่าว เพื่อให้มั่นใจว่าแอปพลิเคชันของคุณทำงานภายในพารามิเตอร์ความปลอดภัยที่จำเป็น
3. วิธีการรักษาความปลอดภัยที่ครอบคลุมด้วย RBAC และ PSP
เมื่อใช้ร่วมกัน RBAC และ PSP จะมอบแนวทางที่ทรงพลังและเป็นชั้นๆ เพื่อการรักษาความปลอดภัย Kubernetes RBAC ควบคุม “who” และ “what” – ใครสามารถเข้าถึงระบบและทำอะไรได้บ้าง ในทางกลับกัน PSP จะควบคุม “how” – วิธีการทำงานของพ็อดในระบบ
วิธีการรักษาความปลอดภัยแบบเลเยอร์นี้มีความสำคัญเมื่อทำแอพใน Kubernetes ด้วยการใช้ประโยชน์จาก RBAC อย่างมีประสิทธิภาพ คุณจะมั่นใจได้ว่าหลักการของสิทธิ์น้อยที่สุดนั้นได้รับการยึดถือ โดยที่บุคคลจะมีสิทธิ์ที่จำเป็นในการปฏิบัติงานเท่านั้น ด้วย PSP คุณสามารถบังคับใช้มาตรฐานความปลอดภัยพื้นฐานสำหรับปริมาณงานของคุณ ซึ่งจะเป็นการจำกัดพื้นผิวการโจมตี
อย่างไรก็ตาม RBAC และ PSP เป็นเพียงส่วนหนึ่งของเรื่องราวด้านความปลอดภัยของ Kubernetes ด้านอื่นๆ เช่น นโยบายเครือข่ายสำหรับควบคุมการเข้าถึงเครือข่ายไปยังพ็อด ความลับสำหรับการจัดเก็บข้อมูลที่ละเอียดอ่อน และบริบทด้านความปลอดภัยสำหรับการกำหนดสิทธิ์และการควบคุมการเข้าถึงในระดับพ็อดหรือคอนเทนเนอร์ ก็มีบทบาทสำคัญในกลยุทธ์การรักษาความปลอดภัยที่ครอบคลุมของ Kubernetes
การรักษาความปลอดภัยสภาพแวดล้อม Kubernetes เป็นส่วนสำคัญในการจัดการแอปพลิเคชันบนแพลตฟอร์ม เมื่อใช้ RBAC และ Pod Security Policies คุณสามารถควบคุมการเข้าถึงทรัพยากรและตรวจสอบให้แน่ใจว่า Pods ทำงานภายในขอบเขตความปลอดภัยที่กำหนด เมื่อคุณทำแอพใน Kubernetes โปรดจำไว้ว่ามาตรการรักษาความปลอดภัยเหล่านี้มีความสำคัญพอๆ กับข้อกำหนดด้านการทำงานของแอปพลิเคชัน การผสานรวมการรักษาความปลอดภัยเข้ากับกลยุทธ์ Kubernetes ของคุณ คุณกำลังก้าวไปสู่ขั้นตอนสำคัญในการทำแอพที่เชื่อถือได้และแข็งแกร่ง ซึ่งไม่เพียงแต่ทำงานได้ดีเท่านั้น แต่ยังทำงานอย่างปลอดภัยภายในสภาพแวดล้อมที่คุณเลือกอีกด้วย