ปัญหาด้านความปลอดภัยของ Kubernetes ที่พบบ่อยที่สุดและวิธีที่คุณสามารถบรรเทาปัญหาเหล่านี้ได้

เผยแพร่แล้ว: 2021-03-30

Kubernetes และคอนเทนเนอร์รับประกันสามสิ่ง:

  • พัฒนาและเผยแพร่แอปพลิเคชันได้เร็วขึ้น
  • แก้ไขข้อผิดพลาดได้เร็วขึ้น
  • เพิ่มความเร็วของคุณลักษณะ

อย่างไรก็ตาม มักมาพร้อมกับต้นทุนของการรักษาความปลอดภัยที่ถูกบุกรุก และนั่นเป็นสิ่งที่ไม่เป็นที่ยอมรับในเทคโนโลยีการพัฒนาเว็บใดๆ

เพื่อให้ทราบถึงสถานะของความปลอดภัยของ 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 ตั้งแต่เริ่มต้น
  • ใช้มาตรฐานอุตสาหกรรมในการทำให้ส่วนประกอบของซอฟต์แวร์เป็นไปตามข้อกำหนด