9 beste fremgangsmåter for containersikkerhet i DevOps

Beholdere i DevOps er ikke et nytt konsept. De er virtuelle sandkasser med alle nødvendige verktøy for å kjøre mikrotjenester, inkludert store applikasjoner.

Du kan tenke på containere som pakkesystemer som lar deg (som utvikler) lagre alt du trenger for å kjøre en applikasjon, for eksempel kjøretider og binære koder, fra et sentralisert punkt.

Beholdere hjelper utviklere med å flytte applikasjoner fra ett miljø til et annet (som å sende en app fra en lokal maskin til et virtuelt miljø eller flytte den fra start- til produksjonsstadiet), og eliminerer alle problemer knyttet til forskjellige programvare- og konfigurasjonsinnstillinger i utviklere og produksjon slutt.

Statistas Rapport om containerteknologi viser at 50 % av klodens organisasjoner har tatt i bruk containerorkestrering. Selv om denne teknologien har økt bruken basert på fordelene, kan containere åpne en gateway for cybersikkerhetsangrep hvis de ikke blir merket.

CVE-detaljerden typiske sikkerhetssårbarhetsdatakilden, har registrert 62 Docker-tilpassede sårbarheter når dette skrives. Krever ikke dette beste utviklerpraksis for å håndtere disse fallgruvene og sikre beholdere for vellykkede DevOps-prosesser?

Dette innlegget bryter ned konseptet med containersikkerhet, fremhever noen få utfordringer og veileder deg om beste praksis for bruk når du bruker containerteknologi.

Hva er Container Security?

Containersikkerhet er en kontinuerlig prosess som bruker sikkerhetsprotokoller (verktøy og retningslinjer) for å beskytte containere og deres miljøer mot potensielle trusler.

Hvis det ikke er merket av, kan truslene blant annet skade applikasjonen din, dens infrastruktur, kjøretider, systembiblioteker, operativsystem og kjerne.

Tatt i betraktning at containere er tilgjengelige i transienter (øyeblikk) og også er ment for dynamiske distribusjoner og skalering, er det behov for automatisert sikkerhet og hvert trinn i programvareutviklingens livssyklus (SDLC).

Les også: Introduksjon til Kubernetes Kops for nybegynnere

Hva er utfordringene i containersikkerhet?

Selv om containere har mange belønninger (som å øke hastigheten på programvarelevering), er de ikke immune mot utfordringer, hovedsakelig fordi de trenger sikkerhetstiltak (de mangler selvsikkerhetsevner).

Dette er fordi containere får tilgang til maskinvare gjennom et vertsbasert operativsystem (OS). Det betyr at en enkelt container kan ha flere underliggende containerbilder, noe som introduserer et bredere spekter for angrepsflater, noe som gir noen utfordringer.

Den første er feil beholderkonfigurasjon, der utviklere glemmer å tilpasse og bruke standard beholderkonfigurasjoner som har noen fallgruver som noen utsatte, usikre porter som kanskje ikke er ideelle for applikasjonen din, lekket legitimasjon som passord og autentiseringstokener, og overdreven utstedelse av tillatelse til container kjøretider (når den kjøres som root). Når de ikke overstyres, gir disse standardkonfigurasjonene muligheter for angrep.

Neste er containerinfrastruktursårbarhet. Her introduserer pakker innebygd i beholderen, som applikasjonskode, biblioteker og konfigurasjoner, eller de på vertsoperativsystemet, sårbarheter. Følsomhet kan introduseres i alle stadier av en applikasjons livssyklus, for eksempel når eksterne avhengigheter bygges inn i et containerbilde, installeres åpen kildekodebiblioteker som en del av applikasjonen, containerbasebilder som kommer fra tredjeparts containerregistre og verter som kan utnyttes gjennom nettverk og endepunkter.

  Reparer apper som ikke fungerer på Roku TV

