13 bästa metoder för att säkra mikrotjänster

Microservices-arkitektur ger flexibilitet, skalbarhet och möjlighet att modifiera, lägga till eller ta bort programvarukomponenter utan att påverka andra delar av applikationen.

Förutom kortare mjukvaruutvecklingscykler, mindre team och flexibla programmeringsspråksalternativ, låter det dig skala eller felsöka vissa funktioner eller tjänster utan att störa de andra komponenterna.

Generellt tillåter mikrotjänsterna att bryta upp stora monogama applikationer till oberoende distribuerbara distinkta tjänster. Dessa mindre oberoende tjänster ökar dock antalet komponenter, därav komplexiteten och svårigheten att säkra dem.

Monolitisk-vs-mikrotjänster arkitektur Bild Röd hatt

Vanligtvis kommer en typisk distribution av mikrotjänster att ha hårdvara, tjänst eller applikation, kommunikation, moln, virtualisering och orkestreringsskikt. Var och en av dessa har specifika säkerhetskrav, kontroller och utmaningar.

Säkerhetsutmaningar i samband med Microservices

Mikrotjänster är vanligtvis brett distribuerade system med komplexa åtkomstregler, mer trafik att övervaka och en större attackyta. Dessutom körs de flesta av mikrotjänsternas moln på molnmiljöer, som också har olika säkerhetskonfigurationer och kontroller.

På grund av det stora antalet API:er, portar och komponenter som är exponerade kan det hända att traditionella brandväggar inte ger tillräcklig säkerhet. Dessa problem gör implementeringar av mikrotjänster mer sårbara för olika cyberhot som mannen i mitten, injektionsattacker, cross-site scripting, DDoS och andra.

Nätverkssäkerhet är en annan utmaning med mikrotjänster. I synnerhet antar identiteten och åtkomstkontrollen en ny nivå av komplexitet. Andra sårbarheter inkluderar osäker kod och brister i system för upptäckt av tjänster.

Även om det är svårare att säkra mikrotjänster än monolitiska applikationer, kan du skydda dem effektivt genom att upprätta en bra strategi och följa bästa praxis.

Helst kräver arkitekturen ett distribuerat tillvägagångssätt som ska täcka alla olika komponenter.

Typiska områden att ta itu med inkluderar

  • Skyddar applikationer, mikrotjänster och användare
  • Säkra identitets- och åtkomsthantering
  • Skydda data
  • Förbättra tjänst-till-tjänst kommunikationssäkerhet
  • Övervakning av mikrotjänster och säkerhetssystem

Bästa metoder för att säkra mikrotjänster

En av de bästa strategierna är att använda en kombination av bästa praxis, verktyg och kontroller för att skydda hela ekosystemet. Det faktiska tillvägagångssättet kan skilja sig åt beroende på typ av tjänster, applikationer, användare, miljö och andra faktorer.

Om du bestämmer dig för att använda mikrotjänster måste du se till att du uppfyller alla säkerhetskrav för tjänsterna, anslutningarna och data.

Låt oss nu ta en titt på några effektiva säkerhetsrutiner för mikrotjänster.

#1. Bygg trygghet från början 👮

Gör säkerhet till en del av utvecklingscykeln. Integrera helst säkerhet i utvecklingen och distributionen av mikrotjänster redan från början. Att ta itu med säkerheten på det här sättet är ett enkelt, effektivt och billigare tillvägagångssätt än att vänta med att lägga till det när mjukvaruutvecklingen närmar sig sitt slut.

#2. Använd Defense in Depth Mechanism

The Defense in Depth (DiP) är en teknik där du applicerar flera säkerhetslager på dina tjänster och data. Övningen gör det svårare för angripare att penetrera genom de flera lagren, vilket ger stark säkerhet för dina tjänster och data.

Till skillnad från perimetersäkerhetslösningarna som brandväggar är konceptet Defense-in-depth annorlunda. Den förlitar sig på en kombination av verktyg som antivirus, brandvägg, patchhantering, anti-spam-programvara och andra för att tillhandahålla flera säkerhetslager fördelade över hela systemet.

Försvar för djupgående säkerhetsbild i flera lager: Imperva

Med detta tillvägagångssätt måste du först identifiera de känsliga tjänsterna, varefter du applicerar lämpliga säkerhetslager runt dem.

#3. Distribuera säkerhet på container 📦 nivå

Oftast förlitar sig mikrotjänster på containerteknik. Att säkra behållarna, både internt och externt, är därför ett sätt att minska attackytan och riskerna. Helst är det en god praxis att sikta på minsta privilegiesäkerhetsprincipen och kräver en kombination av strategier inklusive men inte begränsat till;

  • Begränsa tillstånd till det minimum som krävs
  • Undvik att köra tjänster och allt annat med sudo- eller privilegierade konton.
  • Begränsa eller kontrollera åtkomst och förbrukning av tillgängliga resurser. Att begränsa åtkomsten till operativsystemets resurser av behållarna hjälper till att förhindra datastöld eller kompromiss.
  • Förvara inte hemligheter på behållarskivan.
  • Använd lämpliga regler för att isolera åtkomst till resurserna.

