13 bedste fremgangsmåder til at sikre mikrotjenester

Microservices-arkitektur giver fleksibilitet, skalerbarhed og mulighed for at ændre, tilføje eller fjerne softwarekomponenter uden at påvirke andre dele af applikationen.

Ud over kortere softwareudviklingscyklusser, mindre teams og fleksible programmeringssprogmuligheder giver det dig mulighed for at skalere eller fejlfinde visse funktioner eller tjenester uden at forstyrre de andre komponenter.

Generelt tillader mikrotjenesterne at opdele store monogame applikationer i uafhængigt deployerbare distinkte tjenester. Disse mindre uafhængige tjenester øger imidlertid antallet af komponenter og derfor kompleksiteten og vanskeligheden ved at sikre dem.

Monolitisk-vs-mikrotjenester arkitektur billede Rød hat

Normalt vil en typisk mikroservice-implementering have hardware, service eller applikation, kommunikation, cloud, virtualisering og orkestreringslag. Hver af disse har specifikke sikkerhedskrav, kontroller og udfordringer.

Sikkerhedsudfordringer forbundet med Microservices

Mikrotjenester er normalt vidt udbredte systemer med komplekse adgangsregler, mere trafik at overvåge og en større angrebsflade. Derudover kører de fleste af mikrotjenesternes cloud på cloud-miljøer, som også har forskellige sikkerhedskonfigurationer og kontroller.

På grund af det store antal API’er, porte og komponenter, der er eksponeret, giver traditionelle firewalls muligvis ikke tilstrækkelig sikkerhed. Disse problemer gør implementeringer af mikrotjenester mere sårbare over for forskellige cybertrusler, såsom manden i midten, injektionsangreb, cross-site scripting, DDoS og andre.

Netværkssikkerhed er en anden udfordring med mikrotjenester. Især identiteten og adgangskontrollen antager et nyt niveau af kompleksitet. Andre sårbarheder omfatter usikker kode og fejl i serviceopdagelsessystemerne.

Selvom det er sværere at sikre mikrotjenester end monolitiske applikationer, kan du beskytte dem effektivt ved at etablere en god strategi og følge bedste praksis.

Ideelt set kræver arkitekturen en distribueret tilgang, der skal dække alle de forskellige komponenter.

Typiske områder at tage fat på omfatter

  • Beskyttelse af applikationer, mikrotjenester og brugere
  • Sikring af identitets- og adgangsstyring
  • Beskyttelse af data
  • Forbedre service-til-service kommunikationssikkerhed
  • Overvågning af mikrotjenester og sikkerhedssystemer

Bedste fremgangsmåder til sikring af mikrotjenester

En af de bedste strategier er at bruge en kombination af bedste praksis, værktøjer og kontroller til at beskytte hele økosystemet. Den faktiske tilgang kan variere alt efter typen af ​​tjenester, applikationer, brugere, miljømæssige og andre faktorer.

Hvis du beslutter dig for at bruge mikrotjenester, skal du sikre dig, at du opfylder alle sikkerhedskravene til tjenesterne, forbindelserne og dataene.

Lad os nu se på nogle effektive mikrotjenesters sikkerhedspraksis.

#1. Byg sikkerhed fra starten 👮

Gør sikkerhed til en del af udviklingscyklussen. Ideelt set skal du integrere sikkerhed i udviklingen og implementeringen af ​​mikrotjenester lige fra starten. At adressere sikkerhed på denne måde er en nem, effektiv og billigere tilgang end at vente med at tilføje den, når softwareudviklingen er ved at være færdig.

  Sådan bruger du side-by-side apps (split view) på en iPad

#2. Brug Defence in Depth Mechanism

Defence in Depth (DiP) er en teknik, hvor du anvender flere sikkerhedslag på dine tjenester og data. Denne praksis gør det sværere for angribere at trænge igennem de mange lag, hvilket giver stærk sikkerhed for dine tjenester og data.

