Snyk fungerer som et analyseverktøy som er spesialisert på å identifisere sikkerhetshull i kode for infrastrukturkonfigurasjonsfiler, dette inkluderer filer som benyttes i containere og applikasjonspakker.
Snyk presenterer seg primært som en skybasert plattform, men tilbyr også et variert utvalg av produkter.
Snyk Open Source integreres gjennom et kommandolinjeverktøy (CLI) i en Git-arbeidsflyt. Når programvaren er aktivert, søker den etter sikkerhetshull, rangerer dem etter alvorlighetsgrad og utbedrer automatisk kjente sikkerhetsproblemer. Denne funksjonaliteten kan implementeres i pull request-prosessen for å gjelde for kode som sendes inn til kodebasen.
Snyk Infrastructure as Code, på den andre siden, undersøker sikkerhetsmangler og korrigerer dem i JSON- og YAML Kubernetes-konfigurasjonsfiler. En regelmotor lar deg justere følsomheten for deteksjoner i Git-repoer basert på parametere som er spesifisert av administratorer.
Snyk Container gir deg muligheten til å teste docker-bilder og relaterte registre både under opprettelsen og senere. Verktøyet kan integreres med CLI-er, SCM-er, CI-verktøy, containerregistre og Kubernetes.
Vi skal nå se på hvordan Snyk Container, som er integrert med Docker, kan brukes til å avdekke sårbarheter.
Eksempel på Docker-fil
For å benytte Snyk til å identifisere sikkerhetshull, er det første du trenger et docker-bilde. I dette tilfellet vil vi ta i bruk 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”]
Første skritt er å generere bildet lokalt ved hjelp av følgende kommando:
docker build -t 0xyz0/python-app.
Nå har vi et bilde klart til analyse.
Skanning av bildet via Docker-klienten
Integrasjonen av Snyk-tjenesten med Docker gjør denne prosessen usedvanlig enkel. For å starte skanningen, er det bare å kjøre følgende kommando:
docker scan 0***0/python-app
Dette vil initiere analysen og returnere et utdata som kan variere i omfang, avhengig av de sårbarhetene som oppdages, sammen med en oppsummering:
Docker-skanningen presenterer alle sårbarhetene i bildet.
Som du ser, gir den ikke bare informasjon om antallet sårbarheter som er funnet. Ved å bla gjennom utdataene kan du se detaljer om hva disse sårbarhetene innebærer og deres alvorlighetsgrad, samt anbefalinger angående basisbildet som er brukt.
Du kan også undersøke detaljene om sikkerhetshullene i Snyks database over sårbarheter.
I dette eksemplet får jeg flere forslag, og jeg velger å endre Dockerfilen min i henhold til det første forslaget:
FROM python:3.7.11-slim ADD . /code WORKDIR /code RUN pip install -r requirements.txt EXPOSE 8000 CMD ["python", "app.py"]
Etter å ha bygget om bildet og kjørt en ny skanning:
docker build -t 0***0/python-app . && docker scan 0***0/python-app
Ser du at utdataene nå viser færre sårbarheter, og i dette tilfellet informeres du om at du benytter et tryggere basisbilde:
Docker-skanningen bekrefter at du bruker det mest sikre basisbildet.
Du kan også motta en mer detaljert rapport ved å inkludere docker-filen som genererer bildet i kommandoen:
docker scan -f Dockerfile 0***0/python-app
I tillegg kan du ekskludere basisbildet fra analysen hvis du ønsker å fokusere på eventuelle feil du selv har introdusert:
docker scan -f Dockerfile --exclude-base 0***0/python-app
Denne tjenesten kan også integreres med Docker Hub-depotene:
For å benytte denne funksjonen kreves det imidlertid et betalt abonnement. Likevel kan du bruke den lokalt med den gratisplanen som følger med Docker Hub-kontoen din (med visse skansegrenser), for å utvikle og sjekke sikkerheten til tredjepartsbilder du planlegger å bruke.
Bruk av Snyk med Github Actions
Start med å opprette et depot og en mappe inne i dette.
.github / worflows /
For å bruke Snyk Container i Github, må du enten skape et nytt bilde eller bruke bildet du allerede har lagt inn i Docker Hub. For at Snyk skal fungere, må du opprette en ny hemmelighet som heter SNYK_TOKEN. Du finner tokenet ved å opprette en konto hos Snyk. Deretter, under Generelle innstillinger, finner du API-tokenet som du raskt kan generere.
Med dette tokenet kan du opprette hemmeligheten på Github og benytte den i handlingen. Angi deretter navnet på depotet du har opprettet i Docker Hub, og definer meldingen som skal sendes. Du kan få tilgang til utdataene fra stegene som skal brukes som variabler 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? Det er enkelt, bare ved å trykke på Master. Github Action vil automatisk oppdage filen i .github / workflows /.
Konklusjon 👈
Med den økende populariteten til containere, ser vi en økning i sikkerhetsbrudd, hovedsakelig på grunn av feilkonfigurasjoner i utplasseringen av containere. Snyk tilbyr et effektivt og lett anvendelig verktøy som kan hjelpe oss med å unngå feilkonfigurasjoner og identifisere vanlige sårbarheter i docker-bilder.