In this article
Tout ce qu’il faut savoir sur la sécurité des conteneurs à l’exécution
Les systèmes d’orchestration de conteneurs, comme Kubernetes, simplifient la configuration et la gestion des conteneurs à grande échelle. Avec l’adoption croissante des conteneurs, l’utilisation de ces systèmes d’orchestration a explosé. Kubernetes, par exemple, orchestre aujourd’hui plus des trois quarts des applications conteneurisées. Bien sûr, la popularité de ces plateformes en fait des cibles fréquentes pour les cybercriminels. Kubernetes contribue à réduire ces risques en proposant des stratégies de sécurité des pods et une gestion de la dérive afin de sécuriser les conteneurs en développement. Mais que se passe-t-il lorsque les conteneurs passent en exécution ?
Docker et Kubernetes proposent de nombreux outils pour intégrer la sécurité aux conteneurs, mais ils ne sécurisent pas l’environnement d’exécution lui-même. Un écosystème complet d’outils, de processus et de politiques dédiés à la sécurité des conteneurs en production a donc vu le jour.
Nous allons vous expliquer les risques liés à l’exécution des conteneurs et vous présenter les processus permettant de les sécuriser en production.
Le défi de la sécurisation des conteneurs en cours d’exécution
Des pratiques comme l’intégration de la sécurité dans la création des conteneurs et la création d’images de conteneurs plus légères contribuent à éviter l’intégration de problèmes de sécurité dans les images. Cependant, plusieurs menaces peuvent apparaître dès qu’un conteneur est en cours d’exécution, notamment :
La découverte de nouvelles vulnérabilités dans des applications contenues dans d’anciennes images
La dérive de configuration, par exemple la modification non autorisée des privilèges utilisateur
Les attaques par élévation de privilèges, qui permettent à des acteurs malveillants d’accéder à des secrets, des volumes de stockage ou d’autres ressources
Le déploiement de conteneurs en exploitant des failles de contrôle des accès
L’activation de code malveillant intégré dans un conteneur
Les outils de surveillance des conteneurs, comme Prometheus et Grafana, sont souvent déployés pour améliorer les performances et l’efficacité des conteneurs en cours d’exécution, mais ils ne sont pas conçus pour assurer la sécurité.
Détecter et corriger les risques liés à l’exécution des conteneurs
Pour sécuriser les conteneurs en cours d’exécution, il est essentiel de surveiller les événements clés, comme les connexions. Cependant, la sécurité des conteneurs à l’exécution ne se limite pas à une simple surveillance des événements. Elle commence par l’intégration de la sécurité à l’architecture au moyen d’outils d’application des politiques, qui définissent et appliquent des règles au niveau de Kubernetes ou du noyau. Les outils d’analyse peuvent ensuite examiner les journaux d’audit, le code d’infrastructure (IaC), les paramètres de configuration et le code de l’application afin de détecter de nouvelles vulnérabilités ou erreurs de configuration en production.
Qui est responsable de la sécurité des conteneurs à l’exécution ?
La responsabilité de la sécurisation de l’environnement d’exécution des applications a traditionnellement incombé aux équipes de sécurité spécialisées. Mais la rapidité et la complexité du développement agile et natif du cloud impliquent que les développeurs participent de plus en plus à la gestion des risques de sécurité dans leur code. Ils adoptent une approche de sécurité intégrée en amont, en intégrant la sécurité dès les premières étapes de la planification et du développement.
Les responsabilités des développeurs en matière de sécurité couvrent également toutes les étapes du cycle de vie des conteneurs : planification, développement, analyse, déploiement et environnement d’exécution. Ils doivent désormais aussi suivre le cycle de développement jusqu’à son terme et tenir compte de ce qui se passe lorsque leurs conteneurs sont en cours d’exécution.
Choisir des paramètres sécurisés pour l’exécution du moteur de conteneurs
Les paramètres d’exécution du moteur de conteneurs peuvent être configurés pour limiter la capacité des attaquants à étendre leur emprise après une intrusion sur le réseau. Voici quelques paramètres recommandés pour renforcer la protection de votre organisation :
Ne pas exécuter les conteneurs en tant que root
Les conteneurs doivent être exécutés en tant qu’utilisateurs, et non en tant que root. Pour cela, définissez d’abord l’ID utilisateur dans le Dockerfile, puis exécutez le conteneur avec cet utilisateur. Vous pourrez ainsi facilement limiter les accès grâce au contrôle d’accès basé sur les rôles.
Utiliser par défaut un système de fichiers root en lecture seule
Cela empêche les attaquants de prendre le contrôle d’une machine ou d’écrire du code malveillant sur l’hôte.
Limiter l’accès aux hôtes des conteneurs
Interdire les connexions SSH aux serveurs. Cela aide à empêcher les attaquants et les logiciels malveillants de s’échapper des conteneurs et d’attaquer le système hôte.
Supprimer les capacités Linux
Les capacités permettent d’ajuster finement les privilèges au niveau du noyau, par exemple pour autoriser la lecture du journal d’audit ou le contournement des contrôles d’autorisation. La suppression des capacités Linux d’un conteneur limite la capacité des attaquants à manipuler le noyau.
Ne pas exécuter les conteneurs en mode privilégié
Les environnements d’exécution des conteneurs intègrent des mécanismes robustes qui les isolent du système hôte. Évitez le mode privilégié, qui contourne la plupart de ces contrôles.
Analyser l’environnement d’exécution avec l’analyse IaC pour détecter les erreurs de configuration
Les développeurs peuvent facilement introduire des erreurs de configuration lors de la mise en place de leur infrastructure cloud et de leur orchestrateur de conteneurs. L’analyse IaC avec Snyk IaC détecte automatiquement les erreurs de configuration de Kubernetes et d’autres composants, puis transmet des informations aux outils utilisés dans le workflow des développeurs.
Pour en savoir plus sur les paramètres de sécurité à l’exécution, consultez notre article 10 paramètres du contexte de sécurité Kubernetes à connaître | Snyk.
Le partenariat Sysdig + Snyk pour la sécurité des conteneurs à l’exécution
Il n’existe pas de solution unique ni de bouton magique pour sécuriser les conteneurs en cours d’exécution. Il est donc important d’intégrer les protocoles de sécurité partout où cela est possible. La priorité consiste à repérer les vulnérabilités et les erreurs de configuration, puis à corriger les problèmes les plus importants. La sécurité étant une forme de gestion des risques, il est essentiel d’identifier les vulnérabilités et leurs conséquences. Il est également important de tirer parti des outils et des paramètres de Kubernetes pour renforcer la posture de sécurité des conteneurs.
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.
Une solution entièrement automatisée de sécurité des conteneurs à l’exécution peut détecter la plupart des problèmes, mais l’œil avisé des développeurs reste nécessaire pour les corriger. Les outils d’analyse peuvent mettre au jour des vulnérabilités ou des erreurs de configuration dans l’environnement d’exécution, mais les développeurs doivent ensuite revenir au code correspondant pour appliquer les corrections. Cette étape fait perdre du temps et des ressources, et peut conduire à passer un problème à côté. C’est là que Snyk intervient. Snyk détecte les problèmes et recommande des corrections directement dans les workflows des développeurs. Des outils comme Snyk Container et Kubernetes Configuration Security vous permettent d’analyser les conteneurs Docker et les configurations Kubernetes, puis de recevoir des commentaires dans vos outils CI/CD.
De plus, Snyk s’est associé à Sysdig pour intégrer cette approche de la sécurité axée sur les développeurs à l’environnement d’exécution. La solution de sécurité à l’exécution de Sysdig s’appuie sur le projet open source Falco pour détecter en temps réel les intrusions, les menaces et les vulnérabilités dans les conteneurs et Kubernetes. L’intégration de Snyk et de Sysdig permet de transmettre directement ces informations aux équipes de développement afin qu’elles puissent établir leurs priorités et appliquer les corrections.
Questions fréquentes
Qu’est-ce que la sécurité des conteneurs à l’exécution ?
La sécurité des conteneurs à l’exécution désigne les outils et les processus permettant de protéger les conteneurs contre les menaces et les vulnérabilités une fois qu’ils sont en production. Les stratégies de sécurité des conteneurs à l’exécution reposent généralement sur une automatisation poussée. Les développeurs et les équipes de sécurité gèrent les configurations des conteneurs et analysent les environnements en production pour détecter les vulnérabilités et les dérives de configuration.
Qu’est-ce que l’analyse des conteneurs à l’exécution ?
L’analyse des conteneurs à l’exécution consiste à utiliser des outils et des processus pour analyser les conteneurs en production. Les outils d’analyse aident à détecter les vulnérabilités ou les problèmes de configuration, puis à les corriger automatiquement ou à proposer des correctifs aux développeurs. L’utilisation de moteurs de stratégie peut automatiser le processus grâce à des règles de détection permettant à l’outil d’identifier les comportements ou activités inattendus.
Qu’est-ce que la sécurité de l’environnement d’exécution Kubernetes ?
La sécurité de l’environnement d’exécution Kubernetes consiste à utiliser des outils et des processus pour sécuriser chaque composant de cet environnement. Les développeurs peuvent tirer parti des outils et paramètres intégrés à Kubernetes pour renforcer la sécurité, notamment pour contrôler le trafic réseau entrant et sortant des pods. Les moteurs de politiques qui s’intègrent à Kubernetes via des API permettent de mieux contrôler le comportement des utilisateurs et le trafic réseau. Enfin, grâce à un scanner de l’environnement d’exécution, les professionnels DevSecOps peuvent détecter de nouvelles vulnérabilités et des dérives de configuration dans l’environnement en production.
Les conteneurs sont-ils sécurisés ?
Les conteneurs ne sont pas sécurisés par défaut. Il est donc important que les développeurs et les équipes de sécurité intègrent la sécurité des conteneurs dès le départ. Les conteneurs et les applications sont de plus en plus complexes. Il n’est donc pas toujours réaliste de s’attendre à ce que les développeurs connaissent tous les outils et processus permettant de sécuriser les conteneurs. Des outils comme Snyk et Sysdig aident les développeurs à détecter les menaces directement dans le code des conteneurs et dans l’environnement d’exécution. Les informations sur les vulnérabilités et les erreurs de configuration leur sont ensuite transmises dans le cadre de leurs workflows habituels.