Trivy scanne les fichiers Docker Compose

Un article XDA ce mois-ci a exposé quelque chose que la plupart des homelabs apprennent de manière difficile: un fichier Docker Compose fonctionnel n’est pas un fichier Docker Compose sécurisé. Les ports sont liés à 0.0.0.0 alors qu’ils devraient rester sur 127.0.0.1, les services de base de données se retrouvent sur le même pont public que le proxy inverse, et les tableaux de bord d’administration sont livrés avec des identifiants par défaut que personne n’a pensé à faire tourner. La solution est un scanner qui lit le fichier compose, l’image et la configuration du conteneur ensemble, et signale ce qui est exposé. Nous avons testé sept outils de sécurité Docker Compose sur Windows, macOS et Linux contre une vraie pile homelab, en nous concentrant sur les vérifications qui détectent les mauvaises configurations réelles plutôt que du bruit.

Ce qu’il faut rechercher dans un scanner de sécurité Docker Compose

L’analyse consciente de Compose est la première vérification. Un scanner qui ne lit que les Dockerfiles manquera les liaisons de port, la topologie du réseau et les blocs d’environnement qui résident dans docker-compose.yml. Le bon choix lit les deux et comprend expose par rapport à ports, les réseaux en mode hôte et les montages de liaison qui atteignent /etc ou /var/run/docker.sock.

Les données de vulnérabilité doivent être actuelles. Cela signifie un flux CVE qui se met à jour quotidiennement, une couverture des paquets de distribution et des dépendances au niveau du langage, et un moyen de dire quels résultats sont réellement exploitables dans le conteneur en exécution plutôt que simplement présents dans l’image. Un outil qui expose chaque CVE quel que soit le contexte inonde un homelab avec des avertissements et est ignoré en une semaine.

La sortie compatible CI est ce qui transforme un scan unique en une vérification durable. Sortie JSON ou SARIF, codes de sortie non nuls sur les résultats au-dessus d’une sévérité choisie, et les commentaires de suppression en ligne dans le fichier compose permettent au même outil de vivre dans un crochet de précommit git, un travail GitHub Actions ou un cron nocturne. L’opération local-first est importante pour un homelab, pas de télémétrie, pas de compte cloud forcé.

Comparaison rapide

Application Idéal pour Plateformes Plan gratuit Prix de départ Évaluation
Trivy Scanner d’image et de compose tout-en-un Windows, macOS, Linux Oui Gratuit 4.8
Docker Bench for Security Audit hôte et daemon CIS Linux, macOS Oui Gratuit 4.6
Grype Scan rapide des vulnérabilités d’image Windows, macOS, Linux Oui Gratuit 4.6
Dockle Linter de meilleures pratiques d’image Windows, macOS, Linux Oui Gratuit 4.5
Hadolint Linter Dockerfile avec règles de sécurité Windows, macOS, Linux Oui Gratuit 4.6
Checkov Scanner de politique IaC et compose Windows, macOS, Linux Oui Gratuit 4.6
Sysdig CLI Scanner Scan d’image profond conscient du runtime Windows, macOS, Linux Essai Modéré pour utilisation commerciale 4.5

1. Trivy, la première passe par défaut pour n’importe quelle pile compose

Trivy est l’outil sur lequel la plupart des homelabs atterrissent en premier, et il mérite cette place. Il scanne les images de conteneur pour les vulnérabilités du système d’exploitation et du langage, lit les Dockerfiles et les fichiers compose pour les mauvaises configurations, et comprend maintenant une analyse des secrets qui détecte une clé API engagée dans un fichier env. Une seule exécution de trivy config docker-compose.yml contre une vraie pile homelab produit un rapport lisible en moins d’une minute.

L’actualisation de la base de données s’exécute à chaque scan par défaut, ce qui maintient les résultats à jour sans travail cron. Les modes de sortie couvrent un tableau lisible par l’homme, JSON, SARIF et les SBOM CycloneDX, et les codes de sortie fonctionnent dans un pipeline CI. C’est gratuit et open source, s’exécute comme un seul binaire et reste utile bien après le scan initial.

2. Docker Bench for Security, l’audit CIS pour l’hôte et le daemon

