Qu'est-ce que la sécurité des containers ? – Lacework

Qu'est-ce que la sécurité des containers ?

Editorial Lacework

June 23, 2021

Qu'est-ce que la sécurité des containers ?

Les containers, ainsi que la sécurité requise pour leur protection, font désormais partie des aspects les plus importants du développement moderne de logiciels. Avec le lancement de Docker et de Kubernetes en 2013, ainsi que la popularité de ces plateformes de développement qui s'est ensuivie, les containers changent la manière dont les entreprises créent, proposent et améliorent les applications qu'elles exploitent en interne et qu'elles font fonctionner pour leurs clients. 

Selon une enquête menée par Capital One auprès de responsables informatiques de haut niveau, 86 % des entreprises prévoient actuellement de déployer des containers pour créer au moins certaines des applications dans leurs environnements cloud, multi-cloud et sur site au cours des deux prochaines années. Le cabinet d'analystes Gartner prévoit que d'ici 2023, plus de 70 % des entreprises utiliseront au moins trois applications à containers pour mener à bien leur transformation numérique. Les containers gagnent en popularité, mais ils deviennent aussi des éléments nécessaires aux entreprises modernes.

Entre autres avantages, les containers offrent une vitesse et une efficacité accrues aux équipes de développement modernes. Ils sont conçus pour permettre un développement agile et sont suffisamment flexibles pour s'exécuter sur des infrastructures sur site et virtualisées. Les containers n'ont pas besoin de la surveillance ni de la maintenance manuelle généralement requises sur de grosses applications monolithiques. Les containers utilisent à la place une intégration automatisée et continue et des pipelines de remise pour veiller à ce que le code soit correctement testé avant de passer au stade de la production. 

While the benefits of containers are clearly changing how IT teams operate, they also present new security challenges that must be addressed as part of every organization’s application development and delivery processes. Containers may be enabling a faster way of doing business, but container security needs to be integrated into development and deployment processes to ensure speed doesn’t overtake risk as a priority.

Définition de la sécurité des containers

La sécurité des containers correspond à l'approche et à la méthodologie qui définissent les politiques de sécurité et de compliance et qui exploitent des outils de sécurité pour veiller à ce que les containers et les applications de containers s'exécutent de manière sécurisée dans votre environnement. Elle recouvre toutes les ressources des environnements cloud, hybrides et sur site (infrastructure, chaîne logistique logicielle, runtime, applications) qui contribuent aux opérations des containers ou en bénéficient. 

Les architectures de containers sont dynamiques et soutiennent le déploiement d'applications automatisées, ce qui fait partie des éléments qui les rendent précieuses. Cependant, ce sont également des attributs qui sont de nouveaux vecteurs de menaces dans les environnements de containers. Les équipes DevOps et SecOps doivent être conscientes des problèmes spécifiques aux containers qui, s'ils ne sont pas traités, peuvent engendrer des lacunes en matière de visibilité et de potentielles menaces.

Il faut d'abord comprendre que la sécurité des containers suit un cadre familier autour des catégories suivantes : 

  • Code : accès pour créer/mettre à jour le logiciel, le code et le déploiement des containers
  • Hôte : sécurité du système d'exploitation, dont les correctifs et les systèmes d'exploitation
  • Étiquettes : les étiquettes des containers garantissent que les services et la réplication sur l'ensemble du nœud réseau fonctionnent correctement

