Dans une interprétation indirecte du principe de Kerckhoff en cryptographie, un système cryptographique doit rester sécurisé même si tout ce qui le concerne, à l'exception de la clé, est connu de l'attaquant.
Ce principe est à la base d'une vérité importante concernant la sécurité moderne, à savoir que l'obscurité n'est pas nécessairement synonyme de protection. De même, la conteneurisation, un outil puissant dans le déploiement de logiciels modernes, peut empêcher les mouvements latéraux au sein d'un réseau si elle est mise en œuvre correctement, mais elle n'empêche pas une application à l'intérieur du conteneur d'être compromise.
Les conteneurs offrent une grande commodité, mais sans une sécurité renforcée, ils comportent également des risques. Il n'est donc pas surprenant que 60 % des images de conteneurs exécutées dans des environnements de production soient truffées de vulnérabilités connues, ouvrant la porte aux cybermenaces.
Alors, comment protéger vos conteneurs contre les violations potentielles ? La réponse commence par une liste de contrôle complète de la sécurité des conteneurs qui traite les vulnérabilités à chaque niveau, garantissant qu'aucune faille ne soit exposée.
Dans cet article, nous vous présentons une liste de contrôle de sécurité des conteneurs et certaines des meilleures pratiques qui vous aideront à créer une forteresse imprenable pour sécuriser vos conteneurs.
Qu'est-ce que la sécurité des conteneurs ?
La sécurité des conteneurs est le processus qui consiste à protéger les applications conteneurisées, ainsi que l'infrastructure qui les prend en charge, contre les vulnérabilités et les menaces tout au long de leur cycle de vie.
Cela inclut la sécurisation de l'ensemble de la pile, du moteur de conteneur, du système d'exploitation hôte et de la plateforme d'orchestration (comme Kubernetes) aux conteneurs eux-mêmes.
Un élément clé de la sécurité des conteneurs est l'analyse continue, depuis les images de base jusqu'au code des applications dans les conteneurs.
Vous devez surveiller activement les risques d'exécution qui peuvent indiquer une attaque, tout en vous assurant que les images de conteneurs utilisées proviennent de sources fiables et ne présentent aucune vulnérabilité connue.
Vous devez également isoler les conteneurs de manière irréprochable. Vérifiez soigneusement l'absence de points faibles, tels que l'escalade des privilèges, les réseaux mal configurés, etc.
Il existe plusieurs autres mesures que vous pouvez prendre pour éliminer activement les menaces de votre environnement. Grâce à un ensemble solide de protocoles ou de listes de contrôle de sécurité des conteneurs comprenant toute une série de pratiques, d'outils et de politiques, vous pouvez protéger l'ensemble du cycle de vie des conteneurs, du développement et du déploiement à l'exécution et à la mise hors service.
Importance d'une liste de contrôle sécurité des conteneurs les environnements sont un labyrinthe pièces mobiles. et si vous voulez gérer leur sécurité, avez besoin d'un système. avoir directives ou listes à portée main peut réduire le temps nécessaire pour déployer avec succès conteneur docker kubernetes entièrement sécurisé.outre gain temps, une liste de contrôle de sécurité présente plusieurs autres avantages :
- Normalisation : La standardisation de chaque étape du cycle de vie des conteneurs est essentielle pour garantir l'uniformité et éviter les erreurs critiques. Lorsque plusieurs personnes travaillent ensemble, il y a toujours un risque d'erreur humaine. Disposer de directives claires sur les tâches à accomplir permet à tout le monde d'être sur la même longueur d'onde et contribue au bon déroulement des opérations.
- Couverture complète: Les environnements conteneurisés comportent plusieurs éléments constitutifs, tels que des images, des registres, des réseaux et des environnements d'exécution. Il devrait être obligatoire d'effectuer une vérification avant d'introduire ces éléments dans le système. Cela peut inclure l'analyse des images, les contrôles d'accès, la segmentation du réseau et la surveillance de l'environnement d'exécution.
- Efficacité et cohérence : Une liste de contrôle n'est qu'une étape supplémentaire pour garantir la sécurité d'un conteneur, donnant à vos opérations un avantage supplémentaire en termes d'efficacité et de cohérence. De plus, vos équipes disposeront d'un point de référence sur les meilleures pratiques en matière de sécurité, réduisant ainsi le risque d'oublier une étape.
- Conformité : Compte tenu du nombre croissant de cybermenaces et de violations de données, les gouvernements et les organismes de réglementation ont établi des exigences réglementaires strictes. Une liste de contrôle bien définie en matière de sécurité des conteneurs permet de garantir la conformité en appliquant les meilleures pratiques telles que le contrôle d'accès basé sur les rôles (RBAC), l'analyse d'images et le respect des normes CIS pour Docker et Kubernetes. Elle garantit également la journalisation et la surveillance à des fins d'audit et répond aux exigences de cadres réglementaires tels que le RGPD, l'HIPAA ou la norme PCI-DSS.
- Atténuation proactive des menaces : Il est toujours judicieux de passer en revue deux fois l'ensemble du cycle de vie d'un conteneur avant de le déployer, et une liste de contrôle vous aide à y parvenir. La première passe permet de s'assurer que toutes les mesures de sécurité sont mises en œuvre, tandis que la seconde sert d'étape de validation pour détecter toute configuration manquante ou menace émergente avant qu'elles ne deviennent des problèmes critiques.
Les 10 listes de contrôle clés pour la sécurité des conteneurs
Maintenant que nous avons établi l'importance de la liste de contrôle pour la sécurité des conteneurs, il est temps d'approfondir le sujet et de comprendre quelles vérifications de sécurité vous devez mettre en œuvre.
Voici une liste de contrôle de sécurité Docker et Kubernetes qui répertorie de manière concise toutes les étapes que votre protocole de sécurité doit comporter :
-
Sécurité des images
- Utilisez des images de base fiables et vérifiées provenant de référentiels officiels.
- Limitez les personnes autorisées à pousser/tirer des images vers/depuis le registre
- Analysez régulièrement les images de conteneurs à la recherche de vulnérabilités.
- Bloquez le déploiement d'images vulnérables ou limitez leur accès au réseau
- Détectez les données sensibles telles que les clés ou les jetons avant de pousser les images
- Veiller à ce que les images soient minimales et ne contiennent que les dépendances nécessaires.
- Mettre en œuvre des correctifs et des mises à jour automatisés des images.
-
Accès et autorisations
- Évitez d'exécuter des conteneurs avec des privilèges root.
- Empêchez les conteneurs d'obtenir des privilèges excessifs ou d'effectuer des appels système inutiles.
- Mettez en œuvre le principe du moindre privilège pour les conteneurs et les utilisateurs.
- Contrôlez quels conteneurs peuvent modifier des fichiers ou des répertoires spécifiques.
- Utilisez PodSecurity Admission pour restreindre l'accès aux capacités et ressources sensibles.
- Utilisez le contrôle d'accès basé sur les rôles (RBAC) pour limiter l'accès aux points de terminaison API critiques et aux actions sur les ressources des conteneurs telles que `get`, `list`, `watch`, ou `secrets.`
- Utilisez l'authentification multifactorielle (MFA) pour accéder aux environnements de conteneurs.
-
Sécurité réseau
- Isoler les conteneurs à l'aide de la segmentation du réseau (par exemple, les politiques réseau Docker).
- Protégez les services accessibles au public en filtrant le trafic sur différents ports et protocoles.
- Utilisez des communications cryptées (par exemple, TLS) pour les données en transit.
- Utilisez des contrôles de couche 7 avec un maillage de services et une inspection approfondie des paquets pour appliquer les politiques HTTP/HTTPS.
- Limitez le trafic de couche 3 et 4 à l'aide d'un contrôle d'accès basé sur l'adresse IP et le port afin de restreindre l'accès.
- Certifiez que le plugin CNI (Container Network Interface) choisi prend en charge les politiques réseau Kubernetes.
- Appliquez des politiques réseau d'entrée et de sortie à toutes les charges de travail, avec des politiques par défaut qui refusent tout le trafic.
- Assurez-vous que les composants critiques (API Kubernetes, API Kubelet, etc.) ne sont pas exposés publiquement.
- Chiffrez le trafic et utilisez le protocole mTLS (Mutual TLS) pour authentifier les communications entre les charges de travail au sein des clusters.
-
Sécurité d'exécution
- Surveillez le comportement d'exécution des conteneurs afin de détecter toute activité suspecte.
- Limitez l'accès des conteneurs aux ressources de l'hôte à l'aide des modules de sécurité Linux.
- Mettre en place des limites de ressources (CPU, mémoire) pour prévenir les attaques par déni de service.
- Restreindre l'accès à l'API d'exécution et au démon pour empêcher toute altération des conteneurs actifs.
- Enregistrer et auditer toutes les activités des conteneurs en temps réel.
-
Gestion des vulnérabilités et des correctifs
- Analysez régulièrement les conteneurs et les systèmes hôtes à la recherche de vulnérabilités.
- Analysez les fichiers de configuration pour vérifier leur conformité dans votre pipeline d'intégration continue et intégrez des contrôles automatisés pour détecter les erreurs de configuration de sécurité.
- Utilisez la signature d'images (Docker Content Trust) pour vérifier l'intégrité des images de conteneur.
- Effectuez une analyse statique du code pour identifier les vulnérabilités dans le code d'une application et ses dépendances.
-
Gestion des secrets
- Stockez les données sensibles (clés API, mots de passe) dans des outils de gestion des secrets.
- Évitez de coder en dur les secrets dans les images de conteneurs ou les variables d'environnement.
- Effectuez des audits périodiques, vérifiez qui a accès à l'API Secrets et faites tourner les clés de chiffrement.
- Chiffrez les données au repos en configurant le serveur API Kubernetes pour chiffrer les données secrètes dans etcd, afin d'ajouter une couche de protection supplémentaire.
- Configurez des jetons avec des périodes d'expiration plus courtes afin de réduire l'impact d'un jeton compromis.
-
Sécurité de l'orchestration
- Sécurisez les orchestrateurs de conteneurs (par exemple, Docker) à l'aide de contrôles d'accès rigoureux.
- Activez le contrôle d'accès basé sur les rôles (RBAC) et garantissez le moindre privilège pour les utilisateurs et les comptes de service.
- Mettez en œuvre le contrôle de version (tel que Git) pour les définitions et configurations des services d'orchestrateur.
- Activez la journalisation pour toutes les requêtes API adressées au plan de contrôle de l'orchestrateur (par exemple, les journaux d'audit dans Kubernetes)
-
Configuration sécurisée
- Désactivez les services ou ports inutiles dans les conteneurs.
- Assurez-vous que les conteneurs sont sans état et immuables dans la mesure du possible.
-
Sauvegarde et reprise après sinistre
- Sauvegardez régulièrement les configurations des conteneurs et les données des applications.
- Assurez-vous de la cohérence des sauvegardes en utilisant les commandes etcd snapshot save pour effectuer une sauvegarde ponctuelle.
- Effectuez des simulations de catastrophe en provoquant intentionnellement la défaillance d'un composant du cluster et vérifiez que le processus de restauration fonctionne comme prévu.
-
Conformité et audit
- Assurez-vous de la conformité aux normes de sécurité du secteur (par exemple, RGPD, PCI-DSS).
- Auditer régulièrement les politiques de sécurité des conteneurs, les journaux et les configurations de contrôle d'accès.
- Effectuer régulièrement des tests de pénétration de sécurité sur les environnements de conteneurs.
Meilleures pratiques en matière de sécurité des conteneurs
Bien que nous vous ayons fourni une liste de contrôle pour la sécurité des conteneurs, voici quelques meilleures pratiques qui vous permettront de renforcer la sécurité de vos environnements conteneurisés :
- Utilisez des images de base fiables : Les images constituent la base de votre conteneur. Veillez donc à les obtenir auprès d'une source fiable. Optez également pour un outil de scan automatisé des images et de correction régulière des bogues. Utilisez des outils qui s'intègrent directement dans votre pipeline CI/CD pour vérifier les images de base à chaque étape.
- Mettez en œuvre le principe du moindre privilège : contrôlez les privilèges des conteneurs. Évitez d'exécuter les conteneurs en tant que root et limitez l'accès aux ressources système afin de garder une longueur d'avance sur les vecteurs de menaces potentiels. Utilisez les benchmarks CIS pour renforcer la sécurité du système d'exploitation hôte en vous assurant que le moins de services possible sont en cours d'exécution et envisagez d'utiliser des outils tels que SentinelOne pour réduire la surface d'attaque au niveau des appels système. Ceci est important car les conteneurs partagent le noyau hôte.
- Sécurisez l'infrastructure en tant que code (IaC) : Pour empêcher les configurations risquées d'atteindre la production, vous pouvez utiliser des modèles IaC tels que les manifestes Kubernetes qui recherchent les violations de politiques et les erreurs de configuration (telles que des rôles IAM trop permissifs ou des ports exposés) avant le déploiement.
- Renforcement de la configuration du cloud : Assurez l'isolation des ressources cloud grâce à des VPC et des réseaux privés, et renforcez les services cloud à l'aide d'un contrôle d'accès basé sur le principe du moindre privilège. Mettez en place une surveillance continue des erreurs de configuration du cloud (telles que les compartiments S3 ouverts ou les interfaces de gestion exposées).
- Réduisez les vulnérabilités externes : Les vulnérabilités dans les dépendances tierces (principalement détectées lors des compilations) peuvent introduire des faiblesses dans vos applications. Vous pouvez automatiser l'analyse des dépendances pour détecter les CVE connus dans les dépendances du système d'exploitation et des applications. Mettez régulièrement à jour les bibliothèques et les paquets.
- Contrôles d'orchestration et de benchmarking d'exécution : Utilisez des contrôles de sécurité d'orchestration tels que les contrôleurs d'admission Kubernetes pour appliquer les politiques de sécurité avant le déploiement. Mettez en place des contrôles de benchmarking d'exécution (par exemple, les benchmarks CIS Kubernetes) pour auditer régulièrement les orchestrateurs et les conteneurs en cours d'exécution.
- Segmentation du réseau : créez et appliquez des politiques pour contrôler le trafic des conteneurs et réduire la surface d'attaque. La micro-segmentation des charges de travail conteneurisées limite l'impact d'une violation et améliore la sécurité du réseau.
- Limitation des ressources : En appliquant des limites de ressources au processeur, à la mémoire et au stockage de chaque conteneur, vous pouvez empêcher tout conteneur d'épuiser les ressources du système. Si les ressources du système sont épuisées, vous risquez de rencontrer des problèmes liés aux conditions de service et d'autres problèmes opérationnels.
- Surveillance et journalisation des activités : vous devez réagir en temps réel aux menaces de sécurité. Procurez-vous des outils qui vous permettent de visualiser le comportement des conteneurs, afin d'identifier et d'atténuer rapidement les menaces.
- Sécurisez le pipeline CI/CD : Assurez-vous que votre pipeline CI/CD est sécurisé en intégrant des contrôles de sécurité à chaque étape du cycle de vie des conteneurs, de la validation du code au déploiement. Cela permet d'éviter l'introduction de vulnérabilités pendant le processus de développement.
- Automatisez les mises à jour de sécurité : utilisez des outils d'automatisation pour appliquer des correctifs de sécurité et des mises à jour aux conteneurs et aux orchestrateurs sans provoquer de temps d'arrêt.
- Conformité et application des politiques : Auditez régulièrement les conteneurs afin de vous conformer aux politiques organisationnelles et réglementaires. Utilisez des outils d'application des politiques pour appliquer les politiques de sécurité dans tous les environnements et maintenir des normes de sécurité et de conformité cohérentes.
Erreurs courantes à éviter en matière de sécurité des conteneurs
En février 2019, l'équipe Docker a annoncé publiquement la vulnérabilité CVE-2019-5736 . En raison de cette faille, les pirates pouvaient écraser le fichier binaire de l'hôte, accéder au système hôte et exécuter des commandes en tant qu'administrateur au sein d'un conteneur.
Plusieurs organisations, dont AWS, RedHat et Microsoft Azure, ont également découvert cette vulnérabilité et ont appliqué des correctifs à leurs produits.
En 2021, la vulnérabilité CVE-2021-3490 a exploité une faille dans le noyau Linux liée au extended Berkeley Packet Filter (eBPF).
Cette faiblesse a permis aux attaquants d'exécuter du code arbitraire sur l'hôte à partir de conteneurs compromis qui avaient accès à l'eBPF via les profils seccomp par défaut de Kubernetes. Ces profils ne limitaient pas les appels système requis, laissant certaines configurations exposées.
Ces incidents montrent qu'une petite négligence dans la sécurité de vos conteneurs peut compromettre l'intégrité de vos applications et exposer votre environnement à des risques.
Voici quelques autres erreurs courantes à éviter en matière de sécurité des conteneurs :
- Supposer que les images publiques sont sécurisées peut compromettre les déploiements. Ne faites jamais confiance à des images externes sans les avoir fait examiner minutieusement par des développeurs expérimentés.
- Exposer les conteneurs à un trop grand nombre de canaux ouverts augmente la surface d'attaque. Évitez de laisser les conteneurs exposés avec des autorisations root et examinez les interactions réseau à la recherche de points faibles potentiels.
- Ne pas vérifier et analyser les bibliothèques de code à la recherche de vulnérabilités avant de les intégrer dans des conteneurs
- Ne pas conserver de registres précis des journaux peut rendre difficile la détection rapide des problèmes de sécurité.
- Ignorer la sécurité du pipeline CI/CD, par exemple en sautant les contrôles de sécurité lors de la construction et du déploiement, peut introduire des vulnérabilités dès le début du développement.
SentinelOne Cloud Workload Security pour conteneurs
Vous avez besoin d'une stratégie unifiée sur tous les nœuds pour sécuriser efficacement tous vos environnements conteneurisés. Q2 est un prestataire de services financiers de premier plan qui compte plus de 1 200 banques, syndicats et institutions financières parmi ses clients. Avec plus de 22 millions d'utilisateurs finaux et 65 000 conteneurs dans le cloud public, Q2 a déployé la solution Cloud Workload Security for Containers de SentinalOne dans tous ses environnements. Et comme Q2, vous pouvez vous aussi profiter des nombreuses fonctionnalités et avantages de cette solution, rester informé de toute anomalie et maintenir une sécurité optimale.
Principales fonctionnalités et avantages
- Protection complète des charges de travail dans le cloud hybride sur les environnements multicloud, notamment AWS, Azure, GCP et les centres de données sur site
- Bloque les ransomwares, les exploits zero-day, les crypto-mineurs et les attaques sans fichier
- L'architecture d'agent basée sur eBPF offre une visibilité en temps réel au niveau des processus du système d'exploitation, fournissant une télémétrie approfondie sans dépendre des modules du noyau
- Moteur d'IA statique qui analyse les architectures de fichiers en exploitant un ensemble de données de plus de 500 millions de signatures de logiciels malveillants
- Moteur d'IA comportementale qui utilise l'analyse temporelle, évaluant les modèles au fil du temps pour détecter les comportements malveillants susceptibles d'échapper à la détection statique
- Détection en temps réel des attaques à la vitesse de la machine sur les serveurs VMS, les conteneurs et Kubernetes
- Récupération automatisée, pour une disponibilité maximale de la charge de travail
- Workload Flight Data RecorderTM.
- Accélération de l'innovation grâce à une sécurité d'exécution qui ne gêne pas.
- Aucune dépendance au noyau. Faible surcharge CPU et mémoire.
- Architecture eBPF, pour plus de stabilité et de performances
- Prise en charge de Docker, des conteneurs et des environnements d'exécution cri-o
- Protection par auto-scaling
- CWPP en temps réel
- Prise en charge des services K8s autogérés et gérés
- Prise en charge de 14 distributions Linux leaders, dont Amazon Linux 2023
- Intégration avec Snyk (vendu séparément)
De plus, la plateforme de protection des applications natives dans le cloud (CNAPP) de SentinelOne vous aide à renforcer la sécurité des conteneurs grâce à des fonctionnalités telles que la gestion de la posture de sécurité. Kubernetes Security Posture Management (KSPM) et Cloud Security Posture Management (CSPM), garantissant la conformité et la sécurité de vos applications cloud natives.
Voir SentinelOne en action
Découvrez comment la sécurité du cloud alimentée par l'IA peut protéger votre organisation lors d'une démonstration individuelle avec un expert produit de SentinelOne.
Obtenir une démonstrationFAQs
Pour garantir la sécurité des conteneurs, vous devez adopter une approche globale couvrant plusieurs niveaux. Commencez par :
- Utiliser des images de base fiables et les analyser fréquemment à la recherche de vulnérabilités, en veillant à ce qu'elles restent minimales afin de réduire la surface d'attaque.
- Appliquez le principe du moindre privilège en limitant les conteneurs aux seules autorisations dont ils ont besoin et en ne les exécutant jamais en tant que root.
- Surveillez en permanence l'activité des conteneurs en temps réel afin de détecter tout comportement suspect, et effectuez des analyses de vulnérabilité à chaque étape, de la création à l'exécution.
- Enfin, assurez-vous que votre hôte et votre orchestrateur sont correctement renforcés à l'aide de correctifs de sécurité et de politiques réseau afin de limiter la communication entre les conteneurs et de réduire les menaces potentielles.
La Container Security Initiative (CSI) comporte sept parties principales. Il s'agit notamment de :
- Analyse des images
- Sécurisation de l'exécution
- Contrôle des accès
- Protection des réseaux
- Gestion de la conformité
- Surveillance
- Réponse aux incidents.
La plateforme SentinelOne Singularity Cloud Workload Security (CWS) joue un rôle important dans la sécurité des conteneurs. Elle protège les applications conteneurisées tout au long de leur cycle de vie. La plateforme automatise la protection à l'exécution, gère les vulnérabilités et garantit la conformité. Elle fonctionne avec Kubernetes et d'autres systèmes pour visualiser et sécuriser les conteneurs en temps réel, tant dans les clouds publics que privés.
Le cycle de vie de la sécurité des conteneurs comprend cinq étapes principales :
- Sécurité des images : Commencez par des images vérifiées et sécurisées, puis vérifiez-les régulièrement afin de détecter les points faibles.
- Sécurité de la compilation : Assurez-vous que le processus de compilation des conteneurs respecte les règles et méthodes de sécurité.
- Sécurité du déploiement : Utilisez des règles de sécurité, accordez le minimum de droits nécessaires et configurez des réseaux sécurisés lorsque vous déployez des conteneurs.
- Sécurité d'exécution : Surveillez les conteneurs pour détecter toute action inhabituelle, appliquez des règles de sécurité d'exécution et séparez les réseaux.
- Mise hors service : Mettez les conteneurs hors service en veillant à effacer toutes les données privées.

