Comment utiliser Docker Scan en local
Docker et Snyk ont récemment conclu un partenariat pour fournir une analyse des vulnérabilités des images Docker ce qui permet de mieux gérer la sécurité des containers que vous mettez à disposition (aussi bien sur le DockerHub que sur une registry privée). Cette feature a également été intégrée dans les clients Docker Desktop. Avant cela il n'existait pas de moyen simple et rapide de fournir une analyse des vulnérabilités, c'était possible certes, mais de manière plus ou moins complexe. Cette feature est aussi intégrée sur DockerHub et de manière automatique (idéal quand vous avez les builds automatiques aussi) mais uniquement disponible sur l'offre payante :
Docker a donc inclus une nouvelle commande à partir de la version 2.3.6.0 (on parle de la version du Docker Desktop) appelée "docker scan".
Cette commande va permettre de scanner vos images locales par rapport au moteur de sécurité Snyk, vous offrant ainsi une visibilité de sécurité dans vos fichiers Docker et vos images en local. Le moteur Snyk analyse les fichiers Docker et vos images pour des vulnérabilités et expositions courantes (CVE) et fournit des recommandations pour les remédiations.
Lancer un scan manuellement depuis la CLI est tout aussi simple qu'un build :
Par exemple voici le résultat d'un scan de l'image Redis (redis:latest) :
Ou bien de mon image kube-rclone (djerfy/kube-rclone:1.53.2) :
Lorsque vous incluez le Dockerfile associé à l'image, vous obtenez des résultats encore plus détaillés, à savoir quelle couche exacte du Dockerfile est responsable de quelles vulnérabilités. Dans cet exemple j'ai pris mon image "djerfy/imapsync" qui est basée sur un Ubuntu 19.10 avec plusieurs dépendances en Perl :
Il est également possible d'avoir une sortie au format JSON qui peut être utile à des intégrations (webhook par exemple) ou sous forme d'arborescence de dépendances qui est utile a mieux comprendre la structure de l'image.
Pour conclure, l'analyse vous aide à éviter une potentielle catastrophe en production, ce qui vous permettra d'économiser du temps et de l'argent. Rassurez-vous sur le fait qu'il est tout à fait possible d'utiliser le scan en local gratuitement. L'offre payante est uniquement nécessaire pour l'inclure de manière automatique lors de vos pushs, rassurant ainsi les personnes qui utilisent vos images. Dès à présent je vous recommande de rajouter une tâche dans votre backlog afin d'intégrer cette logique de sécurité (pour au minimum avoir connaissance des risques dans votre image).
Ok? Now let's go!