Skip to main content

Accélérez la correction des conteneurs grâce à la nouvelle détection automatique des images parentes de Snyk

Écrit par
blog feature snyk container pink

12 août 2021

0 minutes de lecture

Déployer vos applications dans des conteneurs vous permet de vous appuyer librement sur le travail d’autres personnes. Vous pouvez choisir parmi une variété d’images de conteneurs prêtes à l’emploi, capables d’exécuter presque tous les codes ou frameworks dont vous avez besoin. Snyk Container aide déjà les utilisateurs à gérer leurs images parentes et à trouver de meilleures options, avec moins de vulnérabilités, une empreinte globale réduite, ou les deux. Nous sommes ravis d’annoncer la dernière mise à jour de nos fonctionnalités de gestion des images : la détection automatique des images de base.

Des workflows de sécurisation des images simplifiés

Jusqu’à présent, Snyk Container identifiait l’image parente de votre image de conteneur analysée en examinant votre Dockerfile, au moment où l’image était testée, à l’aide de l’option --file=/path/to/Dockerfile. Cette méthode est pratique si vous avez le Dockerfile sous la main et si vous pensez à l’ajouter aux analyses. Mais soyons honnêtes : ajouter le Dockerfile est une étape supplémentaire, et cette approche diffère beaucoup du fonctionnement des autres scanners d’images. Nous voulions simplifier la gestion des images de base et fournir des recommandations dès la toute première analyse avec Snyk. Nous avons donc rendu la détection des images de base automatique ! Il vous suffit d’analyser vos images de conteneurs avec Snyk, et nous nous occupons du reste.

Fenêtre de terminal affichant la commande « snyk container test goofy:demo »

Dans l’exemple ci-dessus, j’ai analysé une application de démonstration qui s’exécute dans un conteneur basé sur node:10, une version très ancienne. Lors de l’analyse, Snyk Container détecte l’image parente node:10 que j’utilise et recommande de meilleures solutions qui élimineraient plus de 520 vulnérabilités de l’image que j’ai créée. La plupart des listes de bonnes pratiques pour les conteneurs recommandent de choisir des images de base plus légères afin de réduire la surface d’attaque. Il suffit d’exécuter un test de vulnérabilité sur un conteneur pour comprendre pourquoi : les images volumineuses ou obsolètes introduisent de nombreuses vulnérabilités. Souvent, choisir une image plus récente et plus légère est la solution la plus rapide et la plus efficace pour réduire les vulnérabilités. À l’inverse, corriger les vulnérabilités d’un conteneur une par une ou parcourir des centaines d’images de base dans des dépôts publics est rarement une bonne utilisation du temps. Snyk Container s’en charge pour les images les plus populaires de Docker Hub.

Dans l’exemple ci-dessous, j’ai analysé une autre application utilisant ruby:2.6-slim comme image de base. Contrairement à mon image Node, celle-ci est un bon choix, avec relativement peu de vulnérabilités — du moins, si j’avais créé mon image de conteneur récemment. Or, elle a été créée il y a environ sept mois. Au lieu de proposer d’autres images de base, Snyk m’indique donc que mon image Ruby est obsolète et que je dois la reconstruire pour corriger les vulnérabilités. Notez que j’ai utilisé l’option --json pour afficher les résultats au format JSON lisible par machine, pratique si vous souhaitez les transmettre à d’autres outils.

Fenêtre de terminal affichant la commande « snyk container test purpledobie/blog:good »

Prise en charge d’autres options de création de conteneurs

La détection automatique des images de base est importante pour une autre raison : de plus en plus d’outils de conteneurisation permettent de créer des conteneurs sans Dockerfile. Heureusement, ces outils adoptent largement les normes d’images de conteneurs de l’Open Container Initiative (OCI), ce qui signifie que vos outils et environnements d’exécution de conteneurs devraient pouvoir exécuter ces conteneurs. Des outils comme Jib, Buildah et Cloud Native Buildpacks permettent tous de créer des conteneurs conformes à OCI sans écrire de Dockerfile.

Snyk Container a toujours été capable d’analyser ces conteneurs. Désormais, grâce à la détection automatique des images de base, nous pouvons aussi fournir des recommandations pour ces autres workflows de création. Nous publierons des articles sur Jib et Cloud Native Buildpacks dans les prochaines semaines. Mais si vous ne pouvez pas attendre, créez simplement un conteneur avec l’outil de votre choix et analysez-le !