Synlighet i containerarbeidsmengder er blant de største containerutfordringene. Dette skyldes den svært dynamiske naturen til containere som gjør at overvåkingsverktøy ikke kan finne hvilke containere som kjører og inspisere nettverksatferden deres. Forbedret synlighet forhindrer brudd og forbedrer responstiden hvis noen skjer.

I tillegg er beholderen mottakelig hvis noen fase av CI/CD-rørledningen er usikker, enten på applikasjonskoden eller infrastrukturen for beholderarbeidsbelastning. Selv om det er for utviklere å ta tak i sikkerheten på slutten av en applikasjons livssyklus, beskytter administrasjonen av den på hvert trinn i utviklingen appene dine mot dette tilbakeslaget.

Hvilke verktøy kan løse utfordringer i containersikkerhet?

Du kan sikre at de distribuerte bedriftsløsningene dine er trygge ved å innføre containersikkerhet og integritet ved hjelp av sikkerhetsverktøy. Disse verktøyene søker etter sårbarheter og overvåker dem kontinuerlig for angrep, feil eller andre problemer.

Enten du søker etter åpen kildekode container sikkerhetsverktøy eller en kommersialisert type, vil alle tjene samme formål. De opererer alle ved å revidere containerinfrastrukturen din og kjøre mot vanlige sårbarheter og eksponeringer (CVEer).

Her er noen verktøy du kan prøve: Pingsafe Editors Choice, Datadog Cloud SIEM, Anchore, Sophos Cloud-Native Security, Bitdefender GravityZone, Sysdig secure, Aqua Security og RedHat Advanced Cluster Security for Kubernetes.

Les også: 11 containersikkerhetsskannere for å finne sårbarheter

De beste fremgangsmåtene for containersikkerhet

Til tross for utfordringene ovenfor innen containersikkerhet, er her en oversikt over de beste konvensjonene du kan implementere for å optimalisere containersikkerheten i alle stadier av applikasjonens livssyklus.

Sikring av bildene dine

Du bruker containerbilder til å lage containere. Den minste feilkonfigurasjon eller ondsinnede handlinger kan utløse sårbarheter i beholdere under produksjon. Du kan motvirke dette ved å:

  • Bruk av pålitelige bilder – Når du ikke lager bildene dine fra bunnen av, vil du alltid velge å jobbe med bilder fra pålitelige kilder. Offentlige depoter som Docker Hub har bilder, inkludert de med skadelig programvare og feilkonfigurasjon.
  • Inkludert kun de nødvendige komponentene – Hvis det er komponenter som applikasjonen din ikke trenger, er det best å fjerne dem. For eksempel presenterer UNIX-systemet naturlig «awk» og «sed» binærfiler.
  • Inkludere applikasjonen din i beholderbildet – Et beholderbilde kobler til et undersett av operativsystemet (OS) og applikasjonen som kjører. For hvert verktøy og bibliotek som trekkes inn i beholderen, er det en potensiell trussel. Det vil være best å inkludere applikasjonen i beholderbildet for å løse dette. Dette gjøres gjennom en statisk kompilert binær med alle nødvendige avhengigheter.

Automatisering av skanninger for sårbarhet og administrasjon

Regelmessig sårbarhetsskanning og administrasjon av beholderen og vertene hjelper til med å oppdage sårbarheter på ethvert stadium i applikasjonens livssyklus.

I dette tilfellet kan du vedta kodeskanning for å oppdage feil og statisk applikasjonssikkerhetstesting (SAST) for å finne sårbarheter i applikasjonskoden din. En programvaresammensetningsanalyse (SCA) kan gi innsyn i programvarekomponenter med åpen kildekode som genererer en programvareliste som kan kryssreferanser mot dokumenterte sårbarheter med åpen kildekode.

  13 beste følgebrevskapere for din neste jobbsøknad

I tillegg analyserer bildeskanning innholdet og oppbyggingsprosessen for beholderbilde for mottakelighet. Med verktøy som Clair, kan du skanne etter kjente sårbarheter. Alternativt kan du bruke dynamisk applikasjonssikkerhetstesting (DAST), som påpeker sikkerhetsrisikoer basert på containeratferd. DAST-verktøy kan også utføre vertsskanning, der du inspiserer containervertskomponenter (vertskjerne og OS) for feilkonfigurasjon.

