Skip to main content

Guide d’analyse de sécurité Docker 2023

Écrit par:
0 minutes de lecture

Docker dispose d’une gigantesque base d’utilisateurs mondiale qui a récemment dépassé les 10 millions d’utilisateurs. Avec 242 milliards d’extractions d’images, cette base a changé le mode de création des applications.

La vitesse de développement accélérée que permet la conteneurisation transfère de nouvelles responsabilités aux développeurs en matière de sécurité : ils doivent désormais gérer les images de conteneurs en plus de leur code. C’est pourquoi l’intégration de Snyk avec Docker, conçue pour les développeurs, représente un atout majeur dans le paysage actuel de la sécurité.

Qu’est-ce que Docker ?

Docker est un ensemble de produits de plateforme en tant que service (Paas) utilisés pour exécuter des applications et des services dans leurs propres bacs à sable dédiés (appelés conteneurs) en utilisant la virtualisation au niveau du système d’exploitation.

Docker vous permet d’installer toutes les dépendances dont un service a besoin à l’intérieur d’un conteneur afin de ne plus avoir à vous soucier d’installer des versions indésirables ou différentes du même paquet en natif sur votre ordinateur. Cela simplifie la distribution de l’environnement de travail complet d’une application à d’autres personnes, au sein de votre équipe ou en dehors.

Vous pouvez facilement télécharger ou pousser vos images Docker vers le Docker Hub de Docker, qui propose des comptes gratuits et payants, ou vers des registres tiers tels qu’Amazon Elastic Container Registry (ECR) ou Google Container Registry (GCR).

Mais comment indiquer à un conteneur les dépendances ou les outils à installer à l’intérieur de celui-ci ? Dockerfile a été spécialement été conçu à cet effet.

Qu’est-ce qu’un Dockerfile ?

Un Dockerfile est un fichier qui indique à Docker comment préparer un conteneur. Une fois que vous avez écrit toutes les instructions dans le Dockerfile, vous pouvez créer une image à partir de ce fichier. Pour partager vos images, vous pouvez soit partager simplement le blueprint du Dockerfile (toute personne pourra ainsi créer l’image), soit partager directement les images. Quel avantage à cela ? C’est simple : une fois que vous avez partagé votre image, il n’est pas nécessaire de la recréer.

L’analyse de sécurité Docker expliquée

Qu’est-ce que l’analyse de sécurité des images Docker ?

L’analyse de sécurité des images Docker est un processus qui consiste à identifier les vulnérabilités de sécurité connues dans les paquets répertoriés dans votre image Docker. Elle vous permet de détecter les vulnérabilités dans les images de conteneurs et de les corriger avant de pousser l’image vers Docker Hub ou tout autre registre.

Grâce à l’intégration de Snyk avec Docker, l’analyse de la sécurité des conteneurs axée sur les développeurs est directement intégrée à vos outils Docker. Vous pouvez scanner votre image de conteneur immédiatement après sa création, directement depuis Docker Desktop, à l’aide d’une simple commande : 

snyk container test <image-name>

Cela vous permet de détecter les vulnérabilités dans les images de conteneurs et de les corriger avant de pousser l’image vers Docker Hub ou tout autre registre.

Les analyses de vulnérabilité optimisées par Snyk sont un peu différentes de celles que vous avez l’habitude de voir. Snyk ne se contente pas d’énumérer les problèmes, il guide les développeurs vers l’action :

  • En incluant le Dockerfile avec l’image par le biais de l’option --file
    <path/to/Dockerfile>, les résultats de docker scan incluent des détails sur la façon de sélectionner une image de base plus récente et/ou plus petite avec un moins grand nombre de vulnérabilités.

  • En outre, les vulnérabilités sont mappées à l’instruction Dockerfile qui les a introduites, avec les dépendances pertinentes nécessaires pour retrouver un problème et le traiter.

Pourquoi l’analyse de sécurité Docker est-elle importante ?

Cette analyse représente le principal moyen de détecter et corriger les vulnérabilités des images de conteneurs avant de les pousser vers Docker Hub ou d’autres registres.

Si vous utilisez un service d’orchestration de conteneurs comme Kubernetes, vous pouvez penser que ces questions de sécurité sont déjà prises en charge. Mais ce n’est pas toujours le cas. Kubernetes dispose de politiques de sécurité pour l’exécution des pods (les pods sont essentiellement des conteneurs), mais n’assure pas vraiment la sécurité du code ou des services exécutés à l’intérieur de ceux-ci. Cette responsabilité incombe à l’utilisateur. Lorsque vous configurez votre cluster Kubernetes, ce qui se fait également avec du code, il est important de suivre les meilleures pratiques de sécurité Kubernetes.