I modsætning til perimetersikkerhedsløsningerne såsom firewalls, er Defence-in-depth-konceptet anderledes. Den er afhængig af en kombination af værktøjer såsom antivirus, firewall, patch management, anti-spam software og andre for at give flere sikkerhedslag fordelt i hele systemet.

Forsvar i dybden med flere lag sikkerhed Billede: Imperva

Med denne tilgang skal du først identificere de følsomme tjenester, hvorefter du anvender de passende sikkerhedslag omkring dem.

#3. Implementer sikkerhed på container 📦 niveau

Oftest er mikrotjenester afhængige af containerteknologi. Som sådan er sikring af containerne, både indvendigt og udvendigt, en måde at reducere angrebsfladen og risiciene på. Ideelt set er det en god praksis at sigte mod princippet om mindst privilegeret sikkerhed og kræver en kombination af strategier, herunder men ikke begrænset til;

  • Begrænsning af tilladelse til det krævede minimum
  • Undgå at køre tjenester og andet ved at bruge sudo- eller privilegerede konti.
  • Begræns eller kontroller adgangen til og forbruget af tilgængelige ressourcer. For eksempel hjælper begrænsning af adgangen til operativsystemets ressourcer af containerne til at forhindre datatyveri eller kompromittering.
  • Gem ikke hemmeligheder på containerdisken.
  • Brug passende regler for at isolere adgangen til ressourcerne.

Det er også vigtigt at sikre, at containerbilleder ikke har nogen sårbarheder eller sikkerhedsproblemer. En regelmæssig sikkerheds- og sårbarhedsscanning af containerne vil hjælpe med at identificere risici.

Typiske billedscanningsværktøjer omfatter Clair, Ankerog mere.

#4. Implementer en Multi-Factor-godkendelse 🔒

Aktivering af multi-faktor-godkendelse øger sikkerheden i front-end.

Brugere, der får adgang, skal angive deres brugernavn og adgangskodedetaljer ud over en anden form for bekræftelse, såsom en kode sendt til deres telefoner eller en specificeret e-mailadresse. Teknikken gør det sværere for angribere, som muligvis bruger stjålne eller hackede legitimationsoplysninger, at få adgang til mikrotjenesterne, da de ikke har mulighed for at levere den anden godkendelse.

#5. Brug brugeridentitet og adgangstokens

Ved implementering af mikrotjenester vil et stort antal applikationer og tjenester kræve sikker autorisation og adgangskontrol. En autorisationsramme såsom OAuth 2.0 og OpenID gør det muligt for dig at behandle tokens sikkert og dermed beskytte dine mikrotjenester. Følgelig giver dette tredjepartsapplikationer adgang til andre tjenester eller data fra brugere.

I en typisk implementering vil hovedapplikationen bede brugeren om at godkende tredjepartstjenesten. Når du accepterer dette, genererer applikationen et adgangstoken til sessionen.

Især er OAuth en af ​​de mest effektive strategier til brugeridentitet og adgangskontrol. Selvom der er flere andre godkendelsesprotokoller, og du også kan bygge din egen, er det bedste praksis at bruge OAuth siden er mere standard, stabil og bredt accepteret.

#6. Opret en API-gateway

Generelt består mikrotjenesterne af flere komponenter fordelt over forskellige netværk og tilgængelige fra en bred vifte af systemer og klienter. Eksponering af mikrotjenester øger sårbarheder og sikkerhedsrisici. En måde at beskytte dem på er at skabe et enkelt og sikkert indgangspunkt, der hjælper dig med at centralisere al adgang fra eksterne systemer og klienter.

  Find alle tjenester, der er knyttet til din Google-konto

For at opnå dette skal du implementere en API-gateway til at screene alle indkommende anmodninger for sikkerhedsproblemer, før du dirigerer dem til de relevante mikrotjenester. API-gatewayen sidder mellem klientapplikationerne og mikrotjenesterne. Det begrænser derefter eksponeringen af ​​mikrotjenesterne, mens det giver yderligere anmodningsstyringsfunktioner såsom godkendelse, SSL-afslutning, protokoloversættelse, overvågning, anmodningsrouting, caching og mere.

