Démarrage rapide Docker Scout
Docker Scout analyse le contenu des images et génère un rapport détaillé des paquets et vulnérabilités qu'il détecte. Il peut vous fournir des suggestions sur la façon de remédier aux problèmes découverts par l'analyse d'images.
Ce guide prend une image de conteneur vulnérable et vous montre comment utiliser Docker Scout pour identifier et corriger les vulnérabilités, comparer les versions d'images dans le temps, et partager les résultats avec votre équipe.
Étape 1 : Configuration
Ce projet d'exemple contient une application Node.js vulnérable que vous pouvez utiliser pour suivre.
-
Clonez son dépôt :
$ git clone https://github.com/docker/scout-demo-service.git
-
Déplacez-vous dans le répertoire :
$ cd scout-demo-service
-
Assurez-vous d'être connecté à votre compte Docker, soit en exécutant la commande
docker login
soit en vous connectant avec Docker Desktop. -
Construisez l'image et poussez-la vers
<ORG_NAME>/scout-demo:v1
, où<ORG_NAME>
est l'espace de noms Docker Hub vers lequel vous poussez.$ docker build --push -t <ORG_NAME>/scout-demo:v1 .
Étape 2 : Activer Docker Scout
Docker Scout analyse toutes les images locales par défaut. Pour analyser les images dans les dépôts distants, vous devez d'abord l'activer. Vous pouvez le faire depuis Docker Hub, le Tableau de bord Docker Scout, et CLI. Découvrez comment dans le guide d'aperçu.
-
Connectez-vous à votre compte Docker avec la commande
docker login
ou utilisez le bouton Se connecter dans Docker Desktop. -
Ensuite, inscrivez votre organisation avec Docker Scout, en utilisant la commande
docker scout enroll
.$ docker scout enroll <ORG_NAME>
-
Activez Docker Scout pour votre dépôt d'images avec la commande
docker scout repo enable
.$ docker scout repo enable --org <ORG_NAME> <ORG_NAME>/scout-demo
Étape 3 : Analyser les vulnérabilités d'images
Après la construction, utilisez la commande CLI docker scout
pour voir les vulnérabilités
détectées par Docker Scout.
L'exemple d'application pour ce guide utilise une version vulnérable d'Express. La commande suivante montre tous les CVE affectant Express dans l'image que vous venez de construire :
$ docker scout cves --only-package express
Docker Scout analyse l'image que vous avez construite le plus récemment par défaut, donc il n'est pas nécessaire de spécifier le nom de l'image dans ce cas.
Apprenez-en plus sur la commande docker scout cves
dans la
documentation de référence CLI.
Étape 4 : Corriger les vulnérabilités d'application
Après l'analyse Docker Scout, une vulnérabilité haute CVE-2022-24999 a été trouvée, causée par une version obsolète du paquet express.
La version 4.17.3 du paquet express corrige la vulnérabilité. Par conséquent, mettez à jour le fichier package.json
vers la nouvelle version :
"dependencies": {
- "express": "4.17.1"
+ "express": "4.17.3"
}
Reconstruisez l'image avec un nouveau tag et poussez-la vers votre dépôt Docker Hub :
$ docker build --push -t <ORG_NAME>/scout-demo:v2 .
Exécutez à nouveau la commande docker scout
et vérifiez que HIGH CVE-2022-24999 n'est plus présent :
$ docker scout cves --only-package express
✓ Provenance obtenue à partir de l'attestation
✓ Image stockée pour indexation
✓ 79 paquets indexés
✓ Aucun paquet vulnérable détecté
## Aperçu
│ Image Analysée
────────────────────┼───────────────────────────────────────────────────
Cible │ mobywhale/scout-demo:v2
digest │ ef68417b2866
plateforme │ linux/arm64
provenance │ https://github.com/docker/scout-demo-service.git
│ 7c3a06793fc8f97961b4a40c73e0f7ed85501857
vulnérabilités │ 0C 0H 0M 0L
taille │ 19 MB
paquets │ 1
## Paquets et Vulnérabilités
Aucun paquet vulnérable détecté
Étape 5 : Évaluer la conformité aux politiques
Bien qu'inspecter les vulnérabilités basées sur des paquets spécifiques puisse être utile, ce n'est pas la façon la plus efficace d'améliorer votre conduite de chaîne d'approvisionnement.
Docker Scout prend également en charge l'évaluation de politiques, un concept de plus haut niveau pour détecter et corriger les problèmes dans vos images. Les politiques sont un ensemble de règles personnalisables qui permettent aux organisations de suivre si les images sont conformes à leurs exigences de chaîne d'approvisionnement.
Parce que les règles de politique sont spécifiques à chaque organisation,
vous devez spécifier contre la politique de quelle organisation vous évaluez.
Utilisez la commande docker scout config
pour configurer votre organisation Docker.
$ docker scout config organization <ORG_NAME>
✓ Organisation définie avec succès à <ORG_NAME>
Maintenant vous pouvez exécuter la commande quickview
pour obtenir un aperçu
du statut de conformité pour l'image que vous venez de construire.
L'image est évaluée contre les configurations de politique par défaut. Vous verrez une sortie similaire à celle qui suit :
$ docker scout quickview
...
Statut de politique ÉCHEC (2/6 politiques respectées, 2 données manquantes)
Statut │ Politique │ Résultats
─────────┼──────────────────────────────────────────────┼──────────────────────────────
✓ │ Aucune licence copyleft │ 0 paquets
! │ Utilisateur non-root par défaut │
! │ Aucune vulnérabilité critique ou haute │ 2C 16H 0M 0L
│ corrigeable │
✓ │ Aucune vulnérabilité de haut profil │ 0C 0H 0M 0L
? │ Aucune image de base obsolète │ Aucune donnée
? │ Attestations de chaîne d'approvisionnement │ Aucune donnée
Les points d'exclamation dans la colonne statut indiquent une politique violée. Les points d'interrogation indiquent qu'il n'y a pas assez de métadonnées pour compléter l'évaluation. Une coche indique la conformité.
Étape 6 : Améliorer la conformité
La sortie de la commande quickview
montre qu'il y a place à l'amélioration.
Certaines des politiques n'ont pas pu être évaluées avec succès (Aucune donnée
)
car l'image manque d'attestations de provenance et SBOM.
L'image a également échoué à la vérification sur quelques-unes des évaluations.
L'évaluation de politique fait plus que simplement vérifier les vulnérabilités.
Prenez la politique Utilisateur non-root par défaut
par exemple.
Cette politique aide à améliorer la sécurité d'exécution en s'assurant que
les images ne sont pas configurées pour s'exécuter comme le superutilisateur root
par défaut.
Pour adresser cette violation de politique, éditez le Dockerfile en ajoutant une instruction USER
,
spécifiant un utilisateur non-root :
CMD ["node","/app/app.js"]
EXPOSE 3000
+ USER appuser
De plus, pour obtenir un résultat d'évaluation de politique plus complet, votre image devrait avoir des attestations SBOM et de provenance attachées. Docker Scout utilise les attestations de provenance pour déterminer comment l'image a été construite afin qu'il puisse fournir un meilleur résultat d'évaluation.
Avant de pouvoir construire une image avec des attestations,
vous devez activer le
magasin d'images containerd
(ou créer un constructeur personnalisé utilisant le pilote docker-container
).
Le magasin d'images classique ne prend pas en charge les listes de manifestes,
qui est la façon dont les attestations de provenance sont attachées à une image.
Ouvrez Paramètres dans Docker Desktop. Sous la section Général, assurez-vous que l'option Utiliser containerd pour tirer et stocker les images est cochée, puis sélectionnez Appliquer & Redémarrer. Notez que changer les magasins d'images cache temporairement les images et conteneurs du magasin d'images inactif jusqu'à ce que vous repassiez.
Avec le magasin d'images containerd activé, reconstruisez l'image avec un nouveau tag v3
.
Cette fois, ajoutez les flags --provenance=true
et --sbom=true
.
$ docker build --provenance=true --sbom=true --push -t <ORG_NAME>/scout-demo:v3 .
Étape 7 : Voir dans le Tableau de bord
Après avoir poussé l'image mise à jour avec des attestations, il est temps de voir les résultats à travers un prisme différent : le Tableau de bord Docker Scout.
- Ouvrez le Tableau de bord Docker Scout.
- Connectez-vous avec votre compte Docker.
- Sélectionnez Images dans la navigation de gauche.
La page des images liste vos dépôts activés Scout.
Sélectionnez la ligne pour l'image que vous voulez voir, n'importe où dans la ligne sauf sur un lien, pour ouvrir la barre latérale Détails de l'image.
La barre latérale montre un aperçu de conformité pour le dernier tag poussé d'un dépôt.
NoteSi les résultats de politique n'apparaissent pas encore, essayez de rafraîchir la page. Cela peut prendre quelques minutes avant que les résultats apparaissent si c'est votre première fois à utiliser le Tableau de bord Docker Scout.
Retournez à la liste des images et sélectionnez la version de l'image, disponible dans la colonne Image la plus récente. Ensuite, en haut à droite de la page, sélectionnez le bouton Mettre à jour l'image de base pour inspecter la politique.
Cette politique vérifie si les images de base que vous utilisez sont à jour.
Elle a actuellement un statut non conforme,
parce que l'image d'exemple utilise une ancienne version alpine
comme image de base.
Fermez le modal Corrections recommandées pour l'image de base. Dans la liste des politiques, sélectionnez le bouton Voir les corrections, à côté du nom de la politique pour les détails sur la violation, et les recommandations sur comment l'adresser.
Dans ce cas, l'action recommandée est d'activer l'intégration GitHub de Docker Scout, qui aide à garder vos images de base à jour automatiquement.
TipVous ne pouvez pas activer cette intégration pour l'app de démo utilisée dans ce guide. N'hésitez pas à pousser le code vers un dépôt GitHub que vous possédez, et essayez l'intégration là-bas !
Résumé
Ce guide de démarrage rapide a effleuré la surface de quelques-unes des façons dont Docker Scout peut supporter la gestion de la chaîne d'approvisionnement logiciel :
- Comment activer Docker Scout pour vos dépôts
- Analyser les images pour les vulnérabilités
- Politique et conformité
- Corriger les vulnérabilités et améliorer la conformité
Et ensuite ?
Il y a beaucoup plus à découvrir, des intégrations tierces, à la personnalisation de politiques, et au monitoring d'environnement d'exécution en temps réel.
Consultez les sections suivantes :