03/28/2024

13 Cele mai bune practici pentru a securiza microservicii

Arhitectura microserviciilor oferă flexibilitate, scalabilitate și capacitatea de a modifica, adăuga sau elimina componente software fără a afecta alte părți ale aplicației.

Pe lângă cicluri mai scurte de dezvoltare a software-ului, echipe mai mici și opțiuni flexibile de limbaj de programare, vă permite să scalați sau să depanați anumite funcții sau servicii fără a interfera cu celelalte componente.

În general, microserviciile permit împărțirea aplicațiilor monogame mari în servicii distincte implementabile independent. Cu toate acestea, aceste servicii independente mai mici măresc numărul de componente, de unde complexitatea și dificultatea securizării acestora.

Arhitectură monolitică-vs-microservicii Imagine Palarie rosie

De obicei, o implementare tipică de microservicii va avea straturile hardware, serviciu sau aplicație, comunicare, cloud, virtualizare și orchestrare. Fiecare dintre acestea are cerințe specifice de securitate, controale și provocări.

Provocări de securitate asociate cu microservicii

Microserviciile sunt de obicei sisteme distribuite pe scară largă, cu reguli de acces complexe, mai mult trafic de monitorizat și o suprafață de atac mai mare. În plus, majoritatea microserviciilor în cloud rulează în medii cloud, care au, de asemenea, diferite configurații și controale de securitate.

Datorită numărului mare de API-uri, porturi și componente care sunt expuse, firewall-urile tradiționale ar putea să nu ofere securitate adecvată. Aceste probleme fac implementările de microservicii mai vulnerabile la diferite amenințări cibernetice, cum ar fi omul de la mijloc, atacurile de injecție, scripturile între site-uri, DDoS și altele.

Securitatea rețelei este o altă provocare cu microservicii. În special, identitatea și controlul accesului presupun un nou nivel de complexitate. Alte vulnerabilități includ codul nesigur și defecte în sistemele de descoperire a serviciilor.

Deși securizarea microserviciilor este mai dificilă decât aplicațiile monolitice, le puteți proteja eficient stabilind o strategie bună și respectând cele mai bune practici.

În mod ideal, arhitectura necesită o abordare distribuită care ar trebui să acopere toate componentele diferite.

Zonele tipice de abordat includ

  • Protejarea aplicațiilor, microserviciilor și utilizatorilor
  • Securizarea identității și gestionarea accesului
  • Protejarea datelor
  • Îmbunătățiți securitatea comunicațiilor de la serviciu la serviciu
  • Monitorizarea microserviciilor și sistemelor de securitate

Cele mai bune practici pentru securizarea microserviciilor

Una dintre cele mai bune strategii este utilizarea unei combinații de bune practici, instrumente și controale pentru a proteja întregul ecosistem. Abordarea reală poate diferi în funcție de tipul de servicii, aplicații, utilizatori, factori de mediu și alți factori.

Dacă decideți să utilizați microservicii, trebuie să vă asigurați că îndepliniți toate cerințele de securitate pentru servicii, conexiuni și date.

Să aruncăm acum o privire la câteva practici eficiente de securitate pentru microservicii.

#1. Construiește securitatea de la început 👮

Faceți securitatea parte a ciclului de dezvoltare. În mod ideal, integrați securitatea în dezvoltarea și implementarea microserviciilor chiar de la început. Abordarea securității în acest fel este o abordare ușoară, eficientă și mai ieftină decât să așteptați să o adăugați atunci când dezvoltarea software-ului este aproape de finalizare.

  De ce nu puteți bloca BitTorrent pe routerul dvs

#2. Utilizați mecanismul de apărare în profunzime

Defense in Depth (DiP) este o tehnică în care aplicați mai multe straturi de securitate asupra serviciilor și datelor dvs. Practica îngreunează atacatorii să pătrundă prin mai multe straturi, oferind astfel o securitate puternică pentru serviciile și datele dumneavoastră.

