9 Cele mai bune practici pentru securitatea containerelor în DevOps

Containerele din DevOps nu sunt un concept nou. Sunt nisipuri virtuale cu toate instrumentele necesare pentru rularea microserviciilor, inclusiv aplicații mari.

Vă puteți gândi la containere ca la sisteme de ambalare care vă permit (în calitate de dezvoltator) să stocați tot ceea ce aveți nevoie pentru a rula o aplicație, de exemplu, runtime și coduri binare, dintr-un punct centralizat.

Containerele îi ajută pe dezvoltatori să mute aplicațiile dintr-un mediu în altul (cum ar fi expedierea unei aplicații de pe o mașină locală într-un mediu virtual sau mutarea acesteia de la etapa inițială la cea de producție), eliminând toate problemele legate de diferite setări de software și de configurare în dezvoltatori și producție. Sfârşit.

Al statisticilor Raportul privind tehnologia containerelor arată că 50% dintre organizațiile globului au adoptat orchestrarea containerelor. În timp ce această tehnologie a crescut adoptarea pe baza beneficiilor sale, containerele ar putea deschide o poartă pentru atacurile de securitate cibernetică dacă nu sunt verificate.

Detalii CVEsursa de date de vulnerabilitate de securitate prin excelență, a înregistrat 62 Vulnerabilitati adaptate Docker de la această scriere. Acest lucru nu necesită cele mai bune practici pentru dezvoltatori pentru a aborda aceste capcane și a proteja containerele pentru procesele DevOps de succes?

Această postare dezvăluie conceptul de securitate a containerelor, evidențiază câteva provocări și vă îndrumă cu privire la cele mai bune practici de pus în aplicare atunci când utilizați tehnologia containerelor.

Ce este Container Security?

Securitatea containerelor este un proces continuu care utilizează protocoale de securitate (instrumente și politici) pentru a proteja containerele și mediile lor de potențiale amenințări.

Dacă nu sunt bifate, amenințările vă pot afecta aplicația, infrastructura, timpul de rulare, bibliotecile de sistem, sistemul de operare și nucleul, printre alte caracteristici.

Având în vedere că containerele sunt disponibile în regim tranzitoriu (momentar) și sunt, de asemenea, menite pentru implementări dinamice și scalare, este nevoie de securitate automată și de fiecare etapă a ciclului de viață al dezvoltării software (SDLC).

Citește și: Introducere în Kubernetes Kops pentru începători

Care sunt provocările în securitatea containerelor?

Deși containerele au o mulțime de recompense (cum ar fi accelerarea livrării de software) sub ele, ele nu sunt imuni la provocări, în principal pentru că au nevoie de măsuri de securitate (le lipsesc capabilități de auto-securitate).

Acest lucru se datorează faptului că containerele accesează hardware printr-un sistem de operare (OS) găzduit. Înseamnă că un singur container poate avea mai multe imagini de container subiacente, introducând un domeniu mai larg pentru suprafețele de atac, prezentând unele provocări.

Prima este Configurația incorectă a containerului, în care dezvoltatorii uită să personalizeze și să utilizeze configurații implicite ale containerului, care au unele capcane, cum ar fi unele porturi expuse, nesigure, care ar putea să nu fie ideale pentru aplicația dvs., acreditări scurse, cum ar fi parolele și jetoanele de autentificare și eliberarea excesivă a permisiunii pentru timpii de rulare a containerului (când rulați ca root). Când nu sunt suprascrise, aceste configurații implicite oferă căi pentru atacuri.

Urmează vulnerabilitatea infrastructurii containerelor. Aici, pachetele încorporate în container, cum ar fi codul aplicației, bibliotecile și configurațiile, sau cele de pe sistemul de operare gazdă, introduc vulnerabilități. Susceptibilitatea poate fi introdusă în orice etapă a ciclului de viață al unei aplicații, de exemplu, atunci când dependențele externe sunt încorporate într-o imagine de container, biblioteci open-source sunt instalate ca parte a aplicației, imaginile de bază ale containerului provin din registre și gazde de containere terțe. care sunt exploatate prin rețele și puncte finale.

  Ce este o adresă IP? Și care este adresa ta IP?

