Docker ora viene fornito con il supporto integrato per la scansione di sicurezza. Puoi eseguire la scansione locale delle immagini del contenitore per identificare possibili vulnerabilità. Ciò accelera il ciclo di sviluppo fornendo un feedback più immediato rispetto alle pipeline CI e ai servizi cloud.
La scan
il comando è disponibile per impostazione predefinita in Docker versione 20.10. Docker collabora con Snyk per portare le scansioni di sicurezza nella sua CLI. La prima volta che esegui il comando verrà visualizzata una richiesta di consenso una tantum. Digita "y" e premi invio per confermare l'integrazione con Snyk.
Oltre al consenso a Snyk, la scansione dei container richiede anche un accesso Docker Hub. Esegui docker login
per fornire il tuo nome utente e password prima di iniziare la scansione.
Prova a eseguire docker scan --version
per controllare la tua installazione. Vedrai il numero di versione della scan
collegare. L'output nomina anche il provider della scansione di sicurezza che scan
userà (attualmente Snyk). Ulteriori provider potrebbero essere aggiunti in futuro.
Come funzionano le scansioni
docker scan
accetta un nome immagine come parametro. Analizzerà l'immagine rispetto al database Snyk delle vulnerabilità del contenitore. Viene trattata un'ampia gamma di problemi, che vanno da immagini di base obsolete a exploit contro le librerie di software open source che stai utilizzando.
Snyk può mostrarti il Dockerfile
linea che introduce una vulnerabilità. Questo ti dà un punto di partenza immediato mentre risolvi ogni problema. I risultati verranno visualizzati direttamente nel tuo terminale al termine della scansione.
Il database Snyk viene continuamente aggiornato con nuove vulnerabilità. Non dare per scontato che un'immagine che supera una scansione una volta otterrà sempre lo stesso risultato in futuro. È buona norma scansionare regolarmente le immagini in modo che i tuoi carichi di lavoro rimangano al sicuro.
Scansione di un'immagine
Il modo più semplice per scansionare un'immagine è passare un tag a docker scan
:
docker scan hello-world:latest
Il completamento della scansione potrebbe richiedere alcuni secondi. Le immagini più grandi richiedono più tempo. I risultati verranno mostrati nel tuo terminale una volta che saranno disponibili. L'output di esempio di una scansione riuscita è mostrato sopra.
Anche se ottenere il via libera potrebbe essere confortante, la docker scan
l'output è molto più interessante quando vengono rilevate delle vulnerabilità. Ecco una scansione che ha rilevato alcuni problemi.
Ogni problema ha una breve descrizione, un'indicazione della sua gravità e un collegamento per ottenere ulteriori informazioni sul sito Web di Snyk.
Scansioni più avanzate
docker scan
ha molte più funzionalità rispetto all'esempio di base sopra. Puoi personalizzare il comportamento della scansione utilizzando diversi flag.
Probabilmente, il flag più utile è --file
. Questo prende il percorso del Dockerfile
dell'immagine . Quando fornisci a Snyk un Dockerfile, può eseguire un'analisi più dettagliata in base al suo contenuto. Alcune funzioni di scansione, come il rilevamento di immagini di base obsolete, sono disponibili solo quando fornisci il Dockerfile
della tua immagine .
docker scan hello-world:latest --file Dockerfile
Questo produrrà un output simile al seguente:
Tested 100 dependencies for known issues, found 50 issues. According to our scan, you are currently using the most secure version of the selected base image.
L'ultima riga indicherà se la tua immagine di base, il FROM
istruzioni nel tuo Dockerfile
—è sicuro. Se l'immagine è obsoleta o contiene vulnerabilità che sono state risolte, verranno visualizzati suggerimenti di tag alternativi.
A volte, potresti voler eseguire una scansione che ignori le vulnerabilità nell'immagine di base. Passa il --exclude-base
bandiera per raggiungere questo obiettivo. Ciò è utile se l'immagine di base contiene molti problemi di bassa gravità e non è disponibile alcun percorso di aggiornamento. L'esclusione del rumore ti aiuta a concentrarti sui problemi risolvibili all'interno dei livelli dell'immagine.
Personalizzazione dell'output di scansione
docker scan
accetta alcune diverse opzioni di formattazione. Finora, abbiamo visto l'output predefinito. Presenta i problemi come un elenco leggibile dall'uomo all'interno del tuo terminale.
Passando il --json
flag indica al comando di emettere il codice JSON non elaborato che riceve. Questo è l'ideale quando utilizzi la docker scan
a livello di codice in script CI o strumenti di terze parti. Puoi elaborare tu stesso il JSON per estrarre solo le informazioni di cui hai bisogno.
Un'altra opzione è --dependency-tree
. Questo emetterà una vista ad albero delle dipendenze della tua immagine sopra l'elenco delle vulnerabilità. Questo può aiutarti a visualizzare come vengono caricati i diversi pacchetti, permettendoti di individuare dove sorgono i problemi.
Infine, puoi usare il --severity
flag per filtrare le vulnerabilità indesiderate. Usa low
, medium
o high
per indicare la gravità che ti interessa. Il comando segnalerà solo le vulnerabilità classificate pari o superiori al livello specificato.
Limitazioni
docker scan
attualmente manca il supporto per le distribuzioni Alpine Linux. Inoltre, la versione del plug-in 0.7 presenta un bug grave che causa il fallimento delle scansioni locali con un errore "immagine non trovata". v0.7 può eseguire la scansione solo di immagini che esistono in Docker Hub e altri registri pubblici. Il problema è stato risolto nella v0.8, ma la v0.7 rimane la versione ampiamente distribuita con le versioni Docker su Linux.
Al di là dei problemi tecnici, il servizio Snyk impone limiti di velocità rigorosi sull'utilizzo della docker scan
. Puoi eseguire 10 scansioni gratuitamente ogni mese. Se accedi con Snyk, questo aumenta a 200 scansioni al mese.
Esegui docker scan --login
per ottenere il tuo URL di accesso univoco. Copialo nel tuo browser e segui le istruzioni per autenticarti. Puoi accedere utilizzando Docker Hub o diversi provider di terze parti. Una volta effettuato l'accesso, verrà visualizzato un pulsante "Autentica". Fare clic qui per tornare al terminale. Dovresti vedere un messaggio "Snyk è ora pronto per essere utilizzato".
Riepilogo
La scansione delle immagini integrata di Docker semplifica l'individuazione e la risoluzione delle vulnerabilità dei container. Qualsiasi sviluppatore con accesso alla Docker CLI e a un'immagine del contenitore può ora eseguire la scansione delle vulnerabilità senza dover eseguire il push in un registro.
Scansioni regolari ti aiutano a proteggere i tuoi container da potenziali minacce. Immagini di base obsolete e vulnerabilità nelle dipendenze influiscono in modo significativo sul tuo stato di sicurezza, ma possono facilmente passare inosservate. docker scan
ti dà maggiore fiducia nei tuoi contenitori rivelando problemi che altrimenti avresti trascurato.