Med denne tilgang dirigerer API-gatewayen alle eksterne tjenester til mikrotjenesterne, mens den også understøtter det dybtgående forsvarssikkerhedsprincip.

Microservices API-gatewaybillede Livebook

Typiske API-gateways inkluderer NGINX, Kong, Tyk, Ambassadør, AWS API-gatewayog mere.

For at lære mere om API-sikkerhed, se vores guide om hvorfor og hvordan man sikrer API-endepunkt.

#7. Profil API’er baseret på implementeringszonen

Implementer rollebaserede begrænsninger ved at sikre, at brugerne kun har adgang til de API’er og tjenester, de har brug for. Da det meste af skadelig software ofte udsætter en tjeneste for flere mennesker, reducerer begrænsning af adgangen til kun autoriserede brugere risikoen. En teknik til at reducere eksponeringen er at mærke API’erne baseret på de brugere, der skal have adgang til dem. Generelt kan API’erne være;

  • Ethernet API’er – Til tjenester, der er udsat for den eksterne verden uden for datacentret.
  • Corporate Zone API’er – disse er beregnet til den interne private trafik
  • DMZ API’er – til at håndtere den trafik, som stammer fra internettet
  • Hybrid Zone API’er – til udrulning af datacentre

#8. Sikre service-til-service-kommunikationen

Effektiv praksis involverer godkendelse og godkendelse af anmodninger, når to mikrotjenester kommunikerer.

Generelt er der tre hovedteknikker, som du kan bruge til at sikre kommunikationen mellem tjenesterne. Disse er Trust the network, JSON Web Token (JWT) og Mutual Transport Layer Security (mTLS eller Mutual TLS).

Sikring af inter-service kommunikation med JWT Image Livebook

Ud af de tre er den mest populære mTLS. I denne tilgang skal hver mikrotjeneste bære et offentligt/privat nøglepar. Klientmikrotjenesten bruger derefter nøgleparret til at autentificere sig selv over for den modtagende mikrotjeneste gennem mTLS.

Under godkendelse genererer hver mikrotjeneste et certifikat. Bagefter vil hver mikrotjeneste bruge certifikatet fra den anden til at autentificere sig selv.

Mens TLS giver integritet og fortrolighed for dataene i transit, sætter det også klienten i stand til at identificere en mikrotjeneste. Klientmikrotjenesten kender normalt den anden mikrotjeneste. Men da TLS er envejs, kan en modtagende mikroservice ikke verificere klientmikroservicen – og angribere kan udnytte denne fejl. På den anden side giver mTLS et middel, hvor hver af mikrotjenesterne kan identificere den anden.

#9. Satsgrænse 🚏 kundetrafik

Begrænsning af den eksterne trafik forhindrer problemer som denial of service (DoS)-angreb samt tilfælde, hvor nogle klienter bruger det meste af applikationens båndbredde. En tilgang er at anvende forskellige regler, der kan overvåge og kontrollere hastigheden af ​​trafik sendt eller modtaget fra en klient baseret på IP, tid osv.

  Sådan får du nyt kunstværk til dit skrivebordsbaggrund dagligt

Konfigurer dine tjenester til at sænke farten, hvis de opdager flere mislykkede loginforsøg til dine API’er eller enhver anden mistænkelig aktivitet.

Et langsomt system ville afskrække angriberne og sandsynligvis opgive deres forsøg på at få adgang til tjenesterne. Du kan rategrænse ved hjælp af API-gatewayen, gennem koden eller enhver anden teknik. Normalt har de fleste SaaS-miljøer API-hastighedsbegrænsning for at minimere misbrug fra brugere såvel som angreb.

#10. Brug orkestreringsledere