Mens de ovennevnte tiltakene tas i bruk i den pågående prosessen med en containerlivssyklus, kan du omfavne «skift venstre»-filosofien. Det betyr å implementere sikkerhet helt fra starten av utviklingslivssyklusen din. Et godt verktøy hvis du velger denne tilnærmingen er Trivy.

Sikring av containerregistre

Beholderregistre er en effektiv sentralisert måte å lagre bilder og distribuere dem på. Ofte vil organisasjoner ha tusenvis av bilder lagret i offentlige eller private registre. Det er flere tiltak for å sikre at alle teammedlemmer og samarbeidspartnere bruker sårbarhetsfrie bilder.

Først, implementering av en brukertilgangskontroll (for private registre) fastslår hvem som kan publisere og få tilgang til bilder. Selv om dette er et grunnleggende sikkerhetstiltak, forhindrer det uautoriserte personer i å publisere, endre eller slette bildene dine.

Det neste tiltaket er å signere bildene dine som knytter hvert bilde til personen som signerte det, noe som gjør det vanskelig å erstatte et bilde med et kompromittert. Du kan bruke Docker Content Trust teknikker for å legge til digitale signaturer til data som sendes og mottas fra registre. Til slutt, husk at skanning av bildene dine (kontinuerlig) hjelper til med å oppdage kritiske sårbarheter.

Overvåking av containere

Du kan optimalisere synligheten til containerarbeidsbelastninger gjennom observerbarhetsverktøy. Verktøyene skal kunne overvåke og teste for sårbarheter i alle komponenter og muliggjøre sanntidslogging for de containeriserte miljøene.

Observerbarhetsverktøy oppdager trusler ved å overvåke beregninger og logger fra alle komponentene i containerstabelen og analysere dem for unormalt. Med denne tilnærmingen er du i stand til å rette opp feilkonfigurasjoner umiddelbart når de er identifisert.

For å samle ressursbruksberegninger, bruk verktøy som cAdvisor eller kube-state-metrics. For å overvåke containernes aktivitet og ytelsen til klyngene dine, bruk verktøy som Grafana eller Prometheus.

Hvis du vil analysere nettverkstrafikk mellom containere, bruk Wireshark eller tcpdump. Hvis du bruker administrert Kubernetes-tjeneste som (AKS), bruk Azure Monitor for å spore ressurser og sikkerhetstrusler.

I tillegg kan Azure Log Analytics samle inn og analysere AKS-ressursene dine. Hvis du velger Amazon EKS, er Amazon CloudTrail bra for å logge og se på; bruk Amazon Cloud Watch.

Implementering av nettverkssikkerhet

Kontrolltiltak for nettverkssikkerhet kan bidra til å beskytte mot uautorisert containertilgang. Kriteriet som brukes her er nettverkssegmentering som isolerer containere, og begrenser dem til kun å få tilgang til nødvendige tjenester.

Hvis du kjører containeriserte applikasjoner på Kubernetes, kan du bruke K8s nettverkspolicyer til å konfigurere innkommende og utgående pod-trafikk i klynger. Dette begrenser igjen trafikken til spesifikke pods basert på etiketter.

Transportlagsikkerheten (TLS) kan utvides for podkommunikasjon. Du kan velge enten TLS eller SSL-teknikkene (Secure Sockets Layer) for sikker kommunikasjon mellom API-serveren og andre komponenter. Lastbalansere er en god løsning hvis du også ønsker å begrense trafikkinngangen til klyngene dine.

  Hvordan skjermopptak på Mac

Hvis klyngene dine har mikrotjenester, kan du sikre sikker trafikk gjennom tjenestemesh-verktøy som Meshery eller Linkerd. Til slutt, sikre nettverket ditt hvis du bruker en skyleverandør til å være vert for klynger.

