Qu’est-ce que la sécurité des conteneurs ?

La sécurité des conteneurs est le processus visant à mettre en œuvre des outils et politiques de sécurité afin de s’assurer que tous les éléments de votre conteneur s’exécutent comme prévu, notamment la protection de l’infrastructure, la chaîne d’approvisionnement logicielle, etc.

Sécurité des conteneurs

Le processus de sécurisation des conteneurs est continu. Il doit être intégré à votre processus de développement, automatisé pour supprimer le nombre de points de contact manuels, et étendu à la maintenance et à l’opération de l’infrastructure sous-jacente. Vous devez donc protéger vos images de conteneur de pipeline de version et l’hôte d’exécution, la plateforme et les couches d'application. La mise en œuvre de la sécurité dans le cadre du cycle de vie de livraison continu permet à votre entreprise de limiter les risques et de réduire les failles sur une surface d'attaque toujours plus importante.

Les principales inquiétudes sont les suivantes concernant la sécurisation des conteneurs :

  • La sécurité de l’hôte du conteneur
  • Le trafic réseau du conteneur
  • La sécurité de votre application dans le conteneur
  • Un comportement malveillant dans votre application
  • La sécurisation de la pile de gestion de votre conteneur
  • Les couches de base de votre application
  • L'intégrité du pipeline de version

L'objectif de la cybersécurité est de s'assurer que tout ce que vous créez fonctionne comme prévu, et uniquement comme prévu.

Noms associés

Découvrez quelques-uns des noms que les entreprises utilisent pour leurs besoins en matière de conteneurs : Docker®, Kubernetes®, Amazon Web Services™ (AWS) et Microsoft®.

Sécurisation des conteneurs Docker

Avant de commencer à sécuriser vos conteneurs, vous devez connaître les principaux acteurs du secteur. Docker, un leader sur le marché de la conteneurisation, fournit une plateforme de conteneur pour créer, gérer et sécuriser les applications. Docker permet aux clients de déployer des applications traditionnelles et les derniers microservices partout. Comme avec toute autre plateforme de conteneurs, vous devez vous assurer que vous disposez d’une protection adéquate. En savoir plus sur la  Sécurité des conteneurs Docker.

Sécurisation des conteneurs Kubernetes

Kubernetes est un autre nom important à connaître. Kubernetes fournit une plateforme portable, extensible et open source pour gérer les charges de travail et les services conteneurisés. Kubernetes offre des fonctionnalités de sécurité, mais il vous faut une solution de sécurité dédiée, car le nombre d’attaques sur les clusters Kubernetes a augmenté. En savoir plus sur la sécurisation de Kubernetes.

Amazon Web Services et la sécurité des conteneurs

Ensuite, nous avons Amazon Web Services (AWS). AWS comprend la nécessité pour les conteneurs de permettre aux développeurs de fournir des applications plus rapidement et de manière plus cohérente. C'est pourquoi il propose Amazon Elastic Container Service (Amazon ECS), un service d'orchestration de conteneurs évolutif et très performant qui prend en charge les conteneurs Docker. Il supprime les dépendances liées à la gestion de vos propres machines virtuelles et de votre environnement de conteneurs et vous permet d'exécuter et de mettre à l'échelle des applications conteneurisées AWS en toute simplicité. Cependant, comme pour tous les autres acteurs clés ci-dessus, vous avez besoin de sécurité pour profiter pleinement des avantages de ce service.. En savoir plus sur la  sécurité des conteneurs AWS.

Sécurisation des instances de Microsoft Azure Container

Pour terminer, nous avons Microsoft® Azure™ Container Instances (ACI). Cette solution permet aux développeurs de déployer des conteneurs sur le cloud public Microsoft® Azure™ sans avoir à exécuter ou gérer une infrastructure sous-jacente. Vous pouvez simplement déployer un conteneur à l'aide du portail Microsoft® Azure™, où Microsoft provisionne et met à l'échelle automatiquement les ressources informatiques sous-jacentes. Azure Container Instances offre une vitesse et une agilité importantes, mais doit être sécurisé si vous souhaitez en récolter tous les avantages. 

Maintenant que vous connaissez les principaux acteurs, découvrons comment les sécuriser. Autrement, cliquez sur les liens ci-dessus pour obtenir des informations spécifiques sur la sécurisation de chaque solution. En savoir plus sur la  sécurisation de Microsoft Azure Container Instances.

Sécurisation de l’hôte

La sécurisation de l'hôte commence par le choix de son système d'exploitation. Si possible, vous devez utiliser un système d’exploitation distribué optimisé pour exécuter des conteneurs. Si vous utilisez des distributions Linux® ou Microsoft® Windows®, vous devez veiller à désactiver ou éliminer les services inutiles et renforcer le système d’exploitation en général. Puis, ajoutez une couche de sécurité et des outils de surveillance pour vous assurer que votre hôte s’exécute comme vous le souhaitez. Des outils tels que le contrôle applicatif ou un système de prévention des intrusions (IPS) sont très utiles dans cette situation.

Une fois que votre conteneur s’exécute en production, il devra interagir avec d'autres conteneurs et ressources. Ce trafic interne doit être surveillé et sécurisé en s'assurant que tout le trafic réseau de vos conteneurs passe par un IPS. Cela change la façon dont vous déployez le contrôle de sécurité. Au lieu de mettre en œuvre un petit nombre de moteurs IPS traditionnels de grande ampleur sur le périmètre, vous pouvez mettre en œuvre l’IPS sur chaque hôte. Cela permet de surveiller efficacement tout le trafic sans impact significatif sur les performances.

Sécurisation de l’application dans le conteneur

