0Pricing
Docker & DevOps Fundamentals · Lezione

Best practice di sicurezza per i Dockerfile

Implementi misure di sicurezza nei Dockerfile per ridurre al minimo le vulnerabilità e la superficie d’attacco.

Best practice di sicurezza per i Dockerfile è una lezione Docker & DevOps Fundamentals gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Metta in sicurezza i Dockerfile!

Benvenuto nelle best practice per la sicurezza dei Dockerfile! Un'applicazione sicura nasce da una base sicura.

Il Dockerfile non è solo uno script di build: è il progetto su cui si basa la sicurezza dell'applicazione. Pratiche inadeguate possono causare vulnerabilità significative.

In questa lezione esamineremo le strategie principali per rafforzare la sicurezza delle immagini Docker e ridurre al minimo la superficie di attacco.

Best practice di sicurezza per i Dockerfile — illustrazione 1

Inizi con immagini di base affidabili

L'istruzione FROM è la prima linea di difesa. Scelga sempre immagini di base ufficiali e sottoposte a manutenzione, provenienti da fonti affidabili come Docker Hub.

  • Immagini ufficiali: Sono verificate e aggiornate regolarmente.
  • Tag specifici: Eviti latest. Utilizzi tag di versione specifici, ad esempio alpine:3.18, per garantire prevedibilità e stabilità.
  • Immagini minimali: Preferisca le versioni 'slim' o 'alpine'. Contengono meno pacchetti e quindi meno potenziali vulnerabilità.

Scelta di un'immagine di base sicura

Scopra come la scelta di un'immagine di base minimale e specifica possa migliorare la sicurezza. Riduce il numero di pacchetti e strumenti che potrebbero essere sfruttati.

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.

Ridurre al minimo le dimensioni dell'immagine

Ogni file, pacchetto o dipendenza aggiunto all'immagine aumenta la sua 'superficie di attacco'. Quanto meno software è presente, tanto meno numerose saranno le potenziali vulnerabilità.

Installi solo ciò che è assolutamente necessario per eseguire l'applicazione. Rimuova gli strumenti di build e i file temporanei quando non sono più necessari.

Pulire dopo l'installazione

Quando installa i pacchetti, pulisca sempre le cache del gestore dei pacchetti e rimuova i file non necessari. In questo modo riduce le dimensioni finali dell'immagine e rimuove potenziali fughe di informazioni.

Per le immagini basate su Debian, come Ubuntu, utilizzi apt-get clean e rimuova /var/lib/apt/lists/* nella stessa istruzione RUN.

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.

Non esegua come root!

Per impostazione predefinita, i processi all'interno di un container Docker vengono eseguiti dall'utente root. Si tratta di un grave rischio per la sicurezza!

Se un malintenzionato prende il controllo del container, otterrebbe i privilegi di root, che potrebbero consentirgli di evadere dal container o compromettere il sistema host.

Crei sempre un utente dedicato non root e passi a tale utente usando l'istruzione USER.

Configurare un utente non root

Ecco come creare un nuovo utente e indicare a Docker di eseguire i comandi successivi come tale utente. In questo modo si limita notevolmente il potenziale danno in caso di compromissione del container.

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!"]

Nessun segreto nel Dockerfile!

Non inserisca mai direttamente nel Dockerfile informazioni sensibili come chiavi API, password di database o chiavi private, né le includa nell'immagine.

Chiunque abbia accesso all'immagine può estrarre facilmente questi segreti, anche se li elimina in un layer successivo.

Utilizzi invece metodi sicuri come Docker Secrets, variabili d'ambiente (per dati non sensibili) o Kubernetes Secrets durante l'esecuzione.

Preferisca COPY ad ADD

Entrambe le istruzioni COPY e ADD copiano file nell'immagine, ma in genere COPY è preferibile per sicurezza e chiarezza.

  • COPY: Copia solo file o directory locali. È semplice e prevedibile.
  • ADD: Può anche recuperare file dagli URL ed estrarre automaticamente archivi compressi (tar, gzip). Questa funzionalità aggiuntiva introduce potenziali rischi per la sicurezza, come il download di contenuti non attendibili o l'estrazione di archivi dannosi.

Si attenga a COPY, a meno che non abbia specificamente bisogno delle funzionalità avanzate di ADD e non ne comprenda i rischi.

Verifica della sicurezza!

Quale delle seguenti pratiche relative ai Dockerfile è un passaggio fondamentale per ridurre la superficie di attacco e limitare al minimo le potenziali vulnerabilità?

Il percorso verso un Dockerfile sicuro

Ottimo lavoro! Ha appreso le best practice essenziali per la sicurezza dei Dockerfile, che costituiscono la base per una containerizzazione sicura:

  • Inizi con immagini di base affidabili e minimali: Utilizzi immagini ufficiali, specifiche e leggere.
  • Riduca al minimo le dimensioni dell'immagine: Installi solo ciò che serve e pulisca dopo le installazioni.
  • Esegua come utente non root: Limiti i privilegi per ridurre l'impatto di potenziali violazioni.
  • Eviti i segreti: Non inserisca mai dati sensibili direttamente nel Dockerfile.
  • Preferisca `COPY` ad `ADD`: Scelga l'istruzione `COPY`, più prevedibile e sicura.

Applicando queste pratiche, migliorerà notevolmente il livello di sicurezza delle applicazioni containerizzate!

Domande Frequenti

La lezione «Best practice di sicurezza per i Dockerfile» è gratuita?

Sì — il testo completo di «Best practice di sicurezza per i Dockerfile» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals include 4 lezioni in totale.

Cosa imparerò in «Best practice di sicurezza per i Dockerfile»?

Implementi misure di sicurezza nei Dockerfile per ridurre al minimo le vulnerabilità e la superficie d’attacco. Eserciti Docker & DevOps Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Docker & DevOps Fundamentals?

Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Best practice di sicurezza per i Dockerfile»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Docker & DevOps Fundamentals?

Sì. Ogni lezione Docker & DevOps Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Build multi-stage per l’efficienza
  2. Utilizzo della cache di build
  3. Best practice di sicurezza per i Dockerfile
  4. Riduzione delle immagini con basi Slim e Distroless
← Torna a Docker & DevOps Fundamentals