Hvis du bruker Azure Kubernetes Service (AKS), bruk nettverkssikkerhetsgrupper (NSGer) for trafikkadministrasjon. Hvis du bruker Amazon Elastic Kubernetes Service (EKS), vil det best passe Amazon Virtual Private Cloud (VPC) sikkerhetsgrupper.

Redusere overflateangrep

Å minimere overflaten av angrep har to fordeler; økt hastighet på tjenesten og redusere potensialet for sikkerhetsbrudd.

Ved å bruke en flertrinnsbygging kan du lage lette bilder med et lite overflateangrep og forbedret oppstartstid og ytelse. Det finnes flere løsninger for å gjøre dette. Hvis du bruker Linux, kan du bruke Alpine Linux, BusyBox eller Tiny Core Linux.

For Ubuntu er det Ubuntu Minimal. Du kan også bruke Scratch, et spesielt Docker-bilde – egentlig en åpen beholder, for å bygge minimalistiske bilder fra starten av.

Begrensning av containerprivilegier

Prinsippet som brukes her innebærer å gi minimumstillatelse til å utføre en gitt oppgave. Når containere kjøres som root, gir de en bruker forskjellige operasjonsprivilegier som å installere pakker eller lese-skrive-operasjonskraft på operativsystemet ditt.

Risikoen er at angripere kan utnytte eskaleringen av kraft til beholderens kjøretid hvis de blir kompromittert. Når det er tilfelle, er det to levedyktige løsninger. Du kan kjøre containere i rotløs modus eller begrense LINUX-kjernens evner til bare de som trengs for containerarbeidsbelastning.

Håndtere hemmeligheter trygt

Konfigurasjonsfilene for container og docker skal være fri for hemmeligheter. Hemmeligheter inkluderer sertifikater, passord, applikasjonsprogramgrensesnitt (API)-nøkler og tokens. Og selv om dette er den beste praksisen, vil du ofte se disse hemmelighetene hardkodet inn i byggeprosessen eller kildekodebilder.

I slike tilfeller kommer sensitive data inn i containere og bufres i mellomliggende containerlag selv når containere er fjernet. For slike tilfeller er den beste tilnærmingen å distribuere en hemmelighetsadministrasjonsløsning som AWS Secrets Manager og Hvelv å lagre og administrere hemmelig legitimasjon.

Styrk teamet ditt

Som det siste av sikkerhetstiltakene er det avgjørende å lære teamet ditt om de beste sikkerhetspraksisene. Dette betyr at alle lagspillerne dine kan identifisere og svare på sikkerhetstrusler.

En god måte å gjennomføre dette på er ved å legge til containersikkerhet til teamets ombordstigningsprosesser. Ved å tilby praktisk opplæring, kontinuerlig læring og regelmessige sikkerhetsvurderinger skiller DevOps-teamet ditt ved å utstyre dem med oppdaterte sikkerhetstrender.

Siste tanker

Containersikkerhet er en avgjørende kontinuerlig prosess i programvareutviklingens livssyklus. Den beste tilnærmingen til denne spørringen er å inkludere sikkerhet rett fra applikasjonskoden til beholderens kjøretid, vertsoperativsystemet og den underliggende nettverksinfrastrukturen.

Du kan innse dette ved å følge en strategisk plan som involverer verifisering av beholdere og kun bruke de fra pålitelige kilder. Foreta beholderherding for å sikre at de kun har de nødvendige tjenestene i seg. Innfør loggingsmetoder som enkelt kan implementeres gjennom overvåkingsverktøy. Segmenter nettverket ditt slik at containere er atskilt fra den generelle infrastrukturen.

Signer alltid bildene dine for å validere inndata og utdata gjennom tjenestene dine. I tillegg bør du ha regelmessige skanninger og penetrasjonstester for å se etter eventuelle sårbarheter og iverksette korrigerende tiltak umiddelbart. Og etter hvert som teknologilandskapet utvikler seg, hold deg alltid oppdatert med den nyeste sikkerhetspraksisen.

Deretter kan du sjekke ut hvordan du automatiserer sikkerhet.