Grunnleggende Docker og DevOps · leksjon

Beste praksis for sikkerhet i Dockerfiles

Implementer sikkerhetstiltak i Dockerfiles for å minimere sårbarheter og redusere angrepsflaten.

Leksjon 3 av 411 trinn

Beste praksis for sikkerhet i Dockerfiles er en gratis leksjon i Grunnleggende Docker og DevOps på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende Docker og DevOps, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Docker og DevOps inneholder totalt 4 leksjoner.

Sikre Docker-filene Deres!

Velkommen til beste praksis for sikkerhet i Dockerfile! En sikker applikasjon starter med et sikkert fundament.

Dockerfile-filen Deres er ikke bare et byggskript – den er en plan for applikasjonens sikkerhet. Dårlig praksis her kan føre til betydelige sårbarheter.

I denne leksjonen utforsker vi viktige strategier for å styrke Docker-imagene og redusere mulige angrepsflater.

Beste praksis for sikkerhet i Dockerfiles — illustrasjon 1

Start med pålitelige base-images

Instruksjonen FROM er den første forsvarslinjen. Velg alltid offisielle og godt vedlikeholdte base-images fra pålitelige kilder som Docker Hub.

  • Offisielle images: Disse er verifiserte og oppdateres regelmessig.
  • Spesifikke tagger: Unngå latest. Bruk tagger med spesifikke versjoner, for eksempel alpine:3.18, for forutsigbarhet og stabilitet.
  • Minimale images: Velg «slim»- eller «alpine»-varianter. De inneholder færre pakker, noe som betyr færre potensielle sårbarheter.

Velge et sikkert base-image

Se hvordan valg av et minimalt base-image med en spesifikk versjon kan forbedre sikkerheten. Det reduserer antallet pakker og verktøy som kan utnyttes.

FROM alpine:3.18
# This is better than:
# FROM ubuntu:latest
# FROM python:latest

# Alpine is a minimal Linux distribution,
# making the image smaller and more secure.

Minimer image-størrelsen

Hver fil, pakke eller avhengighet De legger til i imaget, øker «angrepsflaten». Jo mindre programvare som er til stede, desto færre potensielle sårbarheter finnes det.

Installer bare det som er helt nødvendig for at applikasjonen skal kjøre. Fjern byggverktøy og midlertidige filer når de ikke lenger trengs.

Rydd opp etter installasjonen

Når De installerer pakker, må De alltid rydde opp i pakkebehandlerens hurtigbuffere og fjerne unødvendige filer. Dette reduserer størrelsen på det endelige imaget og fjerner mulige informasjonslekkasjer.

For Debian-baserte images, som Ubuntu, bruker De apt-get clean og fjerner /var/lib/apt/lists/* i den samme RUN-instruksjonen.

FROM debian:stable-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends \ 
    curl \ 
    git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# All in one RUN command to leverage Docker's caching and reduce layers.

Ikke kjør som root!

Som standard kjører prosesser inne i en Docker-container som brukeren root. Dette er en stor sikkerhetsrisiko!

Hvis en angriper får kontroll over containeren, vil angriperen ha root-rettigheter, noe som potensielt kan gjøre det mulig å bryte seg ut av containeren eller kompromittere vertssystemet.

Opprett alltid en dedikert bruker uten root-rettigheter, og bytt til denne ved hjelp av instruksjonen USER.

Konfigurer en bruker uten root-rettigheter

Slik oppretter De en ny bruker og instruerer Docker til å kjøre påfølgende kommandoer som denne brukeren. Dette begrenser den potensielle skaden betydelig hvis containeren blir kompromittert.

FROM alpine:3.18

# Create a non-root user and group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Switch to the non-root user
USER appuser

CMD ["echo", "Hello from non-root user!"]

Ingen hemmeligheter i Dockerfile!

Legg aldri sensitiv informasjon, som API-nøkler, databasepassord eller private nøkler, direkte inn i Dockerfile-filen eller i imaget.

Alle som har tilgang til imaget, kan enkelt hente ut disse hemmelighetene, selv om De sletter dem i et senere lag.

Bruk heller sikre metoder som Docker Secrets, miljøvariabler (for ikke-sensitiv informasjon) eller Kubernetes Secrets under kjøring.

Foretrekk COPY fremfor ADD

Både instruksjonene COPY og ADD kopierer filer inn i imaget, men COPY foretrekkes generelt av hensyn til sikkerhet og tydelighet.

  • COPY: Kopierer bare lokale filer eller mapper. Den er enkel og forutsigbar.
  • ADD: Kan også hente filer fra URL-er og automatisk pakke ut komprimerte arkiver (tar, gzip). Denne ekstra funksjonaliteten medfører potensielle sikkerhetsrisikoer, som nedlasting av innhold man ikke stoler på eller utpakking av ondsinnede arkiver.

Hold Dem til COPY med mindre De trenger de avanserte funksjonene i ADD og forstår risikoene.

Sikkerhetskontroll!

Hvilken av de følgende fremgangsmåtene for Dockerfile er et avgjørende tiltak for å redusere angrepsflaten og minimere potensielle sårbarheter?

Deres reise mot en sikker Dockerfile

Godt jobbet! De har lært viktig beste praksis for sikkerhet i Dockerfile, som danner grunnlaget for sikker containerisering:

  • Start med pålitelige, minimale base-images: Bruk offisielle, spesifikke og slanke images.
  • Minimer image-størrelsen: Installer bare det som trengs, og rydd opp etter installasjoner.
  • Kjør som en bruker uten root-rettigheter: Begrens privilegiene for å redusere konsekvensene av eventuelle sikkerhetsbrudd.
  • Unngå hemmeligheter: Legg aldri sensitive data direkte inn i Dockerfile-filen.
  • Foretrekk `COPY` fremfor `ADD`: Velg den mer forutsigbare og sikre instruksjonen `COPY`.

Ved å følge denne praksisen forbedrer De sikkerheten til de containeriserte applikasjonene Deres betydelig!

Gratis å komme i gang

Lær deg Grunnleggende Docker og DevOps med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Beste praksis for sikkerhet i Dockerfiles» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende Docker og DevOps, inkludert «Beste praksis for sikkerhet i Dockerfiles», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende Docker og DevOps inneholder totalt 4 leksjoner.

Hva lærer jeg i «Beste praksis for sikkerhet i Dockerfiles»?

Implementer sikkerhetstiltak i Dockerfiles for å minimere sårbarheter og redusere angrepsflaten. Du øver på Grunnleggende Docker og DevOps med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Grunnleggende Docker og DevOps?

Ingen tidligere erfaring er nødvendig. Grunnleggende Docker og DevOps på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Beste praksis for sikkerhet i Dockerfiles»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Grunnleggende Docker og DevOps-leksjonen?

Ja. Alle Grunnleggende Docker og DevOps-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bygg med flere trinn for bedre effektivitet
  2. Utnytte bufring av bygg
  3. Beste praksis for sikkerhet i Dockerfiles
  4. Minimere imagestørrelsen med Slim- og Distroless-baser
← Tilbake til Grunnleggende Docker og DevOps