Docker Bench for Security est un script shell qui parcourt l’étalon de référence Docker CIS par rapport à un hôte en exécution. Il vérifie la configuration du daemon, les conteneurs en cours d’exécution et les images déjà sur disque par rapport à environ cent contrôles documentés, et imprime un rapport avec les statuts pass, warn, info et note.

Ce n’est pas un analyseur de compose, mais c’est le moyen le plus rapide de détecter les mauvaises configurations au niveau de l’hôte qu’un scanner de compose ne peut pas voir: un daemon Docker écoutant sur TCP sans TLS, les conteneurs --privileged, les manques de no-new-privileges, les valeurs par défaut des pilotes de journalisation et les autorisations de fichier sur /etc/docker. Exécutez une fois par mois sur n’importe quel hôte qui exécute un service public, et épinglez les résultats au wiki.

3. Grype, scan rapide des vulnérabilités d’image couplé à Syft

Grype est le scanner de vulnérabilités open source d’Anchore. Il lit une image directement ou un SBOM produit par Syft et retourne une liste de CVE connues contre les paquets installés et les dépendances au niveau du langage. Les scans s’exécutent en quelques secondes car Grype expédie sa base de données de vulnérabilités localement et se met à jour selon un calendrier.

La raison de l’associer à Trivy est la couverture. Trivy est plus large; Grype détecte souvent les paquets au niveau du langage que Trivy manque, en particulier dans les images Python et Node. En pratique, nous exécutons les deux dans le même pipeline et échouons sur tout résultat de haute sévérité de l’un ou l’autre. Grype n’ajoute pas de télémétrie forcée et pas de compte, et cela fonctionne de la même manière sur tous les systèmes d’exploitation de bureau.

4. Dockle, linter de meilleures pratiques d’image pour l’étape CI

Dockle est un linter d’image de conteneur aligné sur les meilleures pratiques CIS. Où Trivy se concentre sur les CVE et Grype sur les vulnérabilités des paquets, Dockle vérifie comment l’image est construite: USER est-il défini sur un compte non-root, est-ce qu’un binaire sudo inutile expédie à l’intérieur, est-ce que les secrets sont cuits dans les couches, l’image expose-t-elle un shell dont elle n’a pas besoin. Les résultats cartographient les numéros de contrôle CIS.

C’est un petit binaire qui s’adapte à un travail CI comme une seule commande par image. La sortie est assez courte pour être lue, et le code de sortie facilite la porte. Avec un scanner de compose, il couvre les deux côtés du même problème: ce que le fichier compose câble et ce que l’image contient avant même qu’elle ne soit câblée.

5. Hadolint, linter Dockerfile qui détecte les erreurs adjacentes de compose

Hadolint lit un Dockerfile et signale les modèles qui deviennent des problèmes de compose: les identifiants codés en dur, les étiquettes manquantes, apt-get install -y sans nettoyage, les utilisateurs root laissés en place et ADD utilisé où COPY appartient. Il analyse le Dockerfile avec un vrai analyseur de shell Haskell, c’est pourquoi il détecte les problèmes qu’un outil basé sur regex manque.

Hadolint est en amont de compose. Réparez le Dockerfile une fois et le scanner de compose a moins de quoi se plaindre. Il s’exécute comme un seul binaire, s’intègre proprement à pre-commit ou CI, et ajoute l’une des vérifications de signal les plus élevées par ligne de code que nous ayons mesurée sur les projets homelab.

6. Checkov, politique en tant que code entre compose, Kubernetes et Terraform

Checkov est un scanner de politique en tant que code qui parle docker-compose, les manifestes Kubernetes, Terraform, Helm et une douzaine d’autres formats IaC. Sur un fichier compose, il signale les sockets daemon exposées, les conteneurs root, le mode réseau hôte, les limites de ressources manquantes et les liaisons de port publiques. Les politiques sont expédiées avec des valeurs par défaut sensibles et peuvent être ajustées par dépôt avec un fichier de configuration.

La raison de le choisir plutôt qu’un outil de format unique est le mélange. Un homelab qui exécute Docker Compose aujourd’hui mais prévoit de passer à un petit cluster k3s ou Nomad demain obtient les mêmes vérifications contre les deux, et les mêmes commentaires de suppression se transfèrent. Il s’exécute partout où Python s’exécute, ce qui couvre tous les systèmes d’exploitation de bureau.

