13 beste fremgangsmåter for å sikre mikrotjenester

Microservices-arkitektur gir fleksibilitet, skalerbarhet og muligheten til å endre, legge til eller fjerne programvarekomponenter uten å påvirke andre deler av applikasjonen.

I tillegg til kortere programvareutviklingssykluser, mindre team og fleksible programmeringsspråkalternativer, lar den deg skalere eller feilsøke visse funksjoner eller tjenester uten å forstyrre de andre komponentene.

Vanligvis tillater mikrotjenestene å dele opp store monogame applikasjoner i uavhengig distribuerbare distinkte tjenester. Disse mindre uavhengige tjenestene øker imidlertid antallet komponenter, derav kompleksiteten og vanskeligheten med å sikre dem.

Monolitisk-vs-mikrotjenester arkitektur Bilde Rød hatt

Vanligvis vil en typisk mikrotjenester-distribusjon ha lag med maskinvare, tjeneste eller applikasjon, kommunikasjon, sky, virtualisering og orkestrering. Hver av disse har spesifikke sikkerhetskrav, kontroller og utfordringer.

Sikkerhetsutfordringer knyttet til Microservices

Mikrotjenester er vanligvis vidt distribuerte systemer med komplekse tilgangsregler, mer trafikk å overvåke og en større angrepsflate. I tillegg kjører de fleste mikrotjenester i skyen på skymiljøer, som også har varierende sikkerhetskonfigurasjoner og kontroller.

På grunn av det store antallet APIer, porter og komponenter som er utsatt, kan det hende at tradisjonelle brannmurer ikke gir tilstrekkelig sikkerhet. Disse problemene gjør distribusjoner av mikrotjenester mer sårbare for ulike cybertrusler som mannen i midten, injeksjonsangrep, skripting på tvers av nettsteder, DDoS og andre.

Nettverkssikkerhet er en annen utfordring med mikrotjenester. Spesielt antar identiteten og tilgangskontrollen et nytt nivå av kompleksitet. Andre sårbarheter inkluderer usikker kode og feil i tjenesteoppdagelsessystemene.

Selv om det er vanskeligere å sikre mikrotjenester enn monolittiske applikasjoner, kan du beskytte dem effektivt ved å etablere en god strategi og følge beste praksis.

Ideelt sett krever arkitekturen en distribuert tilnærming som skal dekke alle de forskjellige komponentene.

Typiske områder å ta tak i inkluderer

  • Beskyttelse av applikasjoner, mikrotjenester og brukere
  • Sikring av identitets- og tilgangsadministrasjon
  • Beskytter data
  • Forbedre tjeneste-til-tjeneste kommunikasjonssikkerhet
  • Overvåking av mikrotjenester og sikkerhetssystemer

Beste praksis for å sikre mikrotjenester

En av de beste strategiene er å bruke en kombinasjon av beste praksis, verktøy og kontroller for å beskytte hele økosystemet. Den faktiske tilnærmingen kan variere avhengig av typen tjenester, applikasjoner, brukere, miljøfaktorer og andre faktorer.

Hvis du bestemmer deg for å bruke mikrotjenester, må du sørge for at du oppfyller alle sikkerhetskravene for tjenestene, tilkoblingene og dataene.

La oss nå se på noen effektive sikkerhetspraksis for mikrotjenester.

#1. Bygg sikkerhet fra starten 👮

Gjør sikkerhet til en del av utviklingssyklusen. Ideelt sett bør du integrere sikkerhet i utviklingen og distribusjonen av mikrotjenester helt fra starten. Å adressere sikkerhet på denne måten er en enkel, effektiv og billigere tilnærming enn å vente med å legge den til når programvareutviklingen nærmer seg ferdigstillelse.

  Skjul/Vis Spotlight-søk fra menylinjen i OS X

#2. Bruk dybdeforsvarsmekanisme

The Defense in Depth (DiP) er en teknikk der du bruker flere sikkerhetslag på dine tjenester og data. Praksisen gjør det vanskeligere for angripere å trenge gjennom de flere lagene, og gir derfor sterk sikkerhet for tjenestene og dataene dine.

