In this article
Tout savoir pour débuter avec la sécurité des conteneurs
La sécurité des conteneurs pour les développeurs
L’utilisation des conteneurs a connu une croissance exponentielle ces dernières années. Si les technologies de conteneurs existent depuis des décennies, c’est le lancement de Docker en 2013 qui a permis aux organisations d’adopter plus facilement un modèle de développement et d’exploitation axé sur les conteneurs.
Cette croissance s’accompagne de risques de sécurité. Avec des millions d’images disponibles, sécuriser les conteneurs est une discipline à part entière. La sécurité des conteneurs s’applique à plusieurs niveaux, notamment :
L’image du conteneur et les logiciels qu’elle contient
Les interactions entre le conteneur, le système d’exploitation hôte et les autres conteneurs sur l’hôte
Le système d’exploitation hôte
La mise en réseau des conteneurs et les dépôts de stockage
L’environnement d’exécution, souvent dans des clusters Kubernetes
Comme chaque niveau mériterait son propre guide, celui-ci se concentre sur le premier aspect : l’image et votre code. Une seule image de conteneur peut contenir des centaines, voire des milliers de vulnérabilités, exposant votre organisation à des incidents de sécurité (comme une violation de données) et à une perte de productivité (en raison du temps nécessaire au triage et à l’évaluation des vulnérabilités, à mesure que le nombre d’images utilisées augmente).
Qu’est-ce que la sécurité des conteneurs ?
La sécurité des applications relevait traditionnellement de la responsabilité d’équipes de sécurité dédiées. Mais la façon dont les conteneurs sont définis et créés fait que cette responsabilité incombe de plus en plus aux développeurs et aux équipes DevSecOps.
Ce transfert de responsabilité, associé à la rapidité avec laquelle les conteneurs peuvent être mis à jour et déployés, nécessite une méthodologie de sécurité pratique. Il ne suffit pas d’analyser vos conteneurs en CI ni de suivre les bonnes pratiques en matière d’images pour répondre aux résultats d’une analyse révélant des centaines de vulnérabilités.
Qu’est-ce que la sécurité des conteneurs ?
La sécurité des conteneurs consiste à mettre en place des outils et des processus de sécurité afin de protéger efficacement tout système ou toute charge de travail reposant sur des conteneurs. Elle couvre l’image du conteneur, le conteneur en cours d’exécution ainsi que toutes les étapes nécessaires à la création de cette image et à son déploiement.
Nous avons déjà créé un guide sur la sécurité des conteneurs avec Docker. Consultez nos 3 étapes pratiques pour sécuriser une image de conteneur pour des conseils concrets. Dans cet article, nous vous présentons les pratiques DevSecOps adoptées par les organisations pour créer des images et exécuter des conteneurs plus sûrs, ainsi que les outils techniques — comme Snyk Container, Snyk IaC et notre partenariat avec Sysdig — qui assurent une sécurité complète des conteneurs, du développement à l’exécution.
Pourquoi la sécurité des conteneurs est-elle importante ?
La sécurité des conteneurs est importante, car l’image du conteneur contient tous les composants qui exécuteront votre application. Si des vulnérabilités se cachent dans l’image, le risque et la gravité potentielle des problèmes de sécurité en production augmentent. Vous devez également surveiller votre environnement de production. Vous pouvez créer des images sans vulnérabilités ni privilèges élevés, mais vous devez tout de même surveiller ce qui se passe à l’exécution.
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.
Aperçu de la sécurité des conteneurs dans différents écosystèmes
Sécurité des conteneurs Docker
L’immense communauté d’utilisateurs de Docker — des dizaines de millions d’utilisateurs et des centaines de milliards de téléchargements d’images — montre que la conteneurisation transforme la façon dont les applications sont créées. La responsabilité de la sécurité incombe de plus en plus aux développeurs. Il est important d’analyser les images Docker avant de les envoyer sur Docker Hub ou d’autres registres, afin de détecter et de corriger les vulnérabilités dans les paquets Linux, les autorisations utilisateur, les configurations réseau, les outils open source ou la gestion des accès. Une telle analyse peut vous aider à détecter et à corriger les problèmes de vulnérabilité dans vos applications et votre infrastructure avant leur mise en production.
Sécurité des conteneurs Kubernetes
Kubernetes propose de nombreux contrôles de sécurité pour mieux protéger vos clusters, vos workloads et vos conteneurs. Notez que Kubernetes nécessite une configuration manuelle : aucun contrôle de sécurité n’est configuré lors de son déploiement. De plus, même si Kubernetes offre des contrôles et des fonctionnalités pour créer un cluster sécurisé, les configurations de sécurité par défaut sont souvent insuffisantes. Le déploiement sécurisé de workloads nécessite une expertise de Kubernetes. Consultez notre page sur les bonnes pratiques de sécurité Kubernetes pour en savoir plus.
Sécurité des conteneurs GKE
Google Kubernetes Engine (GKE) propose de nombreux outils pour sécuriser les workloads. Pour renforcer la sécurité de GKE, mieux vaut adopter une approche par couches en configurant les fonctionnalités de sécurité liées aux contrôles d’accès, aux workloads et à d’autres aspects de la sécurité. GKE peut fonctionner en mode standard, où vous gérez l’infrastructure sous-jacente, ou en mode Autopilot, où GKE provisionne et gère l’infrastructure. L’intégration Kubernetes de Snyk Container permet aux clients de sécuriser les workloads sur GKE, en mode standard comme en mode Autopilot, de détecter les vulnérabilités dans les images de conteneurs et le code des applications, et d’analyser vos configurations Kubernetes pour y repérer les problèmes.
Sécurité des conteneurs AKS
Microsoft Azure Kubernetes Service (AKS), comme GKE, offre des fonctionnalités de sécurité robustes, notamment l’intégration à Azure Policy et des mises à jour et correctifs rapides et réguliers. Toutefois, la mise à niveau des composants du cluster vers des versions plus récentes nécessite un processus semi-manuel, et les stratégies réseau doivent être activées lors de la création du cluster. Comme avec GKE, Snyk peut analyser vos configurations Kubernetes et vos conteneurs, et activer la surveillance automatique lors du déploiement de ressources AKS.
Sécurité des conteneurs EKS
Amazon Elastic Kubernetes Service (Amazon EKS) dispose par défaut d’un ensemble robuste de fonctionnalités de sécurité et repose sur le modèle de responsabilité partagée d’AWS, qui définit qui est responsable des différents aspects de la sécurité des conteneurs. En règle générale, AWS est responsable de la sécurité « du » cloud, tandis que vous, le client, êtes responsable de la sécurité « dans » le cloud. Comme pour les autres options Kubernetes mentionnées ci-dessus, Snyk s’intègre facilement à Amazon EKS et à Amazon Elastic Container Registry (Amazon ECR) pour analyser vos configurations et vos conteneurs Kubernetes, et activer la surveillance automatisée lors du déploiement sur Amazon EKS.
Sécuriser les conteneurs avec Snyk Container
Face aux millions de vulnérabilités de conteneurs présentes dans la nature, leur détection, leur hiérarchisation et leur correction peuvent sembler insurmontables aux développeurs. Snyk Container filtre le bruit des rapports de vulnérabilités classiques en détectant et en corrigeant ensemble les vulnérabilités des applications et des conteneurs, même si vous n’avez pas accès au code source d’origine exécuté dans vos conteneurs.
Snyk Container recherche continuellement les nouvelles vulnérabilités, hiérarchise les corrections en fonction du contexte et de la possibilité d’exploitation, détecte les problèmes dans les dépendances open source et associe les vulnérabilités aux commandes Dockerfile pour aider les développeurs à apporter des corrections. En 2021, Snyk Container a permis d’effectuer plus de 130 millions de tests de conteneurs, et ses utilisateurs ont corrigé 56 millions de vulnérabilités.
En complément de Snyk Infrastructure as Code pour sécuriser la configuration des conteneurs, Snyk Container s’intègre à de nombreuses plateformes Kubernetes, notamment AKS et GKE, à des registres de conteneurs comme Docker Hub, GCR et Quay, ainsi qu’à des systèmes d’exploitation de base pour conteneurs, dont Amazon Linux et Ubuntu, et bien d’autres. L’analyse intégrée des vulnérabilités aide les développeurs à repérer et à utiliser des images de base minimales adaptées, et automatise le processus de mise à jour pour éliminer rapidement les vulnérabilités.
Comme le reste de la plateforme Snyk, Snyk Container privilégie les développeurs et soutient la culture DevSecOps. La solution s’intègre à l’IDE, analyse les pull requests avant leur fusion, fournit des conseils de correction et applique des tests automatisés aux pipelines CI/CD. Une fois les conteneurs en cours d’exécution, elle surveille continuellement les déploiements pour détecter leur exposition à des vulnérabilités connues ou récemment divulguées. Des alertes sont ensuite envoyées via Slack, Jira, e-mail ou d’autres canaux pour aider les équipes DevSecOps à détecter et à corriger rapidement les vulnérabilités.
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.
Comment le partenariat entre Snyk et Sysdig renforce la sécurité des conteneurs à l’exécution
Les retours précoces de Snyk Container sur les images peuvent contribuer à éliminer au moins 70 % des vulnérabilités, mais jusqu’à 30 % des vulnérabilités à l’exécution peuvent rester non détectées. Elles peuvent représenter des centaines de vulnérabilités réparties dans des milliers de conteneurs et de nombreux clusters. Les détecter et les corriger peut s’avérer redoutable. Il est difficile de savoir quels paquets sont utilisés dans un conteneur en cours d’exécution et quelles vulnérabilités affectent ces paquets lorsqu’ils sont exécutés. Les équipes chargées de la sécurité et des opérations dans les environnements actifs doivent détecter les vulnérabilités avant de faire intervenir les équipes de développement pour les corriger. De plus, comme les développeurs ne maîtrisent pas forcément les systèmes, les outils de gestion des vulnérabilités traditionnels peuvent mettre des mois à détecter et à corriger les problèmes.
Snyk s’est associé à Sysdig pour aider à résoudre les problèmes dans les environnements d’exécution, en apportant davantage de contexte sur les éléments qui les affectent. Ce partenariat crée une solution de sécurité couvrant l’ensemble du processus DevOps. La combinaison des plateformes Snyk et Sysdig sécurise tous les aspects, du code dans l’environnement de développement à l’infrastructure qui exécute le cluster.
Consultez cet article d’annonce pour en savoir plus sur la façon dont le partenariat entre Snyk et Sysdig étend la sécurité des conteneurs à l’environnement d’exécution.
En résumé : la sécurité des conteneurs
La sécurité des conteneurs est un vaste sujet, et même en se limitant à la sécurité des images de base, il reste de nombreux défis à relever. Pour sécuriser vos images, voici quelques points essentiels à garder à l’esprit :
Commencez par utiliser des images de base provenant d’un fournisseur de confiance et vérifiez leur authenticité à l’aide de signatures numériques.
Privilégiez les images de base minimales, qui ne contiennent que les paquets essentiels du système d’exploitation et le framework de votre choix, puis ajoutez les éléments nécessaires.
Vérifiez régulièrement et dès que possible si vos images contiennent des vulnérabilités.
Effectuez des analyses à toutes les étapes du cycle de vie logiciel : sur les postes de travail, dans la CI, dans les registres où sont stockées les images et sur les conteneurs exécutés dans vos clusters.
Choisissez des outils d’analyse qui vont au-delà des simples rapports de vulnérabilités sous forme de feuilles de calcul. Ils doivent proposer des conseils d’atténuation, recommander des images de base, aider les développeurs à corriger les problèmes et vous offrir la flexibilité nécessaire pour définir vos seuils de sécurité.
Si vous souhaitez sécuriser vos images de conteneurs tout au long de leur cycle de vie, Snyk Container automatise leur sécurisation en privilégiant les développeurs et en offrant le juste équilibre entre sécurité et productivité, afin de vous aider à créer des images et à exécuter des conteneurs plus sûrs.
Glossaire de la sécurité des conteneurs
Analyse des conteneurs : processus qui consiste à rechercher des vulnérabilités dans les conteneurs en analysant les paquets et les dépendances d’une image de conteneur.
Surveillance des conteneurs : collecte de métriques et suivi de l’état des applications et des architectures conteneurisées.
Kubernetes : système open source initialement développé par Google pour orchestrer des applications conteneurisées au sein d’un cluster.
K8s : abréviation de Kubernetes.
Docker : plateforme de conteneurs la plus populaire au monde. Docker a démocratisé les outils et les processus de création et d’exécution des conteneurs, permettant aux développeurs d’utiliser facilement ces technologies.
Dockerfile : fichier texte contenant les configurations nécessaires à la création d’une image Docker.
Google Kubernetes Engine (GKE) : service géré de Google permettant d’exécuter des workloads Kubernetes sur Google Cloud.
AKS : service Kubernetes géré de Microsoft Azure. D’abord lancé sous le nom plus générique d’Azure Container Service, il a évolué vers AKS lorsque Kubernetes est devenu la principale plateforme d’orchestration de conteneurs.
AWS EKS : service Kubernetes géré d’Amazon Web Services pour exécuter des workloads Kubernetes sur AWS. AWS EKS peut être utilisé seul ou avec d’autres services comme AWS Fargate. AWS Fargate masque l’ensemble de l’infrastructure Kubernetes, ce qui permet aux utilisateurs de se concentrer uniquement sur leurs pods Kubernetes.
Image de conteneur : fichier statique contenant un ensemble d’instructions pour créer un conteneur en cours d’exécution
Registre de conteneurs : dépôt d’images de conteneurs et outil de gestion qui facilite leur stockage et leur partage.
Environnement d’exécution de conteneurs : logiciel qui crée, exécute et gère des conteneurs sur un système d’exploitation hôte.
Shift left : culture et ensemble d’outils qui intègrent la sécurité aux workflows des développeurs
DevSecOps : contraction de développement, sécurité et opérations, le DevSecOps est une approche qui automatise la sécurité tout au long du cycle de vie de la livraison logicielle.
FAQ sur la sécurité des conteneurs
Les conteneurs sont-ils sécurisés ?
Ils peuvent l’être, mais ils le sont rarement par défaut. Les processus et les outils autrefois utilisés sur les infrastructures traditionnelles ne suffisent pas toujours à garantir une sécurité robuste des conteneurs. Ces derniers ont transformé le paysage des systèmes distribués : il faut donc adopter de nouvelles méthodes pour les sécuriser. Il existe un large éventail de solutions de sécurité pour les conteneurs, que vous pouvez et devriez mettre en œuvre afin d’assurer la meilleure protection possible des charges de travail conteneurisées.
Comment corriger les vulnérabilités de sécurité dans les conteneurs ?
La correction des vulnérabilités de sécurité dans les conteneurs se déroule en quatre étapes. Commencez par corriger les vulnérabilités dans votre code et vos dépendances. Ensuite, choisissez des images de base minimales, adaptées à vos besoins : partez d’une image légère et ajoutez uniquement ce qui est nécessaire. Évaluez ensuite les outils et les packages supplémentaires que vous ajoutez. À mesure que les conteneurs se rapprochent de la production, le nombre d’éléments superflus doit être nul. Enfin, veillez à configurer le conteneur pour qu’il s’exécute avec le moins de privilèges possible.
Comment sécuriser une image de conteneur Docker ?
Pour sécuriser une image de conteneur Docker, veillez à ce qu’elle puisse fonctionner sans recourir à des pratiques contraires aux bonnes pratiques de sécurité, comme l’exécution en tant que root. La documentation Docker constitue un excellent point de départ, notamment pour tout ce qui concerne la confiance. Des contrôles de confiance peuvent également être mis en place sur des registres privés. Veiller à ce que les images de base contiennent un minimum de paquets et de dépendances, et utiliser des outils d’analyse pour surveiller les vulnérabilités, contribuera aussi à sécuriser les images Docker.
Qu’est-ce que l’analyse des conteneurs ?
L’analyse des conteneurs consiste à utiliser des outils et des processus pour détecter d’éventuelles failles de sécurité dans les conteneurs. C’est une étape essentielle pour sécuriser les packages conteneurisés. Les outils d’analyse peuvent notamment examiner le code, les dépendances transitives, la configuration des conteneurs et leur configuration d’exécution.
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.