Types d’analyse de sécurité Docker

Il ne suffit pas toujours de vérifier les vulnérabilités connues des paquets répertoriés dans vos images Docker via la base de données des vulnérabilités et expositions courantes mentionnée plus haut. Les vulnérabilités de sécurité peuvent se cacher partout. Il existe toute une gamme d’outils et de services d’analyse de sécurité pour les conteneurs Docker :

  • Outils de configuration réseau : ils analysent le port de l’image Docker et la configuration du réseau pour identifier et signaler ce type de problèmes. Exemples : Cilium et Sysdig Falco.

  • Outils de gestion des identités et des accès : une mesure de sécurité essentielle consiste à empêcher votre conteneur d’avoir un accès complet à toutes vos ressources. Cela implique l’attribution de certains rôles et responsabilités aux conteneurs Docker. Il existe des outils qui non seulement facilitent cette tâche, mais permettent également d’appliquer et de surveiller ces rôles. Notary en fait partie.

  • Outils de politiques définies par l’utilisateur : certains outils vous permettent même de définir et d’appliquer vos propres politiques de sécurité dans vos conteneurs, comme par exemple Grafeas.

  • Outils open source : il existe un certain nombre d’outils d’analyse des vulnérabilités open source. Ils sont populaires parmi les développeurs, car ils utilisent souvent d’autres outils open source, tels que des frameworks, des systèmes d’exploitation ou des environnements de développement intégrés (IDE). Les experts en sécurité préfèrent eux aussi les outils open source, car ils sont faciles à auditer et offrent une meilleure visibilité. Si vous vous lancez dans la virtualisation de conteneurs Docker, vous devrez également savoir quelle instruction du Dockerfile est à l’origine du problème de sécurité dans votre conteneur. Certains outils vous y aideront. Snyk est un excellent outil d’analyse de sécurité open source. Vous pouvez vous inscrire pour l’utiliser gratuitement.

Bien que la sécurité d’une image ou d’un conteneur Docker ne puisse être garantie à 100 %, ce type d’outils d’analyse de sécurité des images Docker vous aide à minimiser le risque de vulnérabilité dans votre application et votre infrastructure. Certains outils offrent même une surveillance permanente des conteneurs et des alertes, de sorte que vous êtes informé quand un problème est détecté. Et en suivant les meilleures pratiques de sécurité Docker, vous minimisez le risque d’introduire des vulnérabilités de sécurité. Créez et livrez des applications conteneurisées en toute confiance. Sécurisez vos applications conteneurisées avec l’outil d’analyse des vulnérabilités Docker de Snyk.

Analyse de sécurité Docker : guide de référence

Docker Vulnerability Scanning CLI Cheat Sheet
Téléchargez le guide de référence Docker CLI ici

Docker dispose d’une gigantesque base d’utilisateurs mondiale qui a récemment dépassé les 10 millions d’utilisateurs. Avec 242 milliards d’extractions d’images, cette base a changé le mode de création des applications.

La vitesse de développement accélérée que permet la conteneurisation transfère de nouvelles responsabilités aux développeurs en matière de sécurité : ils doivent désormais gérer les images de conteneurs en plus de leur code. C’est pourquoi l’intégration de Snyk avec Docker, conçue pour les développeurs, représente un atout majeur dans le paysage actuel de la sécurité.

Lors de la conférence SnykCon 2020, nous avons annoncé l’intégration de l’analyse des conteneurs optimisée par Snyk dans la dernière version de Docker Desktop. Nous avions auparavant annoncé que Snyk deviendrait le fournisseur de sécurité pour les images officielles de Docker et que le scan de sécurité de Snyk serait intégré directement dans Docker Hub.

Les 5 étapes de l’analyse des conteneurs avec Docker Desktop

  1. Assurez-vous que votre version de Docker Desktop est à jour.

  2. Connectez-vous.

  3. Analysez votre première image de conteneur avec Docker scan.

  4. Analysez votre image avec votre Dockerfile.

  5. Filtrez les résultats de l’analyse.

Notre guide de référence CLI d’analyse des vulnérabilités Docker accompagnera vos premier pas dans l’analyse des images de conteneurs avec Docker Desktop et Snyk. Vous trouverez ci-dessous quelques conseils pour vous lancer.