Det är också viktigt att se till att behållarbilder inte har några sårbarheter eller säkerhetsproblem. En regelbunden säkerhets- och sårbarhetsskanning av behållarna hjälper till att identifiera risker.

Typiska bildskanningsverktyg inkluderar Clair, Ankareoch mer.

#4. Distribuera en multifaktorautentisering 🔒

Aktivering av multifaktorautentisering ökar säkerheten i front-end.

Användare som kommer åt måste ange sina användarnamn och lösenordsdetaljer utöver en annan form av verifiering, en kod som skickas till deras telefoner eller en specificerad e-postadress. Tekniken gör det svårare för angripare, som kan använda stulna eller hackade referenser, att komma åt mikrotjänsterna eftersom de inte kommer att ha ett sätt att tillhandahålla den andra autentiseringen.

#5. Använd användaridentitet och åtkomsttoken

Vid implementering av mikrotjänster kommer ett stort antal applikationer och tjänster att kräva säker auktorisering och åtkomstkontroll. Ett auktoriseringsramverk som OAuth 2.0 och OpenID gör det möjligt för dig att bearbeta tokens på ett säkert sätt, vilket skyddar dina mikrotjänster. Följaktligen tillåter detta tredjepartsapplikationer att komma åt andra tjänster eller data från användare.

I en typisk distribution kommer huvudapplikationen att uppmana användaren att auktorisera tredjepartstjänsten. Efter att ha accepterat detta genererar applikationen en åtkomsttoken för sessionen.

I synnerhet är OAuth en av de mest effektiva strategierna för användaridentitet och åtkomstkontroll. Även om det finns flera andra auktoriseringsprotokoll, och du också kan bygga dina egna, är det bästa praxis att använda OAuth eftersom är mer standard, stabil och allmänt accepterad.

#6. Skapa en API-gateway

Generellt består mikrotjänsterna av flera komponenter fördelade över olika nätverk och tillgängliga från ett brett utbud av system och klienter. Att exponera mikrotjänsterna ökar sårbarheter och säkerhetsrisker. Ett sätt att skydda dem är att skapa en enda och säker ingångspunkt som hjälper dig att centralisera all åtkomst från externa system och klienter.

För att uppnå detta, distribuera en API-gateway för att kontrollera alla inkommande förfrågningar för säkerhetsproblem innan du dirigerar dem till lämpliga mikrotjänster. API-gatewayen sitter mellan klientapplikationerna och mikrotjänsterna. Det begränsar sedan exponeringen av mikrotjänsterna samtidigt som det tillhandahåller ytterligare funktioner för förfrågningshantering såsom autentisering, SSL-avslutning, protokollöversättning, övervakning, förfrågningsdirigering, cachelagring och mer.

Med detta tillvägagångssätt dirigerar API-gatewayen alla externa tjänster till mikrotjänsterna samtidigt som den stöder säkerhetsprincipen för djupförsvar.

Microservices API-gatewaybild Livebook

Typiska API-gateways inkluderar NGINX, Kong, Tyk, Ambassadör, AWS API-gatewayoch mer.

För att lära dig mer om API-säkerhet, se vår guide om varför och hur man säkrar API-slutpunkt.

#7. Profil-API:er baserade på distributionszonen

Implementera rollbaserade begränsningar genom att se till att användarna bara har tillgång till de API:er och tjänster de behöver. Eftersom de flesta skadliga program ofta exponerar en tjänst för fler människor, minskar riskerna att begränsa åtkomsten till endast auktoriserade användare. En teknik för att minska exponeringen är att märka API:erna baserat på de användare som ska ha tillgång till dem. Generellt kan API:erna vara;

  • Ethernet-API:er – För tjänster exponerade för den yttre världen utanför datacentret.
  • Corporate Zone API:er – dessa är avsedda för den interna privata trafiken
  • DMZ API:er – för att hantera trafiken som kommer från internet
  • Hybrid Zone API:er – för datacenterinstallationer

#8. Säkra kommunikationen från tjänst till tjänst

Effektiva metoder innefattar autentisering och auktorisering av förfrågningar när två mikrotjänster kommunicerar.

Generellt finns det tre huvudtekniker som du kan använda för att säkra kommunikationen mellan tjänsten. Dessa är Trust the network, JSON Web Token (JWT) och Mutual Transport Layer Security (mTLS eller Mutual TLS).

Säkra kommunikation mellan tjänster med JWT Image Livebook

Av de tre är den mest populära mTLS. I detta tillvägagångssätt måste varje mikrotjänst bära ett offentligt/privat nyckelpar. Klientmikrotjänsten använder sedan nyckelparet för att autentisera sig för den mottagande mikrotjänsten genom mTLS.

Under autentiseringen genererar varje mikrotjänst ett certifikat. Efteråt kommer varje mikrotjänst att använda certifikatet från den andra för att autentisera sig.

