Skip to main content

Gérer les conteneurs en toute sécurité

Écrit par
Headshot of Tales Casagrande

Tales Casagrande

feature safe containers

22 juin 2022

0 minutes de lecture

Ce billet a été écrit par Tales Casagrande, un Snyk Ambassador. Les Snyk Ambassadors ont à cœur de partager leur expertise en sécurité. Rejoignez-les dès aujourd’hui en vous inscrivant !

Dans le secteur maritime, le format des conteneurs est défini par la norme ISO 668, qui régit leur empilage en toute sécurité.

Imaginez vos applications réparties dans plusieurs conteneurs, exécutant différentes applications et répondant aux besoins de personnes du monde entier.

Sécuriser les conteneurs logiciels

Les logiciels modernes ne sont pas si différents d’un navire. Nous « empilons » plusieurs microservices dans nos projets, des équipes sont chargées du développement et de la sécurité de l’environnement, et une erreur critique peut tout compromettre. Voyons les conteneurs sous l’angle du développement et de la sécurité.

  • Faites-vous confiance à l’image que vous déployez en production ? Sa provenance est-elle fiable ?

  • Effectuez-vous des tests de sécurité pour détecter d’éventuels problèmes ?

  • Comment hiérarchisez-vous les corrections ?

  • Votre image de base contient-elle uniquement le strict nécessaire à l’exécution de votre application ?

  • L’équipe de développement se tient-elle au courant des bonnes pratiques ?

  • Votre équipe de sécurité vous accompagne-t-elle pendant le développement, ou se contente-t-elle de rejeter la faute sur quelqu’un lorsqu’une vulnérabilité est détectée ?

Si vous ne pouvez pas répondre à toutes ces questions, pas de souci ! Restez avec moi : je vais vous donner quelques conseils.

Commencer votre analyse avec Snyk Container

L’objectif est ici de lever les obstacles entre les équipes de sécurité et de développement en leur fournissant des informations pour hiérarchiser les vulnérabilités des conteneurs selon des critères, plutôt que de générer de volumineux rapports.

Prenons par exemple le dépôt snyk-goof, qui contient une application volontairement vulnérable destinée aux tests (son utilisation en production est déconseillée). Nous allons analyser cette application avec Snyk Container, qui permet d’automatiser facilement et efficacement la correction des vulnérabilités et aide les développeurs à se concentrer sur les problèmes.

Commencez par créer un compte (c’est gratuit !). Si vous en avez déjà un, connectez-vous. Accédez à Projets > Ajouter un projet.

Menu d’ajout de projet affichant les options GitHub, Docker Hub, CLI et Autre, avec « Surveiller les dépôts GitHub publics » en surbrillance
Interface Snyk de surveillance d’un dépôt GitHub public, affichant snyk/snyk-goof et un bouton « Importer 1 dépôt »

Notez que l’affichage des résultats de l’analyse dans votre nouveau projet importé peut prendre quelques minutes. Snyk peut analyser le code, les bibliothèques et les conteneurs. Aujourd’hui, nous allons nous concentrer sur les conteneurs.

Tableau de bord des projets Snyk affichant les résultats de l’analyse du code d’un Dockerfile et d’un fichier package.json, avec le nombre de problèmes par niveau de gravité et les dates des tests récents

Examinez le Dockerfile. Transporteriez-vous au large un conteneur présentant des problèmes critiques liés à des infrastructures ? Je ne le pense pas ! Posons-nous quelques questions :

  • Par où commencer ?

  • Quel est le niveau de priorité de chacun de ces problèmes ?

Pour élaborer votre plan, posez-vous les questions suivantes :

  • Quelqu’un pourrait-il exploiter ces failles ?

  • Existe-t-il déjà sur Internet un code malveillant (un exploit connu) permettant d’exploiter cette faille ?

  • Des personnes parlent-elles de cette faille sur les réseaux sociaux ?

  • Existe-t-il un correctif ?

Chaque vulnérabilité se voit attribuer un score par le Système de notation des vulnérabilités courantes (CVSS). Ce score repose notamment sur des critères tels que la surface d’attaque, la complexité de l’attaque, l’interaction de l’utilisateur et les privilèges requis.

Tableau de bord des vulnérabilités présentant les résultats pour les packages OpenSSL et curl, notamment les niveaux de gravité, les scores, l’état d’exploitabilité et les versions corrigées.

Snyk Container fournit de nombreuses informations utiles sur chaque vulnérabilité.

Panneau de vulnérabilité indiquant un problème critique de traversée de répertoires dans python3.5-minimal, avec la référence CVE-2019-9948 et une version corrigée du package.

Dans cet exemple, nous examinons une image simple, mais imaginez le déploiement à grande échelle. À quoi cela ressemblerait-il ? Nous pouvons établir une base de référence à partir des questions ci-dessus.

Tableau recommandant des mises à niveau des images de base et comparant les images Node.js selon le nombre et le niveau de gravité des vulnérabilités.

Cette image présente les recommandations de mise à niveau de l’image de base de Snyk Code. Ces mises à niveau réduisent les risques et nous évitent de perdre du temps à chercher une autre image de base (ou à tenter de la mettre à niveau).

Réaliser la même analyse avec la CLI Snyk

J’ai effectué mon analyse avec l’interface graphique. Mais les équipes de développement travaillent souvent en ligne de commande ou dans leur IDE. Supprimons donc l’obstacle d’une connexion supplémentaire et réalisons la même analyse avec la CLI Snyk.

Dans la console Snyk, accédez à Intégrations > CLI et suivez les étapes correspondant à votre environnement. Utilisons le même projet : snyk-goof.

Terminal affichant le clonage réussi du dépôt GitHub snyk-goof, avec le transfert des objets et la mise à jour des fichiers terminés à 100 %.

Construisons maintenant l’image.

Terminal affichant la réussite de la compilation Docker d’une application Node.js, avec les étapes de compilation mises en cache et le nom de l’image library/java-goof

Passons à la partie intéressante ! Démarrons l’analyse avec la CLI.

Terminal affichant la commande « snyk container test snyk-goof » et un message indiquant l’analyse des dépendances du conteneur snyk-goof
Sortie du terminal indiquant que 1 033 vulnérabilités ont été détectées dans une image de base Node.js, avec des recommandations de mise à niveau et des types d’images alternatifs.

Les résultats des tests dans la console et dans la CLI diffèrent légèrement, car je les ai effectués à des jours différents. Toutefois, l’analyse avec la CLI Snyk fournit toujours les mêmes recommandations de mise à niveau de l’image de base.

Les avantages d’une analyse fondée sur des métriques

De nouvelles vulnérabilités apparaissent constamment. Nous ne pouvons pas nous arrêter pour corriger chaque problème. Nous devons hiérarchiser les priorités, automatiser et concentrer nos efforts là où l’impact risque d’être le plus grave. Une analyse fondée sur des métriques réduit le bruit entre les équipes et vous aide à trouver rapidement comment gérer vos conteneurs en toute sécurité.

La sécurité des conteneurs, pensée pour les développeurs

Snyk détecte et corrige automatiquement les vulnérabilités dans les images de conteneurs et les workloads Kubernetes.