ปัญหาด้านความปลอดภัยของ Kubernetes ที่พบบ่อยที่สุดและวิธีที่คุณสามารถบรรเทาปัญหาเหล่านี้ได้
เผยแพร่แล้ว: 2021-03-30Kubernetes และคอนเทนเนอร์รับประกันสามสิ่ง:
- พัฒนาและเผยแพร่แอปพลิเคชันได้เร็วขึ้น
- แก้ไขข้อผิดพลาดได้เร็วขึ้น
- เพิ่มความเร็วของคุณลักษณะ
อย่างไรก็ตาม มักมาพร้อมกับต้นทุนของการรักษาความปลอดภัยที่ถูกบุกรุก และนั่นเป็นสิ่งที่ไม่เป็นที่ยอมรับในเทคโนโลยีการพัฒนาเว็บใดๆ
เพื่อให้ทราบถึงสถานะของความปลอดภัยของ Kubernetes ต่อไปนี้คือปัจจัยสองประการจากการสำรวจที่ดำเนินการโดย StackRox เมื่อสิ้นปี 2020:
- 90% ของผู้เข้าร่วมการสำรวจรายงานว่าต้องเผชิญกับเหตุการณ์ด้านความปลอดภัยที่เกี่ยวข้องกับคอนเทนเนอร์และ Kubernetes ในช่วง 12 เดือนที่ผ่านมา
- 44% ของผู้เข้าร่วมต้องชะลอการเปิดตัวแอปพลิเคชันเนื่องจากปัญหาด้านความปลอดภัยเกี่ยวกับ Kubernetes
อะไรคือสาเหตุที่พบบ่อยที่สุดที่อยู่เบื้องหลังข้อกังวลด้านความปลอดภัยเหล่านี้?
ปัญหาด้านความปลอดภัยที่พบบ่อยที่สุดที่เกี่ยวข้องกับ Kubernetes
1. การกำหนดค่าผิดพลาด
การสำรวจพบว่าความเสี่ยงที่เกิดจากการกำหนดค่าผิดพลาดเป็นความเสี่ยงที่แพร่หลายมากที่สุดในความปลอดภัยของคอนเทนเนอร์และสภาพแวดล้อมของ Kubernetes
เมื่อใช้ Kubernetes เพื่อสร้างแอปที่มีคอนเทนเนอร์ การจัดการการกำหนดค่าถือเป็นความเสี่ยงสูงสุดสำหรับผู้ปฏิบัติงานด้านความปลอดภัย
สาเหตุหลักเป็นเพราะว่าตลาดเต็มไปด้วยเครื่องมือสแกนช่องโหว่ แต่การจัดการการกำหนดค่ายังคงต้องอาศัยการพิจารณาของมนุษย์เป็นส่วนใหญ่
ต่อไปนี้คือคำแนะนำบางประการเกี่ยวกับการกำหนดค่าส่วนประกอบทั่วไปบางอย่างของแอปคอนเทนเนอร์เพื่อให้แน่ใจว่าความปลอดภัยจะไม่ถูกบุกรุก
รูปภาพ:
หลีกเลี่ยงการใช้ซอฟต์แวร์ใดๆ ที่ไม่จำเป็นอย่างยิ่ง ซึ่งรวมถึงตัวจัดการแพ็คเกจ เครื่องมือเครือข่าย และไคลเอนต์ เช่น curl หรือ Unix shells
โปรดจำไว้ว่า การใช้ซอฟต์แวร์ใดๆ ก็ตามจะเพิ่มความเสี่ยงด้านความปลอดภัย นอกจากนี้ ใช้เฉพาะรูปภาพจากแหล่งที่น่าเชื่อถือเท่านั้น
ความลับ:
หลีกเลี่ยงการอบความลับเข้าไปในภาพหรือเปิดเผยความลับเหล่านั้นโดยไม่จำเป็น
ตามแนวทางปฏิบัติที่ปลอดภัย ให้ใช้เครื่องมือการจัดการความลับที่น่าเชื่อถือเพื่อให้แน่ใจว่าการปรับใช้จะติดตั้งความลับเฉพาะในกรณีที่จำเป็นและเมื่อใด
เนมสเปซ:
ใช้เนมสเปซอย่างไม่เห็นแก่ตัว พวกเขาทำหน้าที่เป็นขอบเขตสำหรับ Kubernetes และนโยบายเครือข่าย การใช้เนมสเปซสามารถจำกัดผลกระทบของการโจมตีและอาจมีข้อผิดพลาดและการโจมตีเพื่อไม่ให้แพร่กระจายและก่อให้เกิดการทำลายล้างมากขึ้น
สิทธิพิเศษรันไทม์:
มีกฎของสิทธิ์เพียงข้อเดียว: อนุญาตให้มีจำนวนน้อยที่สุดเพื่อทำให้ซอฟต์แวร์ปลอดภัยที่สุด
นโยบายเครือข่าย
ตามการตั้งค่าเริ่มต้น พ็อดสามารถพูดคุยกันอย่างอิสระใน Kubernetes อย่างไรก็ตาม การนำนโยบายเครือข่ายไปใช้เพื่อจำกัดการโต้ตอบของพ็อดถือเป็นแนวทางปฏิบัติที่ดี วิธีนี้จะช่วยป้องกันไม่ให้ภัยคุกคามแพร่กระจายไปทั่วคอนเทนเนอร์และทั้งแอป
การจัดเก็บแบบถาวร
คุณต้องมีทัศนวิสัยที่เหมาะสมในการกำหนดค่าและการใช้ที่เก็บข้อมูลถาวร เนื่องจากนี่เป็นเวกเตอร์ถาวรเพียงตัวเดียวในการตั้งค่าคอนเทนเนอร์ชั่วคราว
ควบคุมเครื่องบิน
หากคุณกำลังจัดการคลัสเตอร์ Kubernetes ด้วยตัวเอง การกำหนดค่าระนาบการควบคุมเป็นสิ่งสำคัญมาก เนื่องจากบางคลัสเตอร์สามารถตัดสินใจได้ทั่วโลก และหากคลัสเตอร์ติดไวรัส ซึ่งอาจส่งผลกระทบต่อระบบนิเวศทั้งหมดได้
วิธีที่ดีที่สุดในการบรรเทาปัญหาเหล่านี้และปัญหาด้านความปลอดภัยอื่น ๆ ที่เกี่ยวข้องกับการกำหนดค่าคือการใช้ความพยายามแบบแมนนวลและแบบอัตโนมัติร่วมกันเพื่อให้แน่ใจว่าการกำหนดค่าเสร็จสิ้นในลักษณะที่รับรองความปลอดภัยของ Kubernetes และด้วยเหตุนี้ซอฟต์แวร์ที่พวกเขาเป็นส่วนหนึ่ง ของ.
2. จุดอ่อน
มีการค้นพบและใช้ประโยชน์จากช่องโหว่ที่แตกต่างกันจำนวนหนึ่งใน Kubernetes และคอนเทนเนอร์อื่นๆ ในช่วงไม่กี่ปีที่ผ่านมา
ช่องโหว่ที่พบบ่อยที่สุด ได้แก่:
- การขุด Crypto
- การติดตั้งมัลแวร์
- การยกระดับสิทธิ์
- การเข้าถึงโฮสต์
แนวทางที่มีประสิทธิภาพในการจัดการช่องโหว่คือสิ่งที่ต้องดำเนินต่อไปตลอดวงจรชีวิตของคอนเทนเนอร์ และควรรวมถึงสิ่งต่อไปนี้:
- การระบุและแก้ไขช่องโหว่ในอิมเมจ รวมถึงช่องโหว่ในระบบปฏิบัติการที่ติดตั้ง
- การตรวจจับและบรรเทาช่องโหว่ใดๆ และทั้งหมดในไลบรารีรันไทม์ของภาษาการเขียนโปรแกรมที่คุณใช้
- ดำเนินการตามขั้นตอนเพื่อป้องกันอิมเมจที่มีช่องโหว่ที่มีความเสี่ยงจากการเข้าสู่รีจิสตรีคอนเทนเนอร์ที่เข้าถึงได้ในเวอร์ชันที่ใช้งานจริง
- ดำเนินมาตรการควบคุมภัยคุกคามที่มีความเสี่ยงด้านความปลอดภัยในระดับหนึ่ง
- การใช้ตัวควบคุมการรับเข้าของบุคคลที่สามในคลัสเตอร์ Kubernetes เพื่อป้องกันไม่ให้มีการจัดกำหนดการคอมโพเนนต์คอนเทนเนอร์ที่มีช่องโหว่
3. ภัยคุกคามรันไทม์
เมื่อคุณได้บรรเทาปัญหาทั้งหมดในความปลอดภัยของ Kubernetes แล้ว ระยะรันไทม์จะมีชุดภัยคุกคามความปลอดภัยเฉพาะของตัวเอง
แม้ว่าคุณจะเน้นความปลอดภัยและลดความเสี่ยงในทุกวิถีทางที่เป็นไปได้ อาจมีภัยคุกคามที่หลากหลายจากคู่ต่อสู้ในขณะรันไทม์
นี่คือสิ่งที่คุณสามารถทำได้เพื่อบรรเทาภัยคุกคามเหล่านี้:
การตรวจสอบกิจกรรมรันไทม์:
เริ่มกระบวนการตรวจสอบด้วยกิจกรรมคอนเทนเนอร์ที่เกี่ยวข้องกับความปลอดภัยมากที่สุด ซึ่งรวมถึงกิจกรรมที่ชอบในกระบวนการ การสื่อสารเครือข่ายภายในและระหว่างบริการที่มีคอนเทนเนอร์ และการสื่อสารไปยังและจากเซิร์ฟเวอร์และไคลเอ็นต์ภายนอก
ใช้ประโยชน์จากข้อมูลการประกาศ
ใช้ข้อมูลเวลาในการสร้างและปรับใช้เพื่อประเมินความแตกต่างระหว่างกิจกรรมที่สังเกตและที่คาดหวัง เพื่อดูว่ามีกิจกรรมที่น่าสงสัยหรือไม่
Keep Network Communication Limited
รันไทม์คือเวลาที่คุณจะเห็นความแตกต่างระหว่างประเภทการรับส่งข้อมูลเครือข่ายที่อนุญาตและประเภทที่จำเป็นในการรันระบบ นี่เป็นโอกาสที่สามารถนำมาใช้เพื่อลบการสื่อสารที่ไม่จำเป็นที่อาจก่อให้เกิดภัยคุกคามต่อความปลอดภัยของ Kubernetes
สังเกตกระบวนการอย่างใกล้ชิด
สังเกตแอปพลิเคชันเป็นระยะเวลาหนึ่งเพื่อทราบกระบวนการทั้งหมดที่ดำเนินการเพื่อการทำงานที่เหมาะสมของแอปพลิเคชัน ทำรายการกระบวนการที่จำเป็นทั้งหมดและตรวจสอบแอปพลิเคชันแบบสุ่มเพื่อดูว่ามีการดำเนินการใดที่ไม่ใช่กระบวนการปกติหรือไม่
4. การตรวจสอบการปฏิบัติตามข้อกำหนดล้มเหลว
สิ่งสำคัญอย่างหนึ่งที่ทำให้ Kubernetes และความปลอดภัยของคอนเทนเนอร์เป็นไปตามข้อกำหนด หากการรักษาความปลอดภัยไม่ได้รับการเน้นอย่างเหมาะสมในวงจรการพัฒนาซอฟต์แวร์ อาจนำไปสู่การตรวจสอบการปฏิบัติตามข้อกำหนดที่ล้มเหลวได้
มีมาตรฐานการปฏิบัติตามข้อกำหนดมากมายที่สามารถใช้สำหรับ Kubernetes และการรักษาความปลอดภัยคอนเทนเนอร์
PCI-DSS, HIPAA และ SOC 2 เป็นมาตรฐานการปฏิบัติตามข้อกำหนดเฉพาะอุตสาหกรรม
ข้อผิดพลาดหลักประการหนึ่งที่เกิดขึ้นในส่วนนี้คือการไม่ทำการตรวจสอบการปฏิบัติตามข้อกำหนดให้เป็นส่วนหนึ่งของ SDLC ตั้งแต่เริ่มต้นหรือพิจารณาเฉพาะตอนรันไทม์เท่านั้น เพื่อให้แน่ใจว่าทุกอย่างในซอฟต์แวร์เป็นไปตามข้อกำหนด:
- ทำให้การปฏิบัติตามข้อกำหนดเป็นส่วนหนึ่งของ SDLC ตั้งแต่เริ่มต้น
- ใช้มาตรฐานอุตสาหกรรมในการทำให้ส่วนประกอบของซอฟต์แวร์เป็นไปตามข้อกำหนด