Cele mai frecvente probleme de securitate Kubernetes și cum le puteți atenua

Publicat: 2021-03-30

Kubernetes și containerele promit trei lucruri:

  • Dezvoltarea și lansarea mai rapidă a aplicațiilor.
  • Remedieri mai rapide de erori.
  • Viteza crescută a caracteristicilor.

Cu toate acestea, adesea vine cu prețul securității compromise și acesta este ceva inacceptabil în nicio tehnologie de dezvoltare web.

Pentru a realiza starea securității Kubernetes, iată doi factori dintr-un sondaj realizat de StackRox la sfârșitul anului 2020:

  • 90% dintre participanții la sondaj au raportat că s-au confruntat cu un incident de securitate legat de containere și Kubernetes în ultimele 12 luni.
  • 44% dintre participanți au fost nevoiți să-și întârzie lansarea aplicației din cauza problemelor de securitate cu privire la Kubernetes.

Care sunt cele mai frecvente motive din spatele acestor probleme de securitate?

Cele mai frecvente probleme de securitate legate de Kubernetes
1. Configurații greșite

Sondajele au arătat că expunerile cauzate de configurări greșite reprezintă riscul cel mai răspândit în securitatea containerelor și a mediilor Kubernetes.

Când utilizați Kubernetes pentru a crea aplicații containerizate, gestionarea configurației este cel mai mare risc pentru specialiștii în securitate.

Acest lucru se datorează în principal pentru că piața este plină de instrumente de scanare a vulnerabilităților, dar gestionarea configurației se bazează în mare parte pe considerația umană.

Iată câteva sfaturi despre configurarea unora dintre componentele comune ale unei aplicații containerizate pentru a vă asigura că securitatea nu este compromisă.

Imagini:

Evitați utilizarea oricărui software care nu este absolut necesar. Acestea includ manageri de pachete, instrumente de rețea și clienți precum curl sau shell-uri Unix.

Amintiți-vă, utilizarea oricărui software crește riscul de securitate. De asemenea, utilizați numai imagini din surse de încredere.

Secrete:

Evitați să introduceți secrete în imagini sau să le expuneți în mod inutil.

Ca practică sigură, utilizați instrumente de încredere de gestionare a secretelor pentru a vă asigura că implementările montează secretele numai dacă și când sunt necesare.

Spații de nume:

Utilizați cu generozitate spațiile de nume. Ele acționează ca o limită pentru Kubernetes și politicile de rețea. Utilizarea spațiilor de nume poate limita efectele unui atac și poate conține greșeli și atacuri, astfel încât acestea să nu se răspândească și să nu provoace mai multe distrugeri.

Privilegii de rulare:

Există o singură regulă de privilegii: permiteți unui număr mai mic dintre ele pentru ca software-ul să fie cel mai sigur.

Politici de rețea

Conform setărilor implicite, podurile pot vorbi între ele în mod independent în Kubernetes. Cu toate acestea, este o bună practică să implementați politici de rețea pentru a limita interacțiunea podurilor. Acest lucru poate împiedica răspândirea oricărei amenințări în container și în întreaga aplicație.

Stocare persistentă

Trebuie să aveți o vizibilitate adecvată asupra configurației și utilizării stocării persistente. Acest lucru se datorează faptului că acesta este singurul vector persistent într-o configurație de container altfel efemeră.

Planul de control

Dacă gestionați singur clusterele Kubernetes, este foarte important să configurați planul de control. Acest lucru se datorează faptului că unele clustere pot lua decizii globale și dacă un cluster este infectat, acest lucru poate compromite întregul ecosistem.

Cea mai bună abordare pentru a atenua aceste și diverse alte probleme de securitate legate de configurație este utilizarea unei combinații de eforturi manuale și automate pentru a vă asigura că configurarea este făcută astfel încât să asigure securitatea Kubernetes și, în consecință, software-ul din care fac parte. de.

2. Vulnerabilități

O serie de vulnerabilități diferite au fost găsite și exploatate în Kubernetes și alte containere în ultimii ani.

Cele mai comune exploatări ale vulnerabilităților includ:

  • Miningul criptografic.
  • Instalare malware.
  • Privilegiul escaladării.
  • Acces gazdă.

Abordarea eficientă pentru gestionarea vulnerabilității este ceva care trebuie să continue pe parcursul ciclului de viață al containerului și ar trebui să includă următoarele:

  • Identificarea și rezolvarea vulnerabilităților din imagini, inclusiv cele din sistemul de operare instalat.
  • Detectarea și atenuarea tuturor vulnerabilităților din bibliotecile de rulare ale limbajelor de programare pe care le utilizați.
  • Luarea de măsuri pentru a preveni ca imaginile cu vulnerabilități riscante să ajungă la registrul de containere accesibil în producție.
  • Luarea de măsuri pentru limitarea amenințărilor care prezintă un risc de securitate peste un anumit nivel.
  • Utilizarea controlerelor de admitere terță parte în clusterele Kubernetes pentru a preveni programarea componentelor vulnerabile ale containerului.
3. Amenințări de rulare

Odată ce ați atenuat toate problemele din securitatea Kubernetes, faza de rulare are propriul set unic de amenințări de securitate.

Chiar dacă ați pus accent pe securitate și ați minimizat riscurile în toate modurile posibile, pot exista diverse amenințări din partea adversarilor în timpul execuției.

Iată câteva lucruri pe care le puteți face pentru a atenua aceste amenințări:

Monitorizarea activității la runtime:

Începeți procesul de monitorizare cu cele mai multe activități de containere cele mai relevante pentru securitate. Aceasta include activități precum activitatea de proces, comunicațiile de rețea în cadrul și între serviciile containerizate și comunicarea către și de la servere și clienți externi.

Profită de datele declarative

Folosiți informațiile despre timpul de construire și implementare pentru a evalua diferența dintre activitatea observată și cea așteptată pentru a afla dacă există vreo activitate suspectă.

Păstrați comunicarea în rețea limitată

Runtime este momentul în care puteți vedea diferența dintre tipul de trafic de rețea permis și cel necesar pentru a rula sistemul. Aceasta este oportunitatea care poate fi folosită pentru a elimina orice comunicare inutilă care ar putea reprezenta o amenințare la adresa securității Kubernetes.

Observați îndeaproape procesele

Observați aplicația pentru o perioadă de timp pentru a cunoaște toate procesele care se execută pentru buna funcționare a aplicației. Faceți o listă cu toate procesele esențiale și verificați aplicația la întâmplare pentru a vedea dacă se execută vreun proces care nu este cel obișnuit.

4. Audit de conformitate eșuat

Unul dintre lucrurile majore care asigură securitatea Kubernetes și a containerelor este conformitatea. Dacă securitatea nu este subliniată în mod corespunzător în ciclul de viață al dezvoltării software, aceasta poate duce la un audit de conformitate eșuat.

Există numeroase standarde de conformitate care pot fi utilizate pentru Kubernetes și securitatea containerelor.

PCI-DSS, HIPAA și SOC 2 sunt standarde de conformitate specifice industriei.

Una dintre principalele greșeli făcute în acest sens este să nu facă auditurile de conformitate o parte a SDLC de la început sau să le ia în considerare doar în timpul execuției. Pentru a vă asigura că totul din software este compatibil:

  • Faceți conformarea o parte a SDLC încă de la început.
  • Utilizați standardele din industrie pentru a face componentele software-ului compatibile.