Den nemmeste måde at finde sårbarheder i Docker-billeder ved hjælp af Snyk

Snyk er en redaktør, der er specialiseret i at analysere sårbarheder i koden for infrastrukturkonfigurationsfiler, inklusive dem, der findes i containere og applikationspakker.

Snyk tilbyder først en cloud-platform, men den tilbyder forskellige produkter.

Snyk OpenSource integreres gennem editorens CLI i et Git-flow. Når den er lanceret, opdager softwaren sårbarheder, klassificerer dem efter grad af følsomhed og retter automatisk kendte sikkerhedsfejl. Denne funktionalitet kan inkorporeres i pull request-cyklussen for at gælde for kode sendt til repositories.

Snyk Infrastructure as Code analyserer på den anden side sårbarhederne og retter dem i JSON og YAML Kubernetes konfigurationsfiler. Her giver en regelmotor dig mulighed for at konfigurere følsomheden af ​​detektioner i Git-lagre i henhold til de parametre, der er besluttet af administratorerne.

Snyk Container giver dig mulighed for at teste docker-billeder og tilhørende registre på tidspunktet for deres oprettelse og efter. Programmet kan integreres i CLI’er, SCM’er, CI-værktøjer, containerregistre og Kubernetes.

I dag vil vi se, hvordan vi kan bruge Snyk Container, som kommer indbygget med Docker til at opdage sårbarheder.

Eksempel på docker-fil

Den første ting, du skal bruge for at bruge Snyk til at opdage sårbarheder, er et docker-billede. I dette eksempel vil vi bruge følgende docker-billede:

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

Den første ting vi skal gøre er at generere billedet lokalt gennem følgende kommando:

docker build -t 0xyz0/python-app.

Nu har vi et billede at analysere.

  Sådan sorteres lister i Python

Scan billedet fra Docker-klienten

Integrationen af ​​Snyk-tjenesten med Docker gør denne proces utrolig enkel. For at starte scanningen skal du blot udføre følgende:

docker scan 0***0/python-app

Dette starter med analysen, hvor det vil returnere et mere eller mindre omfattende output, afhængigt af de sårbarheder, det finder, og med et endeligt resumé:

Docker-scanning viser alle billedets sårbarheder

Som du kan se, fortæller den dig ikke kun, hvor mange sårbarheder den har fundet. Selvom du scroller op, kan du se, hvad de er og deres kritikalitet, men det giver også anbefalinger vedrørende det basisbillede, du bør bruge.

Du kan også tjekke detaljerne om sårbarheden fra Snyk sårbarhedsdatabase.

I mit tilfælde giver det mig flere alternativer, så jeg vil ændre min Dockerfile med den første mulighed:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

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

Hvis jeg genopbygger billedet og scanner det:

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

Du vil se, at outputtet nu viser færre sårbarheder, og i dette tilfælde fortæller det dig, at du i øjeblikket bruger det mere sikre basisbillede:

  Sådan fjerner du al formatering fra udklipsholdertekst med en tastaturgenvej

Docker-scanning sikrer, at du bruger det mest sikre basisbillede

Du kan også få en mere detaljeret rapport, hvis du tilføjer docker-filen, der genererer billedet, til kommandoen:

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

Og udelad endda basisbilledet fra analysen, bare hvis du vil fokusere på det, du har gjort forkert:

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

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

Men for dette skal du have et af de betalte abonnementer. Du kan dog starte det lokalt med den gratis plan, du har bare for at være logget ind på Docker Hub (den har klare scanningsgrænser), mens du udvikler eller vil tjekke, hvor sikkert et tredjepartsbillede er, som du vil brug.

Brug af Snyk med Github Actions

Den første ting at gøre er at oprette et depot og inde at oprette en mappe.

.github / worflows /

Dernæst er at bruge Snyk Container i Github at oprette et nyt billede eller tage det billede, vi oprettede i Docker Hub. For at bruge Snyk skal du oprette en ny hemmelighed kaldet SNYK_TOKEN, og for at få tokenet skal du oprette en konto hos Snyk. Fra Generelle indstillinger, hvor der står API Token, kan du hurtigt generere det.

  Sådan forfalsker du en GPS-placering på en iPhone

Med tokenet kan du oprette hemmeligheden på Github og bruge den i handlingen. Nu skal du give det navnet på depotet, der blev oprettet i Docker Hub. Dernæst skal du sende den besked, den skal sende. Du kan få adgang til output fra trinene, der skal bruges som variabel i meddelelsen.

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 køres hele arbejdsgangen? Simpelt bare ved at trykke på Master. Github Action vil finde filen inde i .github / workflows /.

Afsluttende ord 👈

Med containernes stigende popularitet bliver hændelser med sikkerhedsbrud mere og mere almindelige, hvoraf de fleste skyldes fejlkonfigurationsfejl i udrulningen af ​​containerne. Snyk leverer et effektivt og ligetil værktøj, der kan hjælpe os med at undgå fejlkonfigurationsfejl og opdage de mest almindelige sårbarheder i docker-billeder.