Vizibilitatea în încărcăturile de lucru ale containerelor este printre cele mai mari provocări ale containerelor. Acest lucru se datorează naturii foarte dinamice a containerelor, care fac ca instrumentele de monitorizare să nu poată localiza containerele care rulează și să le inspecteze comportamentul rețelei. Vizibilitatea îmbunătățită previne încălcările și îmbunătățește timpul de răspuns la incidență, dacă se întâmplă.

În plus, containerul este susceptibil dacă orice fază a conductei CI/CD este nesigură, fie în codul aplicației, fie în infrastructura de încărcare a containerului. Deși este responsabilitatea dezvoltatorilor să abordeze securitatea la sfârșitul ciclului de viață al unei aplicații, administrarea acesteia la fiecare pas de dezvoltare vă protejează aplicațiile de acest eșec.

Ce instrumente pot rezolva provocările în securitatea containerelor?

Vă puteți asigura că soluțiile dvs. de întreprindere implementate sunt sigure prin implementarea securității și integrității containerului folosind instrumente de securitate. Aceste instrumente scanează vulnerabilități și le monitorizează constant pentru atacuri, erori sau orice problemă.

Fie că cauți instrumente de securitate open-source pentru containere sau un tip comercializat, toate vor servi aceluiași scop. Toate funcționează prin auditarea infrastructurii containerelor și rularea împotriva vulnerabilităților și expunerilor comune (CVE).

Iată câteva instrumente pe care le puteți încerca: Pingsafe Editors Choice, Datadog Cloud SIEM, Anchore, Sophos Cloud-Native Security, Bitdefender GravityZone, Sysdig secure, Aqua Security și RedHat Advanced Cluster Security pentru Kubernetes.

Citește și: 11 scanere de securitate pentru containere pentru a găsi vulnerabilități

Cele mai bune practici pentru securitatea containerelor

În ciuda provocărilor prezentate mai sus în securitatea containerelor, iată o detaliere a celor mai bune convenții pe care le puteți implementa pentru a optimiza securitatea containerului în toate etapele ciclului de viață al aplicației.

Securizarea imaginilor dvs

Utilizați imagini de container pentru a crea containere. Cea mai mică configurație greșită sau acțiuni rău intenționate pot declanșa vulnerabilități în containerele aflate în producție. Puteți contracara acest lucru prin:

  • Utilizarea imaginilor de încredere – Când nu vă creați imaginile de la zero, veți opta întotdeauna pentru a lucra cu imagini din surse de încredere. Arhivele publice precum Docker Hub au imagini, inclusiv cele cu malware și configurare greșită.
  • Includerea doar a componentelor necesare – Dacă există componente de care aplicația dvs. nu are nevoie, cel mai bine ar fi să le eliminați. De exemplu, sistemul UNIX prezintă în mod natural binare „awk” și „sed”.
  • Includerea aplicației dvs. în imaginea containerului – O imagine a containerului include un subset al sistemului de operare (OS) și aplicația care rulează. Pentru fiecare instrument și bibliotecă introdusă în container, este o potențială amenințare. Cel mai bine ar fi să includeți aplicația în imaginea containerului pentru a rezolva acest lucru. Acest lucru se face printr-un binar compilat static cu toate dependențele necesare.

Automatizarea scanărilor pentru vulnerabilități și management

Scanarea regulată a vulnerabilităților și gestionarea containerului și gazdelor dvs. ajută la detectarea vulnerabilităților în orice etapă a ciclului de viață al aplicației.

În acest caz, puteți activa scanarea codului pentru a detecta erori și testarea statică de securitate a aplicațiilor (SAST) pentru a găsi vulnerabilități în codul aplicației. O analiză a compoziției software (SCA) poate oferi vizibilitate asupra componentelor software open-source generând o listă de materiale software care poate fi încrucișată cu vulnerabilități documentate open-source.

  Cum să adăugați un cuprins în Microsoft Word

În plus, scanarea imaginilor analizează conținutul și procesul de acumulare a imaginii containerului pentru susceptibilitate. Cu instrumente ca Clair, puteți scana pentru vulnerabilități cunoscute. Alternativ, utilizați testarea dinamică de securitate a aplicațiilor (DAST), care evidențiază riscurile de securitate bazate pe comportamentul containerului. Instrumentele DAST pot efectua, de asemenea, scanarea gazdei, în cazul în care inspectați componentele gazdă a containerului (nucleul gazdă și sistemul de operare) pentru configurare greșită.