Spre deosebire de soluțiile de securitate perimetrală precum firewall-urile, conceptul Defense-in-depth este diferit. Se bazează pe o combinație de instrumente precum antivirus, firewall, managementul patch-urilor, software anti-spam și altele pentru a oferi mai multe straturi de securitate distribuite în întregul sistem.

Apărare în profunzime de securitate multi-strat Imagine: Imperva

Cu această abordare, trebuie mai întâi să identificați serviciile sensibile, după care aplicați straturile de securitate adecvate în jurul lor.

#3. Implementați securitatea la nivel de container 📦

Cel mai adesea, microservicii se bazează pe tehnologia containerelor. Ca atare, securizarea containerelor, atat la interior cat si la exterior, este o modalitate de reducere a suprafetei de atac si a riscurilor. În mod ideal, urmărirea principiului securității cu cel mai mic privilegiu este o bună practică și necesită o combinație de strategii, inclusiv, dar fără a se limita la;

  • Limitarea permisiunii la minimul necesar
  • Evitați să rulați servicii și orice altceva folosind conturile sudo sau privilegiate.
  • Limitați sau controlați accesul și consumul resurselor disponibile. De exemplu, limitarea accesului la resursele sistemului de operare de către containere ajută la prevenirea furtului sau a compromiterii datelor.
  • Nu stocați secrete pe discul containerului.
  • Utilizați reguli adecvate pentru a izola accesul la resurse.

De asemenea, este vital să vă asigurați că imaginile containerului nu prezintă vulnerabilități sau probleme de securitate. O scanare regulată de securitate și vulnerabilitate a containerelor va ajuta la identificarea riscurilor.

Instrumentele tipice de scanare a imaginilor includ Clair, Ancorăși altele.

#4. Implementați o autentificare cu mai mulți factori 🔒

Activarea autentificării cu mai mulți factori îmbunătățește securitatea front-end-ului.

Utilizatorii care accesează vor trebui să furnizeze detaliile numelui de utilizator și parolei, pe lângă o altă formă de verificare, cum ar fi un cod trimis pe telefoanele lor sau o adresă de e-mail specificată. Tehnica îngreunează accesul la microservicii pentru atacatori, care pot folosi acreditări furate sau piratate, deoarece nu vor avea o modalitate de a oferi a doua autentificare.

#5. Utilizați jetoane de identitate și acces utilizator

În implementarea microserviciilor, un număr mare de aplicații și servicii vor necesita autorizare sigură și control al accesului. Un cadru de autorizare, cum ar fi OAuth 2.0 și OpenID, vă permite să procesați jetoanele în siguranță, protejând astfel microserviciile. În consecință, acest lucru permite aplicațiilor terțe să acceseze alte servicii sau date de la utilizatori.

Într-o implementare tipică, aplicația principală va solicita utilizatorului să autorizeze serviciul terță parte. La acceptarea acestui lucru, aplicația generează un token de acces pentru sesiune.

În special, OAuth este una dintre cele mai eficiente strategii pentru identitatea utilizatorului și controlul accesului. Deși există mai multe alte protocoale de autorizare și puteți crea și propriile protocoale, cea mai bună practică este să utilizați OAuth deoarece este mai standard, stabil și acceptat pe scară largă.

#6. Creați un gateway API

În general, microserviciile constau din mai multe componente distribuite pe diferite rețele și accesibile dintr-o gamă largă de sisteme și clienți. Expunerea microserviciilor crește vulnerabilitățile și riscurile de securitate. O modalitate de a le proteja este de a crea un punct de intrare unic și sigur, care vă ajută să centralizați toate accesul de la sisteme și clienți externi.

  Cum să blocați aplicațiile pe iPhone cu o parolă, Face ID și multe altele

Pentru a realiza acest lucru, implementați un gateway API pentru a monitoriza toate solicitările primite pentru probleme de securitate înainte de a le direcționa către microservicii corespunzătoare. Gateway-ul API se află între aplicațiile client și microservicii. Apoi limitează expunerea microserviciilor, oferind în același timp funcții suplimentare de gestionare a cererilor, cum ar fi autentificarea, terminarea SSL, traducerea protocolului, monitorizarea, rutarea cererilor, stocarea în cache și multe altele.