Fonctionnement de la détection des images de base

Cette fonctionnalité nous permet désormais de détecter l’image de base de vos conteneurs de deux façons et de vous proposer des recommandations :

  1. Analyser le Dockerfile pendant l’analyse : si vous utilisez déjà cette méthode, elle reste disponible et vous pouvez continuer à l’utiliser. Snyk Container fonctionnera comme auparavant. Nous utiliserons le Dockerfile comme source pour déterminer les détails de l’image de base, plutôt que la méthode de détection automatique.

  2. Analyser les couches de l’image : en analysant les couches d’une image, nous pouvons déterminer quelle image de base est utilisée. Snyk Container analyse les images officielles Docker les plus populaires publiées sur Docker Hub et suit les données relatives à leurs couches afin de comparer les couches de l’image analysée à ces références.

Aujourd’hui, nous nous concentrons sur les images officielles les plus populaires publiées sur Docker Hub. Il s’agit notamment d’images de base correspondant à des distributions Linux comme Debian, Alpine et Ubuntu ; d’images intégrant des langages de programmation et des frameworks comme Python, Node ou OpenJDK ; et d’images comprenant des composants d’application préconfigurés comme NGINX, WordPress, Mongo et MySQL. Il existe beaucoup d’autres images, et nous continuons d’en ajouter. Si vous souhaitez que nous en prenions une en charge, faites-le-nous savoir !

Pourquoi continuer à analyser votre Dockerfile

Vous pourriez penser qu’il est inutile d’analyser le Dockerfile maintenant que Snyk Container détecte automatiquement les images de base. Pourtant, si vous utilisez un Dockerfile, il reste de bonnes raisons de l’inclure dans vos pratiques de développement sécurisé :

  1. Alerte précoce : si vous importez des dépôts Git dans Snyk, nous recherchons notamment les Dockerfiles. Cela nous permet de vous avertir le plus tôt possible qu’une meilleure image de base est peut-être disponible. De plus, puisque nous sommes intégrés à vos dépôts de code source, nous pouvons même automatiser les corrections d’images de base au moyen de pull requests.

  2. Traçabilité : lorsque vous utilisez Snyk Container pour analyser à la fois le Dockerfile et les images de conteneurs créées à partir de celui-ci, vous pouvez relier les résultats. Vous pouvez ainsi retracer l’origine des images dans votre environnement et relier vos conteneurs de production en cours d’exécution à leur source.

  3. Exhaustivité : l’analyse du Dockerfile depuis Git vous alerte en amont sur le choix de l’image de base, mais elle se limite uniquement aux recommandations d’images de base. En effet, toute image créée à partir de ce Dockerfile variera selon le moment de sa création, car les paquets Linux et les images de base sont fréquemment mis à jour. Le Dockerfile seul ne peut pas vous indiquer ce qui se trouve réellement dans une image déjà créée. De plus, le Dockerfile est souvent stocké avec le code exécuté dans le conteneur. Vous disposez donc d’un contexte supplémentaire en examinant les vulnérabilités et les problèmes de code en même temps que ceux du conteneur.

En analysant à la fois le Dockerfile et les images, vous obtenez une vue complète des vulnérabilités, qu’elles proviennent de l’image de base ou d’autres couches de l’image, ainsi que la possibilité d’accéder directement au fichier source pour corriger rapidement les problèmes.

Pour commencer

Pour découvrir les fonctionnalités de détection des images de base et les recommandations de Snyk, rien de plus simple. Elles sont disponibles avec tous les forfaits, y compris notre forfait Free. Créez une image à partir de l’une des images de base officielles populaires de Docker, puis analysez-la avec Snyk Container. Avec la version 1.677 ou ultérieure de Snyk CLI, vous obtiendrez automatiquement des recommandations d’images de base. Vous pouvez également analyser les images dans vos pipelines CI/CD et vos registres de conteneurs. Si vous disposez d’un forfait Snyk Business ou Enterprise, vous pouvez aussi analyser les conteneurs en cours d’exécution dans vos clusters Kubernetes. Toutes ces méthodes fournissent les mêmes détection et recommandations d’images de base.

Sécurisez votre code grâce à des informations de pointe

Découvrez toutes les fonctionnalités SAST de Snyk Code en seulement 30 minutes.