Comment utiliser Docker Scan pour trouver des vulnérabilités dans vos images –
Docker est désormais livré avec une prise en charge intégrée de l’analyse de sécurité. Vous pouvez analyser localement les images de vos conteneurs pour identifier les vulnérabilités possibles. Cela accélère le cycle de développement en fournissant une rétroaction plus immédiate par rapport aux pipelines CI et aux services cloud.
le scan
La commande est disponible par défaut dans la version 20.10 de Docker. Docker s’est associé à Snyk pour apporter des analyses de sécurité à sa CLI. Une invite de consentement unique apparaîtra la première fois que vous exécuterez la commande. Tapez «y» et appuyez sur Entrée pour confirmer l’intégration Snyk.
En plus de consentir à Snyk, l’analyse des conteneurs nécessite également une connexion Docker Hub. Cours docker login
pour fournir votre nom d’utilisateur et votre mot de passe avant de commencer la numérisation.
Essayez de courir docker scan --version
pour vérifier votre installation. Vous verrez le numéro de version du scan
brancher. La sortie nomme également le fournisseur d’analyse de sécurité qui scan
utilisera (actuellement Snyk). Des fournisseurs supplémentaires pourraient être ajoutés à l’avenir.
Sommaire
Comment fonctionnent les scans
docker scan
accepte un nom d’image comme paramètre. Il analysera l’image par rapport à la base de données Snyk des vulnérabilités du conteneur. Un large éventail de problèmes est couvert, allant des images de base obsolètes aux exploits contre les bibliothèques de logiciels open source que vous utilisez.
Snyk peut vous montrer le Dockerfile
ligne qui introduit une vulnérabilité. Cela vous donne un point de départ immédiat lorsque vous résolvez chaque problème. Les résultats s’afficheront directement dans votre terminal une fois l’analyse terminée.
La base de données Snyk est continuellement mise à jour avec de nouvelles vulnérabilités. Ne supposez pas qu’une image qui passe une fois une numérisation obtiendra toujours le même résultat à l’avenir. Il est recommandé de numériser régulièrement des images afin que vos charges de travail restent sécurisées.
Numérisation d’une image
La façon la plus simple de numériser une image est de passer une balise à docker scan
:
docker scan hello-world:latest
L’analyse peut prendre quelques secondes. Les images plus grandes nécessiteront plus de temps. Les résultats seront affichés dans votre terminal une fois qu’ils seront disponibles. Un exemple de sortie d’une analyse réussie est illustré ci-dessus.
Bien que le feu vert puisse être réconfortant, le docker scan
la sortie est beaucoup plus intéressante lorsque des vulnérabilités sont détectées. Voici une analyse qui a détecté des problèmes.
Chaque problème a une brève description, une indication de sa gravité et un lien pour obtenir plus d’informations sur le site Web de Snyk.
Analyses plus avancées
docker scan
a beaucoup plus de fonctionnalités que l’exemple de base ci-dessus. Vous pouvez personnaliser le comportement de l’analyse à l’aide de plusieurs indicateurs.
Le drapeau le plus utile est sans doute --file
. Cela prend le chemin de l’image Dockerfile
. Lorsque vous fournissez à Snyk un Dockerfile, il peut effectuer une analyse plus détaillée en fonction de son contenu. Certaines fonctionnalités de numérisation, telles que la détection d’image de base obsolète, ne sont disponibles que lorsque vous fournissez Dockerfile
.
docker scan hello-world:latest --file Dockerfile
Cela produira une sortie similaire à ce qui suit:
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.
La dernière ligne indiquera si votre image de base—le FROM
instructions dans votre Dockerfile
– est sécurisé. Des suggestions de balises alternatives seront affichées si l’image est obsolète ou contient des vulnérabilités qui ont été résolues depuis.
Parfois, vous souhaiterez peut-être exécuter une analyse qui ignore les vulnérabilités de votre image de base. Passe le --exclude-base
drapeau pour y parvenir. Cela est utile si l’image de base contient de nombreux problèmes de faible gravité et qu’aucun chemin de mise à niveau n’est disponible. L’exclusion du bruit vous aide à vous concentrer sur les problèmes résolus au sein de vos calques d’image.
Personnalisation de la sortie de numérisation
docker scan
accepte quelques options de formatage différentes. Jusqu’à présent, nous avons vu la sortie par défaut. Il présente les problèmes sous forme de liste lisible par l’homme dans votre terminal.
Passer le --json
flag indique à la commande d’émettre le JSON brut qu’elle reçoit. C’est idéal lorsque vous utilisez docker scan
par programmation dans des scripts CI ou des outils tiers. Vous pouvez traiter vous-même le JSON pour extraire uniquement les informations dont vous avez besoin.
Une autre option est --dependency-tree
. Cela émettra une arborescence des dépendances de votre image au-dessus de la liste des vulnérabilités. Cela peut vous aider à visualiser comment les différents packages sont intégrés, vous permettant de localiser les problèmes.
Enfin, vous pouvez utiliser le --severity
indicateur pour filtrer les vulnérabilités indésirables. Utiliser low
, medium
, ou alors high
pour indiquer la gravité qui vous intéresse. La commande ne signalera que les vulnérabilités évaluées à ou au-dessus du niveau donné.
Limites
docker scan
ne prend actuellement pas en charge les distributions Alpine Linux. De plus, la version 0.7 du plugin a un bogue sérieux qui provoque l’échec des analyses locales avec une erreur « image non trouvée ». La v0.7 ne peut analyser que les images qui existent dans Docker Hub et d’autres registres publics. Le problème a été résolu dans la v0.8, mais la v0.7 reste la version largement distribuée avec les versions Docker sur Linux.
Au-delà des problèmes techniques, le service Snyk impose des limites de taux strictes sur votre utilisation de docker scan
. Vous pouvez effectuer 10 scans gratuitement chaque mois. Si vous vous connectez avec Snyk, cela passe à 200 analyses par mois.
Cours docker scan --login
pour obtenir votre URL de connexion unique. Copiez-le dans votre navigateur et suivez les instructions pour vous authentifier. Vous pouvez vous connecter à l’aide de Docker Hub ou de plusieurs fournisseurs tiers. Une fois connecté, un bouton « Authentifier » apparaîtra. Cliquez dessus pour revenir à votre terminal. Vous devriez voir un message «Snyk est maintenant prêt à être utilisé».
Résumé
La numérisation d’image intégrée de Docker facilite la découverte et la résolution des vulnérabilités des conteneurs. Tout développeur ayant accès à l’interface de ligne de commande Docker et à une image de conteneur peut désormais rechercher les vulnérabilités sans avoir à accéder à un registre.
Des analyses régulières vous aident à protéger vos conteneurs contre les menaces potentielles. Les images de base obsolètes et les vulnérabilités dans les dépendances ont un impact significatif sur votre posture de sécurité, mais peuvent facilement passer inaperçues. docker scan
vous donne une plus grande confiance dans vos conteneurs en révélant des problèmes que vous auriez autrement négligés.