Les containers sont-ils plus vulnérables qu'une autre partie de la pile informatique ? Pas nécessairement, mais ils possèdent des caractéristiques spécifiques qui, sans surveillance, peuvent créer de mauvaises surprises et de gros problèmes de sécurité pouvant entraîner d'importantes violations de données et des intrusions dans des environnements internes. Ainsi, vous devez porter attention à cinq domaines clés liés à la sécurité des containers :

  • Processus de développement : tout code malveillant ou mal écrit peut constituer un risque de sécurité en passant de la phase de développement à celle du déploiement. En l'absence de vérifications de sécurité appropriées, le développement de containers peut aller vite et les défauts de code peuvent passer inaperçus.
  • Registres d'images : les containers sont créés à partir d'images conservées dans des répertoires publics ou privés qui dépendent souvent d'autres images. Un seul élément vulnérable dans l'une d'entre elles risque de se propager sur des milliers de containers.
  • Runtime : lorsqu'un container est créé dans l'environnement d'exécution, tous les types de risques de sécurité peuvent se produire. Les organisations doivent définir des politiques qui régissent le comportement des containers lors de l'exécution, utiliser la détection des anomalies et réagir aux alertes de sécurité en corrigeant rapidement les problèmes.
  • Orchestration : l'un des composants les plus importants de la Container Security tourne autour de l'environnement d'orchestration : Kubernetes. L'automatisation de l'orchestration ajoute une couche de complexité qui peut engendrer des erreurs de configuration qui octroient trop d'accès et augmentent la surface d'attaque.
  • Caractère éphémère : la nature éphémère des containers rend les contrôles de sécurité basés sur le périmètre et l'adresse IP moins efficaces et les enquêtes médico-légales plus compliquées. Les adresses réseau et IP sont fréquemment réutilisées, ce qui peut brouiller la traçabilité. Les journaux et autres preuves peuvent être perdus lorsque les containers sont réinitialisés en réponse à un incident de sécurité.

Les attaques de containers, comme celle qui a frappé Docker au milieu de l'année 2020, ciblent ces aspects des environnements de containers. La violation de Docker, par exemple, a été perpétrée par un groupe qui recherchait spécifiquement des containers vulnérables qui fonctionnaient avec des politiques d'authentification laxistes. Grâce aux accès, le groupe a pu installer un programme de cryptomining qui s'est propagé sur 6 000 images.

Qu'est-ce qu'un Container ?

Pour bien comprendre les défis posés par la sécurité des containers, il est essentiel de connaître certains points essentiels sur la nature des containers. Dit simplement, un container est un code empaqueté composé d'un système d'exploitation, d'applications, d'un support et de fichiers de configuration regroupés dans une image unique en lecture seule. Les images sont des fichiers statiques et non modifiables qui contiennent un code exécutable capable d'exécuter un processus isolé sur l'infrastructure informatique.

Les containers sont portables, légers et faciles à déployer, ce qui les rend particulièrement attrayants pour les organisations qui souhaitent proposer rapidement des applications et intégrer systématiquement l'innovation dans leurs efforts. 

Les formats des containers sont variés, d'un microservice très simple à un cadre complexe d'applications, de bases de données, d'actifs intégrés et d'autres ressources informatiques. La capacité des containers à prendre différentes formes fait partie de l'intérêt qu'ils suscitent. 

La structure des containers permet aux développeurs de gérer et d'adapter leurs besoins plus facilement et à la demande. Ils sont ainsi en mesure de proposer une charge plus élevée quand la demande augmente et de réduire leurs capacités quand l'inverse se produit. Les containers aident les organisations à optimiser les avantages élastiques offerts par des environnements cloud. Leurs architectures ressemblent généralement à un modèle client/serveur où le client lance la création du container et où le code interagit au niveau du serveur. Grâce à ce modèle, les développeurs issus d'anciens modèles de développement peuvent facilement travailler dans un environnement de containers. 

Principales technologies de containers