În timp ce măsurile de mai sus sunt adoptate în procesul în curs de desfășurare al ciclului de viață al containerului, puteți îmbrățișa filozofia „deplasare la stânga”. Înseamnă implementarea securității chiar de la începutul ciclului de viață al dezvoltării. Un instrument bun dacă alegeți această abordare este Trivy.

Securizarea registrelor de containere

Registrele de containere sunt o modalitate centralizată eficientă de a stoca imagini și de a le distribui. Adesea, organizațiile vor avea mii de imagini stocate în registre publice sau private. Există mai multe măsuri pentru a ne asigura că toți membrii echipei și colaboratorii folosesc imagini fără vulnerabilități.

În primul rând, implementarea unui control al accesului utilizatorilor (pentru registre private) stabilește cine poate publica și accesa imagini. Deși aceasta este o măsură de securitate de bază, ea împiedică persoanele neautorizate să publice, să modifice sau să șteargă imaginile dvs.

Următoarea măsură este semnarea imaginilor dvs., care leagă fiecare imagine de persoana care a semnat-o, făcând dificilă înlocuirea unei imagini cu una compromisă. Puteți folosi Docker Content Trust tehnici de adăugare a semnăturilor digitale la datele trimise și primite de la registre. În cele din urmă, amintiți-vă că scanarea imaginilor (în mod continuu) ajută la detectarea oricăror vulnerabilități critice.

Monitorizarea Containerelor

Puteți optimiza vizibilitatea asupra sarcinilor de lucru ale containerelor prin instrumente de observabilitate. Instrumentele ar trebui să poată monitoriza și testa vulnerabilitățile din toate componentele și să permită înregistrarea în timp real a evenimentelor pentru mediile containerizate.

Instrumentele de observabilitate detectează amenințările prin auditarea valorilor și jurnalelor de la toate componentele stivei de containere și analizându-le pentru anomalii. Cu această abordare, puteți corecta configurările greșite imediat când sunt identificate.

Pentru a colecta valori de utilizare a resurselor, utilizați instrumente precum cAdvisor sau kube-state-metrics. Pentru a monitoriza activitatea containerelor și performanța clusterelor dvs., utilizați instrumente precum Grafana sau Prometheus.

Dacă doriți să analizați traficul de rețea între containere, utilizați Wireshark sau tcpdump. Dacă sunteți în serviciul Kubernetes gestionat, cum ar fi (AKS), utilizați Azure Monitor pentru a urmări resursele și amenințările de securitate.

În plus, Azure Log Analytics poate colecta și analiza resursele dvs. AKS. Dacă alegeți Amazon EKS, Amazon CloudTrail este bun pentru înregistrare și vizionare; utilizați Amazon Cloud Watch.

Implementarea securității rețelei

Măsurile de control al securității rețelei pot ajuta la protejarea împotriva accesului neautorizat la container. Criteriul folosit aici este segmentarea rețelei care izolează containerele, limitându-le să acceseze doar serviciile necesare.

Dacă rulați aplicațiile în containere pe Kubernetes, puteți utiliza politicile de rețea K8s pentru a configura traficul pod de intrare și de ieșire în clustere. Acest lucru, la rândul său, restricționează traficul la anumite poduri pe baza etichetelor.

Securitatea stratului de transport (TLS) poate fi mărită pentru comunicarea cu pod. Puteți opta fie pentru tehnicile TLS, fie pentru Secure Sockets Layer (SSL) pentru comunicarea securizată între serverul API și alte componente. Echilibratoarele de încărcare sunt o soluție bună dacă doriți, de asemenea, să limitați intrarea traficului în clusterele dvs.

  Cum să măriți o parte a unei fotografii pe iPhone și iPad

Dacă clusterele dvs. au microservicii, puteți asigura trafic securizat prin instrumente de rețea de servicii precum Meshery sau Linkerd. În cele din urmă, asigurați-vă rețeaua dacă utilizați un cloud prodder pentru a vă găzdui clusterele.