Även om TLS tillhandahåller integritet och konfidentialitet för data under överföring, gör det också att klienten kan identifiera en mikrotjänst. Klientmikrotjänsten känner vanligtvis till den andra mikrotjänsten. Men eftersom TLS är enkelriktad kan en mottagande mikrotjänst inte verifiera klientmikrotjänsten – och angripare kan utnyttja denna brist. Å andra sidan tillhandahåller mTLS ett medel där var och en av mikrotjänsterna kan identifiera den andra.

#9. Prisgräns 🚏 kundtrafik

Begränsning av den externa trafiken förhindrar problem som överbelastningsattacker (DoS) såväl som fall där vissa klienter förbrukar det mesta av applikationens bandbredd. Ett tillvägagångssätt är att tillämpa olika regler som kan övervaka och kontrollera hastigheten för trafik som skickas eller tas emot från en klient baserat på IP, tid, etc.

Konfigurera dina tjänster för att sakta ner om de upptäcker flera misslyckade inloggningsförsök till dina API:er eller någon annan misstänkt aktivitet.

Ett långsamt system skulle avskräcka angriparna och förmodligen ge upp sitt försök att komma åt tjänsterna. Du kan betygsätta gränsen med API-gatewayen, genom koden eller någon annan teknik. Vanligtvis har de flesta SaaS-miljöer API-hastighetsbegränsningar för att minimera missbruk av användare såväl som attacker.

#10. Använd orkestreringsledare

Med orkestreringshanterarna kan du automatisera konfigurationen, koordineringen och andra hanteringsuppgifter för mikrotjänster förutom att förbättra säkerheten. Vanligtvis gör verktygen att du kan hantera flera behållare, begränsa metadataåtkomst, separera arbetsbelastningar, samla in loggar och mer.

Vissa orkestreringsverktyg har ytterligare funktioner som gör det möjligt för utvecklarna att lagra och dela känslig information som SSL-certifikat, krypteringsnycklar, lösenord och identitetstokens.

De två vanligaste metoderna för effektiv mikroserviceorkestrering är;

  • Koda orkestreringen som en mikrotjänst
  • Använda API-gateways för att tillhandahålla ett orkestreringslager

Orkestrering genom API-gatewayen rekommenderas inte på grund av utmaningar när det finns ett behov av att skala tjänster.

Microservice orkestreringslager – Bild Globallogik

Typiska verktyg för orkestreringshantering inkluderar Kubernetes, Istio, Azure Kubernetes Service (AKS)etc.

Om du vill veta mer kan du utforska Container Orchestration for DeOps.

#11. Övervaka alla dina system och tjänster

Eftersom mikrotjänster är beroende av distribuerade system måste du ha en pålitlig och effektiv övervakningsstrategi för alla enskilda komponenter.

Genom att implementera kontinuerlig övervakning kan du upptäcka och hantera säkerhetsrisker i god tid. Mot detta finns ett brett utbud av övervakningslösningar för mikrotjänster, inklusive Prometheus, Statsd, InfluxDB, Logstashetc.

Övervakning inuti mikrotjänsters arkitektur

Använd lämpliga verktyg för att övervaka interna system och tjänster. Några bästa metoder inkluderar;

  • Aktivera loggning i applikationslagret. Du kan Splunk, Graphana, ELK stackoch andra verktyg som samlar in loggar på applikations-, container-, nätverks- och infrastrukturnivå.
  • Övervaka användningsstatistiken
  • Använd trenderna i mätvärden som CPU, minne, svarstider, fel, aviseringar och annat för att upptäcka ovanliga aktiviteter som tyder på en befintlig eller potentiell attack.
  • Granska loggarna i områden som inkommande kundförfrågningar, databasposter, behållare och andra för att identifiera inkonsekvenser eller ovanliga aktiviteter.

#12. Automatisera säkerhetsaktiviteter

Automatisera säkerhetsprocesser som distribution av uppdateringar, sårbarhetssökning, övervakning, upprätthållande av policyer och andra aktiviteter. Kontrollera dessutom uppdateringarna för att säkerställa att de är säkra och att de inte introducerar nya sårbarheter.

Efter uppdateringar bör säkerhetsprogramvaran helst utföra tester på alla behållare och mikrotjänster för att se om det kan ha funnits några sårbarheter eller säkerhetsproblem som hänt tidigare.

#13. Skydda 🛡️ data hela tiden

Skydda data under transport och vila. Upprätthåll helst användningen av HTTPS för all kommunikation, för att säkra data under överföring och kryptering av all känslig data i vila. Undvik att överföra och lagra oformaterade lösenord, nycklar, autentiseringsuppgifter och känslig data som finns utanför koden.

Den bästa strategin är att använda standardteknik för att kryptera all känslig data så tidigt som möjligt. Dekryptera också data så sent som möjligt för att minska exponeringen.

Slutsats

Mikrotjänster förlitar sig på distribuerade komponenter för att ge fördelar som mer flexibilitet och distributionsalternativ. Men när de använder mikrotjänsterna måste organisationer anpassa interna säkerhetspolicyer och strategier mot ett mer molnbaserat och distribuerat tillvägagångssätt.

Sikta helst på att minska attackytan, skydda mikrotjänstmiljön, API:er, applikationer och data.