Avhengigheter
Containerskanning
Containerskanning undersøker et container-image for kjente sårbarheter, utdaterte pakker og risikabel konfigurasjon. Et image pakker applikasjonen din sammen med et basisoperativsystem og alt imellom, så en skanning dekker langt mer enn dine egne avhengigheter. Den leser også det ferdige imaget, noe som begrenser hva den kan vite om hvordan det ble laget.
Oppdatert
Slik fungerer containerskanning
- Pakker ut imaget. Skanneren leser lagene i imaget uten å kjøre dem.
-
Lister innholdet. Den leser pakkedatabaser for operativsystemet og applikasjonsmanifester, for
eksempel en
package-lock.jsonkopiert inn i imaget. - Matcher dataene. Den sammenligner pakker med sårbarhetsdata fra distribusjoner og advisory-databaser.
- Sjekker konfigurasjonen. Noen verktøy flagger også ting som kjøring som root eller hemmeligheter igjen i et lag.
Hvor du bør kjøre en skanning
| Stadium | Hva det gir deg | Begrensning |
|---|---|---|
| CI, etter image-bygget | Får bygget til å feile før et image pushes | Et øyeblikksbilde av advisories den dagen |
| Register | Skanner lagrede images på nytt når nye advisories dukker opp | Finner problemer etter at imaget er publisert |
| Kubernetes-admission | Blokkerer uskannede eller feilende images ved utrulling | Krever en policy og en måte å håndtere unntak på |
| Kjøretid | Viser hvilke images som kjører nå, og hva som er lastet | Krever en agent på clusterne dine |
Verktøy for containerskanning
- Åpen kildekode: Trivy og Grype er de vanlige gratisvalgene, og begge passer lett inn i CI.
- Innebygd i registre og plattformer: Docker Scout og de store skyregistrene tilbyr skanning.
- Kommersielle plattformer: Snyk og Anchore legger til policy, rapportering og arbeidsflyt.
Slik reduserer du antall funn
- Begynn med et mindre base-image. Slim- eller distroless-images inneholder færre pakker, så færre advisories gjelder.
- Bygg på nytt jevnlig. Base-images blir patchet, og et image som var rent i mars, er ikke rent nå.
- Bruk multi-stage-bygg. Kompilatorer og byggeverktøy bør holdes utenfor det endelige imaget.
- Fest base-images med digest. En tag kan endre seg uten at du merker det, og det kan ikke en digest.
- Prioriter. Mange funn har ingen retting ennå eller ligger i pakker applikasjonen din aldri bruker. Se slik prioriterer du sårbarheter.
Hva en containerskanning ikke kan se
- Kompilert kode. En Go- eller Rust-binærfil i imaget har begrensede metadata, og en skanner må finne ut hva som gikk inn.
-
Filer uten pakkeregistrering. Programvare lagt til med
curleller kopiert inn i et lag har ingen oppføring i en pakkedatabase. - Det bygget brukte og la fra seg. Multi-stage-bygg forkaster verktøyene som produserte imaget. Hvis ett av dem var kompromittert, sier ingenting i det endelige imaget det.
- Hvor det kom fra. En skanning beskriver imaget, ikke bygget som produserte det.
Se hva en SBOM for Docker-images går glipp av for en nærmere titt, og de beste SBOM-verktøyene for alternativene.
Skanne images og registrere bygg
Skannere er riktig verktøy for images du ikke har bygget, samt clustere og konfigurasjon. For images du selv bygger, går CRACI en annen vei. Som GitHub Actions-runneren din ser CRACI hva som kommer inn i bygget, inkludert base-imaget og operativsystemlagene i det, så det registrerer hva som gikk inn, i stedet for å utlede det i etterkant. Deretter fortsetter CRACI å sjekke de SBOM-ene etter hvert som nye sårbarheter publiseres.
CRACI skanner ikke images du ikke har bygget, clustere, VM-images eller feilkonfigurasjoner. Det gjør Trivy, så behold det til dette. Se CRACI vs Trivy.
Containerskanning: ofte stilte spørsmål
Hva er containerskanning?
Det er prosessen med å undersøke et container-image for kjente sårbarheter, utdaterte pakker og risikabel konfigurasjon, vanligvis uten å kjøre det.
Når bør du skanne container-images?
I CI etter at imaget er bygget, og på nytt i registeret når nye advisories dukker opp. Skanner du bare én gang, sitter du igjen med et øyeblikksbilde som fort blir gammelt.
Hva er den beste gratis containerskanneren?
Trivy og Grype er de mest brukte gratisalternativene. Begge kjører i CI og dekker både operativsystem- og applikasjonspakker.
Hva er forskjellen på image-skanning og en SBOM?
En SBOM lister hva som er i et image, mens en skanning sjekker innholdet for kjente problemer. Mange skannere bygger først en SBOM og matcher den deretter mot advisories.
Hvorfor har container-imaget mitt så mange sårbarheter?
Mest på grunn av base-imaget, som tar med seg pakkene til et operativsystem. Et mindre base-image og jevnlig bygging på nytt fjerner de fleste.
Kan en containerskanner lese kompilerte binærfiler?
Delvis. Binærfiler fra Go og Rust kan ha noen metadata om avhengigheter, men mye kompilert kode gir en skanner lite å gå på, så den må utlede hva som gikk inn.
Se hva som gikk inn i imaget ditt
Bygg et image på CRACI og sammenlign den registrerte SBOM-en med det containerskanneren din rapporterer.
Book en demo