Cu această abordare, gateway-ul API direcționează toate serviciile externe către microservicii, susținând, de asemenea, principiul securității apărării în profunzime.

Poarta API pentru microservicii Imagine Livebook

Gateway-urile API tipice includ NGINX, Kong, Tyk, Ambasador, Gateway API AWSși altele.

Pentru a afla mai multe despre securitatea API, consultați ghidul nostru despre De ce și cum să securizați punctul final API.

#7. API-uri de profil bazate pe zona de implementare

Implementați restricții bazate pe roluri, asigurându-vă că utilizatorii au acces doar la API-urile și serviciile de care au nevoie. Deoarece majoritatea software-ului rău intenționat expune adesea un serviciu mai multor persoane, limitarea accesului doar la utilizatorii autorizați reduce riscurile. O tehnică de reducere a expunerii este etichetarea API-urilor în funcție de utilizatorii care ar trebui să aibă acces la ele. În general, API-urile pot fi;

  • API-uri Ethernet – Pentru servicii expuse lumii externe din afara centrului de date.
  • API-uri Corporate Zone – acestea sunt destinate traficului privat intern
  • API-uri DMZ – pentru a gestiona traficul care provine de pe internet
  • API-uri Hybrid Zone – pentru implementări de centre de date

#8. Securizează comunicațiile de la serviciu la serviciu

Practicile eficiente implică autentificarea și autorizarea solicitărilor atunci când două microservicii comunică.

În general, există trei tehnici principale pe care le puteți utiliza pentru a securiza comunicațiile interservicii. Acestea sunt Trust the network, JSON Web Token (JWT) și Mutual Transport Layer Security (mTLS sau Mutual TLS).

Securizarea comunicațiilor inter-servicii cu JWT Image Livebook

Dintre cele trei, cel mai popular este mTLS. În această abordare, fiecare microserviciu trebuie să aibă o pereche de chei publice/private. Microserviciul client utilizează apoi perechea de chei pentru a se autentifica la microserviciul de primire prin mTLS.

În timpul autentificării, fiecare microserviciu generează un certificat. Ulterior, fiecare microserviciu va folosi certificatul de la celălalt pentru a se autentifica.

În timp ce TLS oferă integritate și confidențialitate pentru datele în tranzit, de asemenea, permite clientului să identifice un microserviciu. Microserviciul client cunoaște de obicei celălalt microserviciu. Cu toate acestea, deoarece TLS este unidirecțional, un microserviciu care primește nu poate verifica microserviciul client, iar atacatorii pot exploata acest defect. Pe de altă parte, mTLS oferă un mijloc prin care fiecare dintre microservicii îl poate identifica pe celălalt.

#9. Limită tarif 🚏 trafic clienți

Limitarea traficului extern previne probleme precum atacurile de denial of service (DoS), precum și cazurile în care unii clienți consumă cea mai mare parte a lățimii de bandă a aplicației. O abordare este aplicarea diferitelor reguli care pot monitoriza și controla rata de trafic trimis sau primit de la un client pe baza IP-ului, timpului etc.

  9 terenuri de antrenament online pentru hackeri etici

Configurați-vă serviciile să încetinească dacă detectează mai multe încercări eșuate de conectare la API-urile dvs. sau orice altă activitate suspectă.

Un sistem lent ar descuraja atacatorii și, probabil, ar renunța la încercarea lor de a accesa serviciile. Puteți limita rata folosind gateway-ul API, prin cod sau orice altă tehnică. De obicei, cele mai multe dintre mediile SaaS au limitare a ratei API pentru a minimiza abuzurile de către utilizatori, precum și atacurile.

#10. Folosiți manageri de orchestrație