I motsetning til perimetersikkerhetsløsningene som brannmurene, er Defence-in-depth-konseptet annerledes. Den er avhengig av en kombinasjon av verktøy som antivirus, brannmur, patchadministrasjon, anti-spam-programvare og andre for å gi flere sikkerhetslag fordelt over hele systemet.

Forsvar i dybden flerlags sikkerhet Bilde: Imperva

Med denne tilnærmingen må du først identifisere de sensitive tjenestene, hvoretter du bruker de riktige sikkerhetslagene rundt dem.

#3. Distribuer sikkerhet på container 📦-nivå

Oftest er mikrotjenester avhengige av containerteknologi. Som sådan er sikring av containerne, både internt og eksternt, en måte å redusere angrepsflaten og risikoen på. Ideelt sett er det en god praksis å sikte mot minste privilegerte sikkerhetsprinsippet og krever en kombinasjon av strategier inkludert, men ikke begrenset til;

  • Begrens tillatelsen til det minimum som kreves
  • Unngå å kjøre tjenester og alt annet ved å bruke sudo- eller privilegerte kontoer.
  • Begrens eller kontroller tilgang og forbruk av tilgjengelige ressurser. For eksempel hjelper det å begrense tilgangen til operativsystemressursene av beholderne til å forhindre datatyveri eller kompromittering.
  • Ikke lagre hemmeligheter på containerdisken.
  • Bruk passende regler for å isolere tilgang til ressursene.

Det er også viktig å sikre at containerbilder ikke har noen sårbarheter eller sikkerhetsproblemer. En regelmessig sikkerhets- og sårbarhetsskanning av containerne vil bidra til å identifisere risikoer.

Typiske bildeskanningsverktøy inkluderer Clair, Ankerog mer.

#4. Implementer en multifaktorautentisering 🔒

Aktivering av multifaktorautentisering øker sikkerheten til front-end.

Brukere som får tilgang, må oppgi brukernavn og passorddetaljer i tillegg til en annen form for bekreftelse, for eksempel en kode sendt til telefonene deres eller en spesifisert e-postadresse. Teknikken gjør det vanskeligere for angripere, som kan bruke stjålet eller hacket legitimasjon, å få tilgang til mikrotjenestene siden de ikke har en måte å gi den andre autentiseringen.

#5. Bruk brukeridentitet og tilgangstokener

Ved distribusjon av mikrotjenester vil et stort antall applikasjoner og tjenester kreve sikker autorisasjon og tilgangskontroll. Et autorisasjonsrammeverk som OAuth 2.0 og OpenID lar deg behandle tokens på en sikker måte, og beskytter dermed mikrotjenestene dine. Følgelig lar dette tredjepartsapplikasjoner få tilgang til andre tjenester eller data fra brukere.

I en typisk distribusjon vil hovedapplikasjonen be brukeren om å autorisere tredjepartstjenesten. Når du godtar dette, genererer applikasjonen et tilgangstoken for økten.

Spesielt er OAuth en av de mest effektive strategiene for brukeridentitet og tilgangskontroll. Selv om det finnes flere andre autorisasjonsprotokoller, og du også kan bygge din egen, er det beste praksis å bruke OAuth siden er mer standard, stabil og allment akseptert.

#6. Opprett en API-gateway

Vanligvis består mikrotjenestene av flere komponenter distribuert over ulike nettverk og tilgjengelig fra et bredt spekter av systemer og klienter. Å avsløre mikrotjenestene øker sårbarheter og sikkerhetsrisikoer. En måte å beskytte dem på er å lage et enkelt og sikkert inngangspunkt som hjelper deg med å sentralisere all tilgang fra eksterne systemer og klienter.

  Nei, du trenger ikke avinstallere VLC

