La sécurité des conteneurs consiste à sécuriser tous les composants des charges de travail conteneurisées, y compris les images de conteneurs et les référentiels d'images, le contenu des conteneurs en cours d'exécution et l'infrastructure de conteneurs sous-jacente.
Comme il existe aujourd'hui une grande variété d'outils et de plateformes pour déployer des conteneurs, les processus spécifiques qui entrent en ligne de compte dans la sécurité des conteneurs varient d'un environnement à l'autre. Cependant, les éléments fondamentaux de la sécurisation des conteneurs sont les mêmes, quelles que soient les technologies utilisées.
Démo de la sécurité des conteneurs Guide sur la sécurité des conteneurs
Comme les conteneurs offrent un moyen flexible et portable d'exécuter des applications, ils sont devenus une solution populaire pour le déploiement de logiciels. Cependant, les conteneurs introduisent également de nouvelles couches dans les pipelines de livraison de logiciels et les piles d'hébergement, comme par exemple :
Ces composants ajoutent de la complexité aux environnements logiciels et augmentent leur surface d'attaque. La sécurité des conteneurs est importante pour s'assurer que les organisations disposent des défenses nécessaires pour protéger ces composants contre les risques et les menaces, tout en défendant d'autres ressources - telles que les systèmes d'exploitation fonctionnant sur les serveurs qui hébergent les conteneurs - qui existent à la fois dans les environnements d'hébergement conteneurisés et non conteneurisés.
Outre le fait que la sécurité des conteneurs nécessite la gestion d'une surface d'attaque plus importante, la sécurité des conteneurs est difficile à mettre en œuvre car les conteneurs limitent la visibilité directe que les développeurs, les ingénieurs informatiques et les analystes de la sécurité ont sur les charges de travail. Par conséquent, la détection des menaces et la réaction à celles-ci peuvent s'avérer plus difficiles.
Par exemple, si les analystes effectuent une surveillance de la sécurité en se basant uniquement sur les mesures et les journaux disponibles dans le système d'exploitation qui héberge les conteneurs, ils risquent de ne pas détecter une activité anormale dans un conteneur, car les mesures et les journaux produits par les conteneurs eux-mêmes ne sont généralement pas gérés par le système d'exploitation. Pour savoir ce qui se passe à l'intérieur de chaque conteneur, les ingénieurs ont besoin d'outils de sécurité capables de franchir la couche d'abstraction qui sépare les conteneurs de leurs serveurs hôtes.
Tous les environnements conteneurisés n'incluent pas les mêmes types d'outils. Par exemple, il est possible d'exécuter des conteneurs sans utiliser d'orchestrateur. Cela signifie que les composantes de la sécurité des conteneurs peuvent varier en fonction des outils et des plateformes spécifiques qu'une équipe utilise pour gérer ses conteneurs.
Cela dit, dans la plupart des cas, la sécurité des conteneurs comprend les éléments clés suivants :
Si des attaquants pénètrent dans le registre qui héberge les images de conteneurs, ils peuvent y insérer du code malveillant, qui se propagera à son tour à tous les environnements qui exécutent des conteneurs basés sur des images viciées.
Pour se prémunir contre ce risque, les ingénieurs doivent mettre en place des contrôles d'accès stricts qui empêchent tout accès non autorisé au contenu des registres de conteneurs. Ils doivent également surveiller les registres pour repérer des schémas d'accès inhabituels qui pourraient être le signe d'une activité malveillante.
Les attaquants peuvent exploiter les vulnérabilités des moteurs d'exécution des conteneurs pour prendre le contrôle des conteneurs, voire des serveurs qui les hébergent. Les entreprises peuvent gérer ce risque en s'assurant qu'elles gèrent la sécurité des conteneurs Docker (ou la sécurité de n'importe quel moteur d'exécution qu'elles utilisent) en gardant leur logiciel d'exécution de conteneur corrigé et mis à jour.
La configuration de l'environnement que les administrateurs appliquent lorsqu'ils exécutent des conteneurs peut avoir des répercussions sur la sécurité. Par exemple, l'exécution de conteneurs en tant que root n'est généralement pas une bonne pratique, car cela leur donne des autorisations élevées qui augmentent le risque de dommages causés par une violation. La sécurisation des paramètres qui s'appliquent aux environnements qui hébergent des conteneurs est un élément essentiel de la sécurité des conteneurs.
Pour les charges de travail conteneurisées qui utilisent des orchestrateurs, comme Kubernetes, il est crucial de maintenir la plateforme d'orchestration exempte de vulnérabilité connue. En outre, les administrateurs doivent suivre les meilleures pratiques lors de la configuration et de la gestion de l'orchestrateur pour se défendre contre les menaces. Dans le cadre de la sécurité des conteneurs Kubernetes, par exemple, les administrateurs doivent utiliser le cadre intégré de contrôle d'accès basé sur les rôles (RBAC) pour restreindre l'accès aux ressources.
Les applications conteneurisées dépendent des ressources de stockage. La protection des données hébergées dans ce stockage est un autre élément important de la sécurité des conteneurs.
Les conteneurs s'appuient sur le réseau pour communiquer entre eux et pour accepter et recevoir des demandes externes. Les ingénieurs doivent donc sécuriser les réseaux internes et externes en s'assurant qu'ils sont correctement configurés et en les surveillant pour détecter toute activité inhabituelle.
Selon l'endroit où les conteneurs sont hébergés, certaines solutions ou pratiques supplémentaires en matière de sécurité des conteneurs peuvent être disponibles.
Par exemple, les équipes qui utilisent Docker peuvent gérer certains aspects de la sécurité des conteneurs Docker via l'analyseur de sécurité intégré à la plateforme pour détecter les dépendances malveillantes dans les images de conteneurs. Sur Kubernetes, le cadre RBAC natif peut aider à protéger les charges de travail conteneurisées.
De même, lorsqu'elles exécutent des conteneurs via un service géré tel que Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE) ou Elastic Kubernetes Service (EKS), les organisations peuvent choisir de tirer parti de l'outil de sécurité intégré aux plates-formes du fournisseur de cloud de chaque service pour aider à surveiller et à protéger leurs charges de travail.
Les solutions de sécurité des conteneurs qu'une équipe utilise pour sécuriser les conteneurs doivent présenter les caractéristiques de base suivantes :
Pour la plupart des charges de travail conteneurisées, les meilleures pratiques suivantes peuvent aider à minimiser le risque d'attaque et à maximiser la capacité d'une équipe à la détecter :
Les administrateurs doivent suivre le principe du moindre privilège lorsqu'ils configurent les composants d'une pile d'hébergement conteneurisée. Le principe du moindre privilège consiste à limiter les autorisations au niveau le plus bas possible.
Évitez de télécharger des images de conteneurs à partir de registres non fiables, qui sont plus susceptibles de contenir des logiciels malveillants. Dans la mesure du possible, choisissez des registres gérés par des organisations bien établies et dignes de confiance.
En matière de sécurité des conteneurs, il ne suffit pas d'analyser et de surveiller certaines couches d'un environnement. Les entreprises doivent surveiller en permanence tous les composants, des registres et images de conteneurs aux environnements d'exécution, en passant par l'infrastructure sous-jacente et tout ce qui se trouve entre les deux. Une surveillance complète maximise la capacité des administrateurs à détecter les risques.
Bien que la surface d'attaque des conteneurs soit intrinsèquement plus grande que celle d'une application non conteneurisée, les équipes peuvent réduire leur surface d'attaque en s'assurant de ne pas exécuter de composants ou de couches inutiles. Par exemple, les conteneurs que les développeurs lancent à des fins de test doivent être fermés dès que les tests sont terminés.
Moins il y a de contenu à l'intérieur d'une image de conteneur, moins il y a de risques de vulnérabilité. Pour cette raison, préférez les images minimalistes, c'est-à-dire celles qui n'incluent que les bibliothèques, les progiciels et les autres composants nécessaires à l'exécution d'une application.
La clé d'une sécurité efficace des conteneurs est d'intégrer la sécurité dans chaque processus et ressource dont dépendent les conteneurs. CloudGuard for Workload Protection facilite cette tâche en fournissant une solution complète de sécurité des conteneurs :
Pour en savoir plus, lisez le guide sur la sécurité des conteneurs ou demandez une démonstration gratuite.