Docker est désormais livré avec une prise en charge intégrée de l'analyse de sécurité. Vous pouvez analyser localement vos images de conteneurs pour identifier d'éventuelles vulnérabilités. Cela accélère le cycle de développement en fournissant des commentaires plus immédiats par rapport aux pipelines CI et aux services cloud.
Le scan
La commande est disponible par défaut dans Docker version 20.10. 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. Exécutez docker login
pour fournir votre nom d'utilisateur et votre mot de passe avant de commencer la numérisation.
Essayez d'exécuter docker scan --version
pour vérifier votre installation. Vous verrez le numéro de version du scan
brancher. Le résultat nomme également le fournisseur d'analyse de sécurité qui scan
utilisera (actuellement Snyk). D'autres fournisseurs pourraient être ajoutés à l'avenir.
Fonctionnement des analyses
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 des conteneurs. 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 présumez pas qu'une image qui passe un scan une fois obtiendra toujours le même résultat à l'avenir. Il est recommandé d'analyser régulièrement les images afin que vos charges de travail restent sécurisées.
Numériser une image
La façon la plus simple de scanner une image est de passer une balise à docker scan
:
docker scan hello-world:latest
L'analyse peut prendre quelques secondes. Les images plus grandes auront besoin de 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.
Même s'il peut être réconfortant d'obtenir le feu vert, le docker scan
le résultat est beaucoup plus intéressant lorsque des vulnérabilités sont détectées. Voici une analyse qui a révélé 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.
Plus d'analyses 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.
On peut dire que le drapeau le plus utile est --file
. Cela prend le chemin vers le Dockerfile
de l'image . 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'images de base obsolètes, ne sont disponibles que lorsque vous fournissez le Dockerfile
de votre image. .
docker scan hello-world:latest --file Dockerfile
Cela produira une sortie semblable à la suivante :
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
instruction 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. Passez le --exclude-base
drapeau pour y parvenir. Ceci 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 pouvant être résolus dans vos calques d'image.
Personnalisation de la sortie d'analyse
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
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 le JSON vous-même 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 différents packages sont intégrés, ce qui vous permet d'identifier où les problèmes surviennent.
Enfin, vous pouvez utiliser le --severity
drapeau pour filtrer les vulnérabilités indésirables. Utiliser low
, medium
, ou high
pour indiquer la gravité qui vous intéresse. La commande ne signalera que les vulnérabilités évaluées au niveau ou au-dessus du niveau donné.
Limites
docker scan
manque actuellement de support pour les distributions Alpine Linux. De plus, la version 0.7 du plug-in présente un bogue sérieux qui fait échouer les analyses locales avec une erreur « image introuvable ». 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 de Docker sous Linux.
Au-delà des problèmes techniques, le service Snyk impose des limites de débit strictes sur votre utilisation de docker scan
. Vous pouvez effectuer 10 analyses gratuitement chaque mois. Si vous vous connectez avec Snyk, cela passe à 200 scans par mois.
Exécutez docker scan --login
pour obtenir votre URL de connexion unique. Copiez-le dans votre navigateur et suivez les invites 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é
L'analyse 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 à la CLI Docker et à une image de conteneur peut désormais rechercher des vulnérabilités sans avoir à pousser vers 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.