For å oppnå dette, distribuer en API-gateway for å screene alle innkommende forespørsler for sikkerhetsproblemer før du dirigerer dem til de aktuelle mikrotjenestene. API-porten sitter mellom klientapplikasjonene og mikrotjenestene. Den begrenser deretter eksponeringen av mikrotjenestene samtidig som den gir ytterligere forespørselsadministrasjonsfunksjoner som autentisering, SSL-avslutning, protokolloversettelse, overvåking, forespørselsruting, hurtigbufring og mer.

Med denne tilnærmingen ruter API-gatewayen alle eksterne tjenester til mikrotjenestene samtidig som den støtter sikkerhetsprinsippet for dybdeforsvar.

Microservices API-gatewaybilde Livebook

Typiske API-gatewayer inkluderer NGINX, Kong, Tyk, Ambassadør, AWS API-gatewayog mer.

For å lære mer om API-sikkerhet, sjekk veiledningen vår om hvorfor og hvordan sikre API-endepunkt.

#7. Profil APIer basert på distribusjonssonen

Implementer rollebaserte begrensninger ved å sikre at brukerne kun har tilgang til API-ene og tjenestene de trenger. Siden det meste av skadelig programvare ofte utsetter en tjeneste for flere mennesker, reduserer risikoen ved å begrense tilgangen til kun autoriserte brukere. En teknikk for å redusere eksponeringen er å merke API-ene basert på brukerne som skal ha tilgang til dem. Generelt kan API-ene være;

  • Ethernet APIer – For tjenester som er eksponert for den ytre verden utenfor datasenteret.
  • Corporate Zone APIer – disse er ment for intern privat trafikk
  • DMZ APIer – for å håndtere trafikken som kommer fra internett
  • Hybrid Zone API-er – for distribusjon av datasentre

#8. Sikre tjeneste-til-tjeneste-kommunikasjonen

Effektiv praksis involverer autentisering og autorisering av forespørsler når to mikrotjenester kommuniserer.

Generelt er det tre hovedteknikker du kan bruke for å sikre kommunikasjonen mellom tjenestene. Dette er Trust the network, JSON Web Token (JWT) og Mutual Transport Layer Security (mTLS, eller Mutual TLS).

Sikring av kommunikasjon mellom tjenestene med JWT Image Livebook

Av de tre er den mest populære mTLS. I denne tilnærmingen må hver mikrotjeneste ha et offentlig/privat nøkkelpar. Klientmikrotjenesten bruker deretter nøkkelparet for å autentisere seg selv til den mottakende mikrotjenesten gjennom mTLS.

Under autentisering genererer hver mikrotjeneste et sertifikat. Etterpå vil hver mikrotjeneste bruke sertifikatet fra den andre for å autentisere seg selv.

Mens TLS gir integritet og konfidensialitet for dataene som sendes, gjør det også klienten i stand til å identifisere en mikrotjeneste. Klientmikrotjenesten kjenner vanligvis den andre mikrotjenesten. Men siden TLS er enveis, kan ikke en mottakende mikrotjeneste verifisere klientmikrotjenesten, og angripere kan utnytte denne feilen. På den annen side gir mTLS et middel der hver av mikrotjenestene kan identifisere den andre.

#9. Satsgrense 🚏 kundetrafikk

Begrensning av ekstern trafikk forhindrer problemer som tjenestenekt-angrep (DoS) så vel som tilfeller der noen klienter bruker mesteparten av applikasjonens båndbredde. En tilnærming er å bruke ulike regler som kan overvåke og kontrollere hastigheten på trafikk som sendes eller mottas fra en klient basert på IP, tid osv.

  14 beste verktøy for test av internetthastighet for å sjekke Wi-Fi og mobil båndbredde

Konfigurer tjenestene dine til å redusere hastigheten hvis de oppdager flere mislykkede påloggingsforsøk til API-ene dine eller annen mistenkelig aktivitet.

Et tregt system ville ta motet fra angriperne og sannsynligvis gi opp forsøket på å få tilgang til tjenestene. Du kan rategrense ved å bruke API-gatewayen, gjennom koden eller en hvilken som helst annen teknikk. Vanligvis har de fleste SaaS-miljøene API-hastighetsbegrensning for å minimere misbruk av brukere så vel som angrep.