ÉTAPE 1 : assurez-vous que votre version de docker desktop est à jour

Docker Desktop a intégré les fonctionnalités d’analyse de Snyk depuis déjà plusieurs mois. Si vous n’avez pas effectué de mise à jour récemment ou si vous n’êtes pas certain de posséder les composants Snyk, voici la vérification à effectuer.

Via la CLI

Docker Desktop « About » (À propos de)

La commande docker scan sera disponible.

Si vous voyez la petite icône Snyk et les informations sur la version, c’est que vous êtes à jour.

$ docker scan --help
Usage: docker scan [OPTIONS] IMAGE A tool to scan your images

Étape 2 : connectez-vous

Pour commencer l’analyse, vous devez disposer d’un ID Docker et être connecté via Docker Desktop. Vous pouvez effectuer gratuitement 10 tests d’images de conteneurs par mois. Si vous vous connectez avec Snyk, vous disposez de 200 analyses par mois. Le login Snyk est intégré avec votre ID Docker, donc même si vous n’avez pas de login pour Snyk, vous pouvez continuer.

$ docker scan --login

Si vous préférez vous authentifier avec un jeton d’API, assurez-vous d’inclure l’indicateur --token et votre jeton comme argument d’indicateur. Vous trouverez votre jeton d’API Snyk sous Settings --> ServiceAccounts (Paramètres -> comptes service) dans la console Snyk.

L’inscription à Snyk permet également d’accéder à d’autres fonctions d’analyse de sécurité open source pour vos dépendances, vos fichiers de configuration, etc. Consultez notre vidéo concernant l’intégration de Snyk tout au long du cycle du développement logiciel (SDLC), y compris dans les IDE, la gestion du code source (SCM), les plateformes d’intégration et de développement continus (CI/CD), etc.

Étape 3 : analysez votre première image de conteneur avec docker scan

La commande de base docker scan myapp:mytag vous permet d’analyser une seule image Docker afin d’y détecter des vulnérabilités. Il existe un certain nombre d’indicateurs supplémentaires que vous pouvez inclure pour produire des résultats plus granulaires. Ils sont détaillés ci-dessous.

Étape 4 : Analysez votre image avec votre Dockerfile.

L’option --file path/to/Dockerfile est généralement l’une des plus utiles. En incluant le Dockerfile, vous pouvez obtenir des recommandations de mise à niveau pour les images de base de Docker Official, et les vulnérabilités seront mappées aux commandes du Dockerfile qui les ont introduites.

Étape 5 : filtrez les résultats de l’analyse

L’indicateur --exclude-base, qui doit être utilisé avec l’indicateur --file, ignorera toutes les vulnérabilités provenant de l’image de base afin que vous puissiez vous concentrer sur la remédiation des problèmes dans votre propre image de conteneur.

L’indicateur --dependency-tree inclura une arborescence de dépendances des paquets avec les résultats de l’analyse de vulnérabilité pour faciliter la recherche de la source des problèmes.

L’indicateur --json vous permet de contrôler la sortie des résultats de l’analyse. Avec l’outil jq tool, vous pouvez ensuite analyser et filtrer les résultats JSON en fonction des clés suivantes :

  • packageName: nom du paquet de premier niveau

  • severity: évaluation basée sur un système standardisé de notation des vulnérabilités (CVSS)

  • id: identifiant dans la base de données des vulnérabilités de Snyk

  • name: nom du fichier binaire de vulnérabilité

  • version: version installée dans l’image du conteneur

  • nearestFixedInVersion: version minimale requise pour corriger une vulnérabilité

  • dockerfileInstruction: ligne où le paquet vulnérable a été introduit dans Dockerfile

  • dockerBaseImage: image parente détectée

Les étapes ci-dessus vous permettront de vous familiariser avec la sécurité des conteneurs. Si vous recherchez un aide-mémoire pratique ou plus d’exemples, consultez le Guide de référence Docker CLI. La CLI d’analyse des conteneurs Docker est un outil simple, mais puissant, pour détecter et corriger les vulnérabilités dès le début du développement. Cette solution native de Docker peut être exécutée immédiatement après la création, ce qui permet de résoudre les problèmes avant que l’image ne soit poussée vers Docker Hub. Si vous avez des questions ou un cas d’utilisation à partager, rendez-vous sur le site de la communauté Snyk.