Lorsque votre conteneur s’exécute en production, il traite constamment les données de votre application, génère des fichiers journaux, met des fichiers en cache, etc. Les contrôles de sécurité peuvent vous aider à vous assurer qu’il s'agit d'activités ordinaires, et non malveillantes. Les contrôles antimalware en temps réel qui s’exécutent sur le contenu dans le conteneur sont essentiels à la réussite.

Un IPS joue un rôle essentiel ici également, dans un modèle d'utilisation nommé application de correctifs virtuelle. Si une faille est exposée à distance, le moteur IPS peut détecter des tentatives d’exploitation et éliminer des paquets pour protéger votre application. Vous gagnez ainsi le temps nécessaire pour traiter la cause première dans la prochaine version de ce conteneur, au lieu de créer un correctif d'urgence.

Surveillance de votre application

Lors du déploiement de votre application dans un conteneur, un contrôle de sécurité RASP (runtime application self-protection) peut s'avérer utile. Ces contrôles de sécurité s’exécutent dans le code de votre application et interceptent souvent des appels de clés dans votre code. En dehors des fonctionnalités de sécurité, comme la surveillance Structured Query Language (SQL), le contrôle des dépendances et la remédiation, la vérification des URL et d'autres contrôles, le RASP peut également résoudre l’une des plus grandes difficultés de la sécurité : l’identification de la cause première.

En étant positionnés dans le code de l'application, ces contrôles de sécurité peuvent aider à associer un problème de sécurité à la ligne de code qui l'a créé. Ce niveau de connaissance est difficile à atteindre et améliore fortement votre position en matière de sécurité.

Sécurisation de la pile de gestion de votre conteneur

Du point de vue de la sécurité, la pile de gestion qui aide à coordonner vos conteneurs est souvent ignorée. Toutes les organisations qui prennent au sérieux le déploiement de leurs conteneurs finiront inévitablement par avoir deux parties d'infrastructure essentielles pour gérer le processus : un registre de conteneur de confidentialité tel qu’Amazon ECS et Kubernetes pour orchestrer le déploiement des conteneurs.

L'association d’un registre de conteneurs et de Kubernetes vous permet d'appliquer automatiquement un ensemble de normes de qualité et de sécurité pour vos conteneurs, avant et pendant le redéploiement dans votre environnement.

Les registres simplifient le partage de conteneurs et aident les équipes à s'appuyer sur leur travail mutuel. Cependant, pour vous assurer que chaque conteneur respecte vos références en matière de développement et de sécurité, vous devez opter pour un analyseur automatisé. Le fait d'analyser chaque conteneur et de détecter les vulnérabilités connues, les malwares et tous les secrets exposés avant sa mise à disposition dans le registre aide à réduire les problèmes en aval.

En outre, vous voudrez vous assurer que le registre est bien protégé. Il doit être exécuté sur un système renforcé ou sur un service cloud à la réputation irréprochable. Dans le scénario de service, vous devez également comprendre le modèle de responsabilité partagée et mettre en œuvre une approche solide basée sur les rôles pour l’accès au registre.

Côté orchestration, une fois que Kubernetes s’exécute et est déployé dans votre environnement, il offre un nombre important d'avantages qui aideront vos équipes à tirer le meilleur parti de votre environnement. Kubernetes permet également de mettre en œuvre un certain nombre de contrôles opérationnels et de sécurité, comme Pod (ressources au niveau du cluster) et des politiques de sécurité du réseau, ce qui vous permet d'utiliser différentes options selon votre tolérance au risque.

Créer votre application sur une base sécurisée : analyse de conteneur

Vous devez mettre en place un flux de travail d'analyse d’image de conteneur pour vous assurer que les conteneurs que vous utilisez en tant que blocs de construction sont fiables et sécurisés face aux menaces courantes. Cette classe d'outils analyse le contenu d'un conteneur et cherche les problèmes avant qu’il ne soit utilisé en tant que bloc de construction pour votre application. Il effectuera également une dernière série de contrôles avant qu'un conteneur ne soit déployé en production.

Lorsqu’elle est mise en œuvre correctement, l'analyse devient un élément naturel de votre processus de codage. Ce processus entièrement automatisé peut identifier tous les problèmes pendant que vous développez votre application et ses conteneurs, de manière simple et rapide. 

Assurer l'intégrité du pipeline de version

Les attaquants ont commencé à cibler les phases plus précoces de votre pipeline CI/CD. Si un attaque parvient à compromettre votre serveur de build, le référentiel du code ou les stations de travail des développeurs, ils peuvent rester plus longtemps dans votre environnement. Il vous faut un ensemble de contrôles de sécurité solide et à jour.

Vous devez ainsi mettre en œuvre une stratégie de contrôle d'accès solide tout au long du pipeline, depuis votre référentiel de code et votre stratégie de branches, jusqu'au référentiel de conteneur. Il vous faudra également mettre en œuvre le principe de moindre privilège (qui consiste à ne fournir que l’accès nécessaire pour accomplir les tâches requises) et auditer régulièrement cet accès.

Résumé

Pour sécuriser vos conteneurs, il vous faut une approche complète de la sécurité. Vous devez vous assurer que vous répondez aux besoins de toutes les équipes de votre organisation. Assurez-vous que votre approche peut être automatisée pour s'adapter à vos processus DevOps, et que vous pouvez respecter les délais et livrer les applications rapidement tout en protégeant chaque groupe. La sécurité ne peut plus être reléguée au second plan, ou créer des demandes urgentes vous forçant à modifier votre flux de travail. La création de contrôles de sécurité et de processus automatisés fiables dès le début répond à vos inquiétudes et permet de combler plus facilement le fossé entre les équipes. 

Recherches associées

Articles associés