7. Sysdig CLI Scanner, l’option la plus profonde quand le contexte d’exécution importe

Sysdig CLI Scanner combine le scan de vulnérabilité avec la conscience du runtime. Il lit l’image, corrige les CVE par rapport à un flux de vulnérabilité, et, lorsqu’il est associé à un déploiement Sysdig, filtre les paquets réellement chargés au runtime. Ce seul filtre convertit souvent un rapport de centaines de résultats en une courte liste d’une douzaine.

Le scanner s’exécute comme un seul binaire sur chaque système d’exploitation de bureau. Le niveau gratuit couvre l’évaluation et les petits déploiements; l’utilisation commerciale relève d’un plan payant. Pour un homelab sérieux ou une petite équipe qui héberge des services en dehors du LAN, le filtre de runtime vaut la peine d’être mis en place. Pour une pile purement privée, Trivy plus Grype couvre la plupart du même terrain gratuitement.

Comment choisir le bon

La réponse par défaut pour un homelab est Trivy. Installez-le, exécutez-le contre le fichier compose et corrigez ce qui apparaît. Il couvre les CVE d’image, les mauvaises configurations de compose et la détection des secrets dans un seul binaire. Si un homelab exécute des services publics, ajoutez Docker Bench for Security comme audit mensuel contre l’hôte lui-même, car un scanner de compose ne peut pas voir les problèmes au niveau du daemon.

Pour les équipes qui construisent leurs propres images, Hadolint détecte les erreurs à l’étape Dockerfile, et Dockle détecte celles qui survivent à l’image construite. Grype mérite une place à côté de Trivy lorsque la charge de travail est lourde en Python ou Node, car elle tend à trouver les CVE au niveau du langage que d’autres ont manqués. Checkov est le bon choix pour un référentiel d’IaC mixte. Sysdig CLI Scanner est l’option la plus profonde pour les équipes qui veulent un contexte de runtime et qui sont prêtes à l’associer à un backend Sysdig. Empiler les sept est excessif; choisissez deux ou trois et exécutez-les à chaque commit.

FAQ

Comment scanne-je un docker-compose.yml pour les problèmes de sécurité? Installez Trivy et exécutez trivy config docker-compose.yml. Il signale l’exposition des ports, les conteneurs root, les sockets Docker montés et les modèles de secrets dans un rapport en texte brut. Ajoutez --exit-code 1 --severity HIGH,CRITICAL pour échouer dans un pipeline CI sur les résultats graves.

Trivy est-il meilleur que Grype pour la sécurité Docker? Ils sont complémentaires plutôt que concurrents. Trivy couvre une surface plus large, les fichiers de compose, les images et les IaC, tandis que Grype détecte souvent plus de CVE au niveau du langage dans les images Python, Node et Ruby. Exécuter les deux dans le même pipeline détecte plus que l’un ou l’autre seul.

Quelle est la différence entre Dockle et Hadolint? Hadolint vérifie le Dockerfile avant la construction de l’image. Dockle vérifie l’image construite elle-même. Ensemble, ils couvrent le même problème des deux côtés: les mauvais modèles de construction et le mauvais état d’image.

Puis-je exécuter ces outils sans connexion Internet? Trivy, Grype et Sysdig CLI Scanner supportent tous l’opération en air-gap en important la base de données de vulnérabilité d’un miroir. Dockle, Hadolint et Docker Bench for Security s’exécutent hors ligne par défaut car leurs règles sont intégrées.

Ces scanners fonctionnent-ils sur Windows et macOS? Oui. Trivy, Grype, Dockle, Hadolint, Checkov et Sysdig CLI Scanner expédient des binaires natifs ou des conteneurs pour Windows, macOS et Linux. Docker Bench for Security est un script bash et s’exécute sur macOS et Linux; sous Windows, il s’exécute dans WSL.

Ces outils sont-ils gratuits pour un usage personnel? Les sept ont un niveau gratuit pour un usage personnel et homelab. Trivy, Grype, Dockle, Hadolint, Checkov et Docker Bench for Security sont entièrement open source. Sysdig CLI Scanner est gratuit pour l’évaluation et petit usage, avec un plan payant pour les déploiements commerciaux.