#10. Bruk orkestreringsledere

Orkestrasjonslederne lar deg automatisere konfigurasjons-, koordinerings- og andre administrasjonsoppgaver for mikrotjenester i tillegg til å forbedre sikkerheten. Vanligvis lar verktøyene deg administrere flere beholdere, begrense metadatatilgang, adskille arbeidsbelastninger, samle inn logger og mer.

Noen orkestreringsverktøy har tilleggsfunksjoner som gjør det mulig for utviklerne å lagre og dele sensitiv informasjon som SSL-sertifikater, krypteringsnøkler, passord og identitetstokener.

De to mest brukte metodene for effektiv mikroservice-orkestrering er;

  • Koding av orkestreringen som en mikrotjeneste
  • Bruk av API-portene for å gi et orkestreringslag

Orkestrering gjennom API-gatewayen anbefales ikke på grunn av utfordringer når det er behov for å skalere tjenester.

Microservice orkestreringslag – Bilde Globallogic

Typiske styringsverktøy for orkestrering inkluderer Kubernetes, Istio, Azure Kubernetes Service (AKS)etc.

For å finne ut mer, utforsk Container Orchestration for DeOps.

#11. Overvåk alle dine systemer og tjenester

Siden mikrotjenester er avhengige av distribuerte systemer, må du ha en pålitelig og effektiv overvåkingsstrategi for alle de enkelte komponentene.

Ved å implementere kontinuerlig overvåking kan du oppdage og adressere sikkerhetsrisikoer i god tid. Mot dette finnes det et bredt spekter av mikrotjenester overvåkingsløsninger, inkludert Prometheus, Statsd, InfluxDB, Logstashetc.

Overvåking inne i mikrotjenester-arkitekturen

Bruk passende verktøy for å overvåke interne systemer og tjenester. Noen beste fremgangsmåter inkluderer;

  • Aktiver logging på applikasjonslaget. Du kan Splunk, Graphana, ELK stabelog andre verktøy som samler inn logger på applikasjons-, container-, nettverks- og infrastrukturnivå.
  • Overvåk bruksberegningene
  • Bruk trendene i beregninger som CPU, minne, responstider, feil, varsler og andre for å oppdage uvanlige aktiviteter som indikerer et eksisterende eller potensielt angrep.
  • Revider loggene i områder som innkommende klientforespørsler, databaseposter, containere og andre for å identifisere inkonsekvenser eller uvanlige aktiviteter.

#12. Automatiser sikkerhetsaktiviteter

Automatiser sikkerhetsprosesser som distribusjon av oppdateringer, sårbarhetsskanning, overvåking, håndheving av retningslinjer og andre aktiviteter. Sjekk i tillegg oppdateringene for å sikre at de er sikre og at de ikke introduserer nye sårbarheter.

Etter oppdateringer bør sikkerhetsprogramvaren ideelt sett utføre tester på alle beholdere og mikrotjenester for å se om det kan ha vært noen sårbarheter eller sikkerhetsproblemer som har skjedd før.

#1. 3. Beskytt 🛡️ data til enhver tid

Beskytt data under transport og hvile. Ideelt sett håndheves bruken av HTTPS for all kommunikasjon, for å sikre dataene under overføring, og kryptering for alle sensitive data i hvile. Unngå å overføre og lagre ren tekstpassord, nøkler, legitimasjon og sensitive data som ligger utenfor koden.

Den beste strategien er å bruke standardteknologier for å kryptere alle sensitive data så tidlig som mulig. Dekrypter også dataene så sent som mulig for å redusere eksponeringen.

Konklusjon

Mikrotjenester er avhengige av distribuerte komponenter for å gi fordeler som mer fleksibilitet og distribusjonsalternativer. Men når de bruker mikrotjenestene, må organisasjoner justere interne sikkerhetspolicyer og strategier mot en mer skybasert og distribuert tilnærming.

Ideelt sett sikte på å redusere angrepsoverflaten, beskytte mikrotjenestemiljøet, APIer, applikasjoner og data.