Dacă utilizați Azure Kubernetes Service (AKS), utilizați grupuri de securitate de rețea (NSG) pentru gestionarea traficului. Dacă sunteți pe Amazon Elastic Kubernetes Service (EKS), cea mai potrivită ar fi grupurile de securitate Amazon virtual private cloud (VPC).

Reducerea atacurilor de suprafață

Minimizarea suprafeței atacurilor are două beneficii; creșterea vitezei de serviciu și reducerea potențialului de încălcare a securității.

Folosind o construcție în mai multe etape, puteți crea imagini ușoare cu un atac de suprafață mic și timp de pornire și performanță îmbunătățite. Există mai multe soluții pentru a face acest lucru. Dacă sunteți pe Linux, puteți utiliza Alpine Linux, BusyBox sau Tiny Core Linux.

Pentru Ubuntu, există Ubuntu Minimal. De asemenea, puteți folosi Scratch, o imagine specială Docker – în esență un container deschis, pentru a construi imagini minimaliste de la început.

Limitarea privilegiilor containerului

Principiul folosit aici presupune acordarea permisiunii minime pentru a efectua o anumită sarcină. Când containerele sunt rulate ca root, ele acordă utilizatorului diverse privilegii de operare, cum ar fi instalarea pachetelor sau puterea de operare de citire-scriere a sistemului dumneavoastră de operare.

Riscul este ca atacatorii să poată profita de escaladarea puterii la timpul de rulare a containerului dacă sunt compromisi. Așa fiind, există două soluții viabile. Puteți rula containere în modul fără rădăcină sau puteți restricționa abilitățile Kernel-ului LINUX doar la cele necesare pentru volumul de lucru al containerului.

Gestionarea secretelor în siguranță

Fișierele dvs. de configurare container și docker ar trebui să fie lipsite de secrete. Secretele includ certificate, parole, chei de interfață a programului de aplicație (API) și jetoane. Și, deși aceasta este cea mai bună practică, veți vedea adesea aceste secrete codificate în procesul de construire sau în imaginile codului sursă.

În astfel de cazuri, datele sensibile intră în containere și sunt stocate în cache în straturi intermediare de containere, chiar și atunci când containerele au fost îndepărtate. Pentru astfel de cazuri, cea mai bună abordare este implementarea unei soluții de gestionare a secretelor precum Manager de secrete AWS și Seif pentru a stoca și gestiona acreditările secrete.

Împuternicirea echipei tale

Fiind ultima dintre măsurile de securitate, educarea echipei dvs. cu privire la cele mai bune practici de securitate este crucială. Aceasta înseamnă că toți jucătorii echipei dvs. pot identifica și pot răspunde la amenințările de securitate.

O modalitate bună de a pune în aplicare acest lucru este prin adăugarea de securitate a containerului la procesele de îmbarcare a echipei. Oferirea de instruire practică, învățare continuă și evaluări regulate de securitate diferențiază echipa dvs. DevOps, echipându-le cu tendințe de securitate actualizate.

Gânduri finale

Securitatea containerelor este un proces continuu crucial al ciclului de viață al dezvoltării software. Cea mai bună abordare a acestei interogări este încorporarea securității chiar de la codul aplicației până la rularea containerului, sistemul de operare gazdă și infrastructura de rețea de bază.

Îți poți da seama de acest lucru urmând un plan strategic care implică verificarea containerelor și folosind doar cele din surse de încredere. Efectuați întărirea containerelor pentru a vă asigura că au în ele doar serviciile necesare. Introduceți metode de înregistrare care sunt ușor de pus în aplicare prin instrumente de monitorizare. Segmentează-ți rețeaua astfel încât containerele să fie separate de infrastructura generală.

Semnați întotdeauna imaginile pentru a valida datele de intrare și de ieșire prin serviciile dvs. În plus, ar trebui să aveți scanări regulate și teste de penetrare pentru a verifica eventualele vulnerabilități și pentru a lua imediat măsuri corective. Și pe măsură ce peisajul tehnologic evoluează, rămâneți mereu la curent cu cele mai recente practici de securitate.

Apoi, vedeți cum să automatizați securitatea.