Il existe un écosystème de technologies de containers qui guide les stratégies de développement et de déploiement. Il est important de connaître le rôle que ces dernières jouent dans le processus allant du développement au déploiement ainsi que l'influence qu'elles exercent sur le pipeline CI/CD (intégration continue/livraison continue). Parmi ces éléments figurent :

  • Docker est la première, et actuellement la plus populaire, technologie de containers. Elle est considérée par beaucoup comme étant la plateforme de containers par excellence.
  • Kubernetes est une plateforme open source d'orchestration de containers qui automatise le déploiement, la mise à l'échelle et la gestion des applications. Elle a à l'origine été conçue par Google.
  • AWS Elastic Container Service (ECS) est un service d'orchestration de containers. Il exécute des containers sur une machine virtuelle Amazon Elastic Compute Cloud (EC2) préinstallée avec Docker. Il installe les containers et gère la mise à l'échelle et la surveillance.
  • Google Container Engine (GKE) est un environnement géré pour le déploiement, la gestion et la mise à l'échelle d'applications à containers dans les environnements Google Cloud Platform (GCP).
  • Azure Container Service (ACS) is a container deployment and management service that supports most open-source tools and technologies for container development and orchestration in Microsoft Azure environments
  • Envoy et Istio sont des technologies open source de maillage de services qui garantissent la sécurité et l'observabilité dans les environnements de containers. Elles sont conçues pour chiffrer le trafic à l'intérieur d'un cluster de containers tout en observant le comportement qui y est exécuté.

La sécurité des containers on-prem vs dans le cloud

Même les organisations qui ont commencé leur transformation numérique et qui ont adopté le cloud doivent se poser la question de l'endroit où créer leur environnement de containers : sur site ou dans le cloud ? Généralement, la question est la même que celle qui se pose pour toutes les applications ou ressources logicielles : ai-je plus de contrôle et de meilleures capacités en matière de sécurité dans un environnement plutôt que dans l'autre ? Une partie de la réponse dépend des caractéristiques de l'entreprise, comme l'expertise du personnel et les relations avec les fournisseurs, mais concernant la sécurité, il y a des facteurs à prendre en considération.

Dans le cas des containers sur site, les équipes disposent généralement de plus de contrôle sur la configuration de leur environnement de containers. Ils profitent ainsi de plus de flexibilité en matière de stockage et de réseau qui sont liés au runtime. Les exigences en matière de compliance peuvent également être personnalisées et rapidement adaptées pour répondre aux besoins spécifiques de l'organisation. C'est par exemple le cas lorsqu'un client a des besoins particuliers en matière de gouvernance. Cependant, les problèmes d'évolutivité doivent être résolus manuellement, ce qui réduit le facteur d'agilité et demande généralement une surveillance renforcée de la sécurité.

Les environnements cloud, en revanche, offrent tous les éléments que les entreprises modernes semblent convoiter : la flexibilité, l'agilité, la vitesse, l'évolutivité et l'automatisation. Cependant, lorsque vous utilisez un service cloud public, vous avez moins de contrôle et vous devez vous servir des outils qui sont intégrés (ou peuvent être intégrés) à vos services. Votre pile (ou « stack ») de containers est simplement un environnement qui a été déterminé pour vous.

De nombreuses organisations exécutent leurs workloads à la fois sur des environnements sur site et dans le cloud, ce qui leur permet de garder le contrôle sur certains facteurs tout en atteignant la vitesse dont elles ont besoin.

Comment intégrer la sécurité à votre pipeline de containers ?

L'orchestration des containers alimente les pipelines CI/CD qui offrent aux organisations la vitesse et l'agilité qu'elles recherchent avec les containers. Lorsque les développeurs soumettent une application à containers dans un environnement de test, le pipeline CI/CD entre en jeu pour veiller à ce que les niveaux corrects de test et de préproduction soient atteints avant que le container soit approuvé et passe à l'étape de production. L'orchestration peut s'avérer complexe et l'accent mis sur la livraison peut parfois empêcher les équipes DevOps de voir les risques potentiels. 

Examinons de plus près le problème de la complexité. Les développeurs peuvent créer des applications à containers en tant que microservices pour gérer des tâches très spécifiques. Par exemple, un microservice peut répondre aux demandes de recherche et un autre peut mettre à jour les informations client dans une base de données. Ces services peuvent être composés d'un ou plusieurs containers identiques et sont portables, isolés et autonomes. S'il y a un problème avec un microservice, un développeur peut rapidement apporter des modifications correctives et envoyer une nouvelle image de container qui remplace l'ancienne sans se soucier de perturber les autres microservices. Les applications à containers qui s'exécutent en tant que microservices, sont, dans de nombreux cas, plus faciles à tester, distribuer et déployer dynamiquement que leurs équivalents monolithiques. 