Managerii de orchestrații vă permit să automatizați configurarea, coordonarea și alte sarcini de gestionare a microserviciilor, pe lângă îmbunătățirea securității. De obicei, instrumentele vă permit să gestionați mai multe containere, să limitați accesul la metadate, să separați sarcinile de lucru, să colectați jurnale și multe altele.

Unele instrumente de orchestrare au caracteristici suplimentare care permit dezvoltatorilor să stocheze și să partajeze informații sensibile, cum ar fi certificatele SSL, cheile de criptare, parolele și jetoanele de identitate.

Cele două metode utilizate în mod obișnuit pentru orchestrarea eficientă a microserviciilor sunt;

  • Codarea orchestrației ca microserviciu
  • Utilizarea gateway-urilor API pentru a oferi un strat de orchestrare

Orchestrarea prin gateway-ul API nu este recomandată din cauza provocărilor atunci când este nevoie de scalarea serviciilor.

Stratul de orchestrare a microserviciilor – Imagine Globallogic

Instrumentele tipice de management al orchestrației includ Kubernetes, Istio, Serviciul Azure Kubernetes (AKS)etc.

Pentru a afla mai multe, explorați Container Orchestration pentru DeOps.

#11. Monitorizați toate sistemele și serviciile dvs

Deoarece microservicii se bazează pe sisteme distribuite, trebuie să aveți o strategie de monitorizare fiabilă și eficientă pentru toate componentele individuale.

Implementarea monitorizării continue vă permite să detectați și să abordați riscurile de securitate în timp util. În acest sens, există o gamă largă de soluții de monitorizare a microserviciilor, inclusiv Prometeu, Statsd, InfluxDB, Logstashetc.

Monitorizare în interiorul arhitecturii microserviciilor

Utilizați instrumentele adecvate pentru a monitoriza sistemele și serviciile interne. Unele dintre cele mai bune practici includ;

  • Activați înregistrarea la nivelul aplicației. Poti Splunk, Graphana, stiva ELKși alte instrumente care colectează jurnalele la nivel de aplicație, container, rețea și infrastructură.
  • Monitorizați valorile de utilizare
  • Utilizați tendințele în valori precum CPU, memorie, timpi de răspuns, erori, notificări și altele pentru a detecta activități neobișnuite care indică un atac existent sau potențial.
  • Auditează jurnalele în domenii precum solicitările primite de la clienți, înregistrările bazei de date, containerele și altele pentru a identifica inconsecvențele sau activitățile neobișnuite.

#12. Automatizați activitățile de securitate

Automatizați procesele de securitate, cum ar fi implementarea actualizărilor, scanarea vulnerabilităților, monitorizarea, aplicarea politicilor și alte activități. În plus, verificați actualizările pentru a vă asigura că sunt sigure și că nu introduc noi vulnerabilități.

După actualizări, software-ul de securitate ar trebui, în mod ideal, să efectueze teste pe toate containerele și microserviciile pentru a vedea dacă ar fi putut exista unele vulnerabilități sau probleme de securitate care au apărut înainte.

#13. Protejați datele 🛡️ în orice moment

Protejați datele în tranzit și în repaus. În mod ideal, impuneți utilizarea HTTPS pentru toate comunicațiile, pentru a securiza datele în tranzit și criptarea pentru toate datele sensibile aflate în repaus. Evitați transmiterea și stocarea parolelor în text simplu, cheilor, acreditărilor și datelor sensibile care se află în afara codului.

Cea mai bună strategie este să folosiți tehnologii standard pentru a cripta toate datele sensibile cât mai curând posibil. De asemenea, decriptați datele cât mai târziu posibil pentru a reduce expunerea.

Concluzie

Microserviciile se bazează pe componente distribuite pentru a oferi beneficii, cum ar fi mai multă flexibilitate și opțiuni de implementare. Cu toate acestea, atunci când folosesc microservicii, organizațiile trebuie să ajusteze politicile și strategiile de securitate internă către o abordare mai distribuită și mai nativă în cloud.

În mod ideal, urmăriți reducerea suprafeței de atac, protejarea mediului de microservicii, API-urile, aplicațiile și datele.

x