Orchestrationsadministratorerne giver dig mulighed for at automatisere konfigurationen, koordineringen og andre administrationsopgaver for mikrotjenester ud over at forbedre sikkerheden. Normalt giver værktøjerne dig mulighed for at administrere flere containere, begrænse metadataadgang, adskille arbejdsbelastninger, indsamle logfiler og mere.

Nogle orkestreringsværktøjer har yderligere funktioner, der gør det muligt for udviklerne at gemme og dele følsomme oplysninger såsom SSL-certifikater, krypteringsnøgler, adgangskoder og identitetstokens.

De to almindeligt anvendte metoder til effektiv mikroservice-orkestrering er;

  • Kodning af orkestreringen som en mikroservice
  • Brug af API-gateways til at levere et orkestreringslag

Orkestrering gennem API-gatewayen anbefales ikke på grund af udfordringer, når der er behov for at skalere tjenester.

Microservice orkestreringslag – Billede Globallogik

Typiske orkestreringsstyringsværktøjer omfatter Kubernetes, Istio, Azure Kubernetes Service (AKS)etc.

For at finde ud af mere, udforsk Container Orchestration for DeOps.

#11. Overvåg alle dine systemer og tjenester

Da mikrotjenester er afhængige af distribuerede systemer, skal du have en pålidelig og effektiv overvågningsstrategi for alle de enkelte komponenter.

Implementering af kontinuerlig overvågning giver dig mulighed for at opdage og adressere sikkerhedsrisici i god tid. Til dette er der en bred vifte af mikroservices overvågningsløsninger, bl.a Prometheus, Statsd, TilstrømningDB, Logstashetc.

Overvågning inde i mikroservicearkitekturen

Brug de relevante værktøjer til at overvåge interne systemer og tjenester. Nogle bedste praksis omfatter;

  • Aktiver logning på applikationslaget. Du kan Splunk, Graphana, ELK stakog andre værktøjer, der indsamler logfiler på applikations-, container-, netværks- og infrastrukturniveau.
  • Overvåg brugsmålingerne
  • Brug trends i metrics såsom CPU, hukommelse, svartider, fejl, meddelelser og andre til at opdage usædvanlige aktiviteter, der indikerer et eksisterende eller potentielt angreb.
  • Revider logfilerne i områder som indgående klientanmodninger, databaseregistreringer, containere og andre for at identificere uoverensstemmelser eller usædvanlige aktiviteter.

#12. Automatiser sikkerhedsaktiviteter

Automatiser sikkerhedsprocesser såsom implementering af opdateringer, sårbarhedsscanning, overvågning, håndhævelse af politikker og andre aktiviteter. Tjek desuden opdateringerne for at sikre, at de er sikre, og at de ikke introducerer nye sårbarheder.

Efter opdateringer bør sikkerhedssoftwaren ideelt set udføre test på alle containere og mikrotjenester for at se, om der kunne have været nogle sårbarheder eller sikkerhedsproblemer, der er sket før.

#13. Beskyt 🛡️ data til enhver tid

Beskyt data under transport og hvile. Ideelt set håndhæver brugen af ​​HTTPS til al kommunikation, for at sikre dataene under overførsel og kryptering af alle følsomme data i hvile. Undgå at sende og gemme almindelig tekstadgangskoder, nøgler, legitimationsoplysninger og følsomme data, der ligger uden for koden.

Den bedste strategi er at bruge standardteknologier til at kryptere alle følsomme data så tidligt som muligt. Dekrypter også dataene så sent som muligt for at reducere eksponeringen.

Konklusion

Mikrotjenester er afhængige af distribuerede komponenter for at give fordele såsom mere fleksibilitet og implementeringsmuligheder. Men når de bruger mikrotjenesterne, skal organisationer justere interne sikkerhedspolitikker og strategier mod en mere cloud-native og distribueret tilgang.

Ideelt set sigt mod at reducere angrebsoverfladen, beskytte mikroservicemiljøet, API’er, applikationer og data.