La nature même des containers accentue le potentiel de risque. Par exemple, un seul élément vulnérable dans une image peut engendrer plusieurs containers vulnérables. En outre, une personne malveillante qui attaque un système d'orchestration pourrait obtenir directement le contrôle de toute la flotte de containers. Parmi les risques introduits par les applications à containers et leurs services et infrastructures de support, beaucoup peuvent être repérés et limités ou corrigés à l'aide de vieux principes et de techniques éprouvées associés à des outils nouveaux et mis à jour.

Le processus d'intégration de la sécurité dans votre pipeline de containers doit suivre les étapes suivantes :

  1. Repérer les risques de configuration : dans tout processus de sécurité concernant le pipeline de containers, la première étape devrait consister à établir un moyen de repérer les endroits où de mauvaises configurations pourraient engendrer des risques pour l'environnement. Le repère CIS est un bon guide pour les applications qui utilisent Docker ou Kubernetes.
  2. Utiliser uniquement des images fiables : un seul élément vulnérable peut avoir des répercussions sur l'ensemble de votre environnement. Pour éviter cela, assurez-vous que vous connaissez et que vous pouvez vous FIER aux images que vous utilisez.
  3. Limiter les accès : vous ne devriez accorder d'accès aux containers et aux images qu'à ceux pour qui c'est absolument nécessaire. Réévaluez régulièrement les privilèges.
  4. Sécuriser les tableaux de bord des administrateurs : utilisez l'authentification à deux facteurs et évaluez l'accès à tous les tableaux de bord d'orchestration et dans le cloud pour les administrateurs. Assurez-vous de savoir quels outils et ressources cloud interagissent avec votre environnement.
  5. Gestion efficace des journaux : utilisez des systèmes de journaux qui conservent une trace des activités qui ont lieu entre les containers, les utilisateurs et les applications bien après la fin du container.

Vecteurs courants d'attaque pour les containers

Comme le cloud, les containers comportent des avantages qui peuvent créer des risques potentiels supplémentaires. Voici quelques vecteurs d'attaque courants qui influent sur les containers :

  • Code vulnérable : les containers peuvent facilement, et involontairement, assimiler des applications contenant des défauts ou autres éléments vulnérables. Pour éviter ce problème, toutes les images doivent être scannées en permanence pour repérer ces failles.
  • Mauvaise configuration des images : un container peut, par erreur, être configuré avec des autorisations racine qui sont accordées à beaucoup trop d'utilisateurs. Toutes les mauvaises configurations peuvent entraîner des vulnerabilities qui ne sont découvertes que lorsqu'il est trop tard.
  • Host vulnerability : les containers s'exécutent sur des machines hôtes qui fonctionnent parfois avec de vieux composants d'orchestration vulnérables. Les équipes doivent chercher à réduire le nombre de composants sur tous les hôtes. 
  • Piratage d'identifiants : vous devez utiliser des identifiants d'accès qui doivent être complétés par des mesures supplémentaires comme l'authentification à deux facteurs pour ne pas être exposés au vol.
  • Attaques de la chaîne logistique : les containers conservés dans des registres ne sont sollicités que lorsqu'ils entrent dans le runtime. Si le registre a été attaqué, il est probable que ce soit également le cas pour les containers.

Principaux avantages de la sécurité des containers

