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

Docker®  possède de nombreuses parties en mouvement. Leur sécurisation est plus complexe qu’avec les technologies de déploiement plus anciennes. Elle requiert une approche holistique, des pare-feu du réseau et de l’application à la défense de l’exécution de conteneur, en passant par la protection de l’hôte.

Sécurité des conteneurs Docker

La sécurisation d'un conteneur Docker est identique à la sécurité d’autres conteneurs. Elle requiert une approche tout compris, qui sécurise tous les éléments de l’hôte au réseau. De nombreuses organisations ont des difficultés à assurer la sécurité des conteneurs en raison de leurs parties mobiles ; un niveau de vigilance rudimentaire ne suffit pas.

Éléments à prendre en compte

Voici quelques éléments à prendre en compte lorsque vous sécurisez vos conteneurs Docker :

  • Utilisez des quotas de ressources
  • Les conteneurs Docker ne doivent pas être exécutés en tant que root
  • Assurez la sécurité de vos registres de conteneur Docker
  • Utilisez une source fiable
  • Accédez à la source du code
  • Concevez des API et des réseaux en gardant la sécurité à l’esprit

Utilisez des quotas de ressources

L'utilisation de quotas de ressources vous permet de limiter la consommation de mémoire et de CPU dans un conteneur. La configuration de quotas de ressources sur chaque conteneur aide non seulement à augmenter l’efficacité de l’environnement, mais aussi à éviter un déséquilibre des ressources dans tous les conteneurs de votre environnement.

Vos conteneurs offriront ainsi la vitesse que vous attendez et, plus important encore, amélioreront la sécurité. Si un conteneur venait à se faire infecter par du contenu malveillant, ce dernier ne pourrait pas faire entrer une grande quantité de ressources dans le conteneur, car le quota l’interromprait. L'impact de l’attaque serait ainsi minimisé. Il s'agit d’une tactique de sécurité simple à utiliser, grâce à des indicateurs de ligne de commande.

Les conteneurs Docker ne doivent pas être exécutés en tant que root

Lors de la création d'une application, la bonne pratique consiste à respecter le principe du moindre privilège. Il faut donc limiter l'accès de l’application uniquement aux ressources requises. C’est l’une des meilleures façons de protéger vos conteneurs face à tout accès inattendu.

Concernant la sécurité de vos conteneurs Docker, ce point est essentiel et déterminer pourquoi les paramètres Docker par défaut ne sont pas configurés pour exécuter des conteneurs en tant que root. Par exemple, si votre application conteneurisée est vulnérable à un exploit, et si vous l’exécutez en tant qu’utilisateur root, la surface d'attaque est étendue, ce qui crée une voie simple pour permettre aux attaquants d’obtenir une remontée privilégiée.

Assurez la sécurité de vos registres de conteneur Docker

Les registres de conteneur, en particulier ceux présents dans les conteneurs Docker, assurent leur solidité en tant que plateforme. Les registres permettent de créer un référentiel d’images central, qui peuvent se télécharger facilement et rapidement. Néanmoins, ils s'accompagnent de nombreux risques de sécurité si vous n’utilisez pas un registre fiable sur lequel vous avez mené des recherches exhaustives, comme Docker Trusted Registry. Avec le registre Docker, vous l’installez derrière le pare-feu déjà mis en œuvre dans votre infrastructure IT pour atténuer les risques liés à Internet. Malgré cela, vous devez tout de même refuser aux utilisateurs le droit de charger ou de télécharger des éléments depuis le registre.

Vous pouvez être tenté d'éviter tout ce travail et de laisser un accès ouvert, mais cet effort empêcherait d’importantes violations du registre. Une tactique utile pour éviter de céder à la tentation consiste à mettre en œuvre un contrôle d'accès basé sur les rôles. Il vous permet de contrôler exactement qui peut accéder à quoi, en termes de registres.

Utilisez une source fiable

Maintenant que votre registre de conteneur est sécurisé, vous ne devez pas l'infecter avec des images de conteneur obtenues depuis une source non fiable. Il peut être tentant de se contenter de télécharger des images de conteneur toutes prêtes, disponibles pour le public en un clic ; néanmoins, il est extrêmement important de s'assurer que la source du téléchargement est fiable ou vérifiée.

Dans une optique de précaution et de sécurité, il vaut vraiment mieux éviter les registres de conteneur publics et se limiter à ceux proposés par Docker, comme Docker Hub. Pour aller plus loin dans la sécurisation de vos conteneurs Docker, vous devez utiliser des outils d'analyse d’image qui mettront en évidence les failles dans les images Docker et les sécuriseront. 

Accédez à la source du code

Comme indiqué ci-dessus, il est important de trouver des images de conteneur fiables et sécurisées pour vos conteneurs Docker. Cependant, la bonne pratique consiste également à étudier le code dans l’image pour s'assurer qu’il ne contient pas de code infecté, même si cette image provient d'un registre fiable. Les images Docker possèdent du code original et des packages de sources extérieures, qui peuvent se pas dériver de sources fiables.

Dans ce scénario, il est préférable d’utiliser des outils d'analyse de code source. Lorsque vous aurez vos images, vous pourrez analyser les packages pour déterminer d'où provient le code, en téléchargeant les sources de tous les packages au sein des images Docker. Cela vous permettra de révéler si certaines des images présentent des failles de sécurité connues, et assurera votre sécurité dès la première version.

Concevez des API et des réseaux en gardant la sécurité à l’esprit

Pour permettre aux conteneurs Docker de communiquer ensemble, ils utilisent des API (interfaces de programmation d’application) et des réseaux. Cette communication est essentielle pour permettre aux conteneurs de s’exécuter correctement, mais elle requiert une sécurité et une surveillance appropriées. Même si les API et le réseau ne font pas vraiment partie du conteneur Docker, étant donné qu’il s'agit de ressources que vous utilisez en plus de ce dernier, ils constituent tout de même un risque pour la sécurité du conteneur. En gardant cela à l’esprit et pour pouvoir arrêter rapidement une intrusion, vous devez concevoir vos API et votre réseau de manière à faciliter la surveillance, tout en gardant la sécurité à l’esprit. 

Résumé

La sécurisation de vos conteneurs Docker n’est pas une mince affaire, mais le résultat en vaut la peine. Vous devez adopter une approche holistique et renforcer l’environnement du conteneur à tous les niveaux. Et même si les bonnes pratiques ci-dessus peuvent paraître difficiles, elles vous feront gagner beaucoup de temps par la suite et vous protégeront des risques de sécurité majeurs. 

Recherches associées

Articles associés