Den enkleste måten å finne sårbarheter i Docker-bilder ved hjelp av Snyk

Snyk er en redaktør som spesialiserer seg på å analysere sårbarheter i koden for infrastrukturkonfigurasjonsfiler, inkludert de som finnes i containere og applikasjonspakker.

Snyk tilbyr en skyplattform først, men den tilbyr ulike produkter.

Snyk OpenSource integreres gjennom redaktørens CLI i en Git-flyt. Når den er lansert, oppdager programvaren sårbarheter, klassifiserer dem etter grad av sensitivitet og korrigerer automatisk kjente sikkerhetsfeil. Denne funksjonaliteten kan inkorporeres i pull request-syklusen for å gjelde kode sendt til repositories.

Snyk Infrastructure as Code, derimot, analyserer sårbarhetene og fikser dem i JSON- og YAML Kubernetes-konfigurasjonsfilene. Her lar en regelmotor deg konfigurere sensitiviteten til deteksjoner i Git-repositories i henhold til parametrene bestemt av administratorene.

Snyk Container lar deg teste docker-bilder og tilhørende registre på tidspunktet for opprettelsen og etterpå. Programmet kan integreres i CLI-er, SCM-er, CI-verktøy, containerregistre og Kubernetes.

I dag skal vi se hvordan vi kan bruke Snyk Container, som kommer innebygd med Docker for å oppdage sårbarheter.

Eksempel på docker-fil

Det første du trenger for å bruke Snyk til å oppdage sårbarheter er et docker-bilde. I dette eksemplet vil vi bruke følgende docker-bilde:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

Det første vi må gjøre er å generere bildet lokalt gjennom følgende kommando:

docker build -t 0xyz0/python-app.

Nå har vi et bilde å analysere.

  3 beste JavaScript-rammeverk/bibliotek for grensesnittutvikling

Skann bildet fra Docker-klienten

Integrasjonen av Snyk-tjenesten med Docker gjør denne prosessen utrolig enkel. For å starte skanningen, må du bare utføre følgende:

docker scan 0***0/python-app

Dette vil starte med analysen hvor den vil returnere en mer eller mindre omfattende utgang, avhengig av sårbarhetene den finner, og med en endelig oppsummering:

Docker-skanning viser alle sårbarhetene i bildet

Som du kan se, forteller den deg ikke bare hvor mange sårbarheter den har funnet. Selv om du blar opp, kan du se hva de er og deres kritikk, men det gir også anbefalinger angående basisbildet du bør bruke.

Du kan også sjekke detaljene om sårbarheten fra Snyk sårbarhetsdatabase.

I mitt tilfelle gir det meg flere alternativer, så jeg skal endre Dockerfilen min med det første alternativet:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Hvis jeg bygger om bildet og skanner det:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Du vil se at utdataene nå viser færre sårbarheter, og i dette tilfellet forteller den deg at du for øyeblikket bruker det sikrere basisbildet:

  Hva betyr "AMA" og hvordan bruker du det?

Docker-skanning sikrer at du bruker det sikreste basisbildet

Du kan også få en mer detaljert rapport hvis du legger til docker-filen som genererer bildet til kommandoen:

docker scan -f Dockerfile 0***0/python-app

Og til og med ekskluder basisbildet fra analysen, i tilfelle du vil fokusere på det du har gjort feil:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Denne tjenesten kan også integreres med Docker Hub-lagrene:

Men for dette må du ha et av de betalte abonnementene. Du kan imidlertid starte den lokalt, med gratisplanen du har bare for å være logget på Docker Hub (den har klare skannegrenser), mens du utvikler eller vil sjekke hvor sikkert et tredjepartsbilde du vil bruk.

Bruke Snyk med Github Actions

Det første du må gjøre er å lage et depot og lage en mappe inne.

.github / worflows /

Deretter, å bruke Snyk Container i Github er å lage et nytt bilde eller ta det bildet vi laget i Docker Hub. For å bruke Snyk må du opprette en ny hemmelighet kalt SNYK_TOKEN, og for å få tokenet må du opprette en konto hos Snyk. Fra Generelle innstillinger, der det står API-token, kan du raskt generere det.

  Sjekk nettverksaktivitet på Mac-en med aktivitetsmonitoren

Med tokenet kan du lage hemmeligheten på Github og bruke den i handlingen. Nå må du gi det navnet på depotet som ble opprettet i Docker Hub. Deretter må du sende meldingen den må sende. Du kan få tilgang til utdataene til trinnene som skal brukes som variabel i meldingen.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Hvordan kjøre hele arbeidsflyten? Enkelt bare ved å trykke på Master. Github Action vil oppdage filen inne i .github / workflows /.

Siste ord 👈

Med den økende populariteten til containere, blir hendelsene med sikkerhetsbrudd mer og mer vanlig, de fleste skyldes feilkonfigureringsfeil i utplasseringen av containerne. Snyk gir et effektivt og enkelt verktøy som kan hjelpe oss med å unngå feilkonfigureringsfeil og oppdage de vanligste sårbarhetene i docker-bilder.