Les équipes qui mettent en œuvre une solution de sécurité des containers efficace constateront qu'elles peuvent avancer rapidement sans compromettre la santé et l'intégrité de leurs environnements. Parmi les avantages clés, figurent :

  • Maintenir la vitesse : lorsque la sécurité des containers est intégrée au développement et à la livraison d'applications, les équipes DevOps ne sont pas ralenties et la sécurité de l'environnement n'est pas sacrifiée.
  • Une surface d'attaque limitée : avec les containers, il vous suffit de sécuriser l'hôte et les applications. Vous n'avez plus besoin de le faire pour les serveurs physiques, les intégrations et les autres éléments qui élargissent généralement la surface d'attaque.
  • Davantage de transparence : vous pouvez facilement voir ce que contient une image, alors que savoir ce que comportent des machines virtuelles est généralement beaucoup plus compliqué. Vous pouvez ainsi repérer plus facilement les problèmes de sécurité dans les containers.
  • Mise à jour plus rapide : grâce aux containers, vous pouvez veiller à ce que votre application soit à jour en extrayant les dernières images des registres que vous utilisez.

Principales difficultés liées à la gestion de la sécurité des containers

Si les containers offrent de nombreux avantages, ils comportent également des inconvénients qui peuvent rendre la sécurité des containers difficile à obtenir. Parmi ces éléments figurent :

  • Diversité de l'infrastructure : la plupart des environnements se composent d'un ensemble divers de serveurs, d'outils de stockage, de registres et d'autres éléments. Il peut être compliqué d'automatiser toutes ces composantes et de faire en sorte qu'elles fonctionnent ensemble.
  • Vulnérabilité liée aux utilisateurs ayant trop d'accès : certains containers ont le statut « privilégié », ce qui signifie qu'ils peuvent faire presque tout ce que peut faire un hôte. En cas de violation d'un container jouissant de ce statut, toutes les parties de l'environnement en lien avec ce dernier sont en danger.
  • Contrôle à l'échelle : les containers sont rapidement lancés puis arrêtés, ce qui rend presque impossible de contrôler les processus qui s'exécutent à un moment précis.
  • Communications associées à trop d'autorisations : compte tenu du nombre de containers que vous pouvez exécuter et de leur caractère éphémère, vous trouverez sans doute compliqué de mettre en œuvre des règles de pare-feu conformes au principe de moindre privilège. Vous devez viser à permettre aux containers de ne communiquer qu'avec les containers absolument nécessaires afin de minimiser votre surface d'attaque.

Secteurs qui reposent sur la sécurité des containers

Dans certains cas, des secteurs très réglementés utilisent des containers pour maintenir la compliance de leurs applications. Lorsqu'une organisation est en mesure d'aligner ses besoins en matière de sécurité et de compliance sur des outils de sécurité spécifiques aux containers, elle peut profiter des avantages des containers pour être agile et flexible au moment de livrer des applications.

Comme toutes les autres applications, les applications à containers doivent en permanence être sécurisées et permettre la visibilité nécessaire pour repérer et contrer les menaces. Les applications à containers sont de nature complexe en raison de la variété des composants qui communiquent entre eux pour livrer l'application dans le runtime. Si l'on ajoute à cela la nécessité de se conformer aux réglementations gouvernementales, industrielles et internes, les organisations doivent pouvoir se fonder sur une approche qui intègre la compliance nécessaire. 

Cas d'utilisation des containers

Les secteurs de la santé, de la biopharmaceutique et des services financiers doivent se conformer à des normes strictes. En utilisant des containers et en profitant des avantages de la Container Security, ils peuvent maintenir des services de haut niveau sans compromettre la sécurité de leurs données. 

Conclusion

Containers and container applications give enterprises the ability to push code fast and efficiently, and put solutions in front of internal and external customers. When they are paired with effective security, they can give organizations a competitive advantage and reduce the complexities of application development and integration. Lacework delivers native container security support, reducing the attack surface, and detecting threats across containerized environments. We visualize your containerized applications in real-time, providing a clear understanding of communications, launches and other cloud runtime behaviors. Coupling container technology with security analysis and evolved security best practices will create the necessary threat detection, protection, and response controls essential to keeping containers and their applications safe and secure.

 

 

 

Image by Bailey Mahon on Unsplash