Docker est-il fiable et sécurisé ?

Docker est-il fiable et sécurisé ? En raison de sa jeunesse et de son succès, la techno des containers est régulièrement attaquée sur le terrain de la sécurité et de la performance. Qu'en est-il quatre ans après son lancement ?

Depuis mars 2013 et le lancement de sa première version, le succès de Docker ne s'est jamais démenti. Cette technologie de container logiciel encapsule une application pour qu'elle puisse s'exécuter sur n'importe quel serveur en faisant abstraction des couches inférieures. Un bol d'air dans le monde fermé des clouds publics. Selon le baromètre 2017 de RightScale, Docker est utilisé par 35% des adeptes du DevOps pour motoriser leur processus, contre 27% un an plus tôt. Son taux de pénétration se hisse même à 40% chez les grands comptes.

Une question souvent évoquée comme obstacle à l'utilisation des conteneurs

En France, Silca, GIE informatique du Crédit Agricole, ou Ingenico, société spécialisée dans les moyens de paiement, ont déployé des containers Docker. C'est également le cas chez PSA. "Que de grandes structures évoluant sur des activités sensibles, et donc soumises à d'importantes contraintes en termes de sécurité, choisissent cette voie est un gage de confiance", estime Alexis Horgix Chotard, ‎consultant DevOps chez Xebia, un cabinet spécialisé dans la technologie Docker et organisateur du Paris Container Day.

Pourtant, compte tenu de sa jeunesse, Docker fait régulièrement l'objet de critiques sur ses performances ou sa vulnérabilité aux failles de sécurité. Dans une autre étude conduite par DevOps.com et ClusterHQ (remontant à 2015), environ 60 % des personnes interrogées citaient la sécurité comme principal obstacle à l'utilisation des conteneurs en production. Suivaient la gestion des données, les problématiques réseaux et la prise en compte du stockage persistant.

Une version pour rassurer les grands comptes

Pour Hervé Leclerc, CTO d'Alter Way, la question de la sécurité de Docker est posée sous le mauvais angle. "Docker exprime des besoins simples. Une fois qu'on lui a fixé les règles, il s'occupe de toute la plomberie, y compris la sécurité. Cette approche désarçonne les administrateurs systèmes et les responsables de la sécurité qui essaient de reproduire les schémas classiques qu'ils appliquent depuis des années", explique l'expert. Selon Hervé Leclerc, il s'agit d'abord d'appliquer les bonnes pratiques en matière de sécurité. A cet effet, le Sans Institute a récemment listé tous les points à vérifier concernant Docker. "Aller chercher des images publiques au format Docker sur internet présente bien sûr un risque", insiste Hervé Leclerc. 30 % des images présentes sur le Docker Hub, la place de marché de l'éditeur, seraient touchées par des vulnérabilités.

Dans le sillage de l'offre Docker Datacenter, la sortie début mars de la Docker Enterprise Edition (EE) est destinée à rassurer les grandes entreprises. Docker EE propose des outils de gestion de containers et d'images, une intégration avec les annuaires d'entreprise et un contrôle d'accès par rôle. Sa version "avancée" s'étend, en plus, au scan de sécurité et à la surveillance continue des vulnérabilités. La solution fait l'objet de mises à jour trimestrielles avec un support garanti d'un an. L'introduction de Docker EE est une bonne nouvelle pour Hervé Leclerc. "Les entreprises pouvaient être déstabilisées par le nombre élevé de releases. Là, elles disposeront d'une version stable et supportée, à l'image d'une distribution Linux", pointe le CTO.

Mis à jour chaque trimestre, Docker EE propose des outils de gestion de containers et d'images, une intégration avec les annuaires d'entreprise et un contrôle d'accès par rôle. © Capture JDN

Pour donner plus de visibilité à sa feuille de route, Docker a aussi modifié la nomenclature de ses versions. Comme l'indique ce billet, elles sont désormais nommées en fonction du mois et de l'année de sortie. Pour la dernière en date, sortie en mars, nous sommes passés de la 1.13.1 à la 17.03.

Des gages donnés à la communauté des développeurs

Parallèlement, Docker a fourni des gages à la communauté des développeurs qui lui reprochait de ne pas être suffisamment consultée. La start-up a participé, en 2015, à la création de l'Open container initiative. Ce groupement où l'on retrouve Google et Red Hat travaille sur les spécifications que doivent respecter le format des images ou la gestion du runtime de container. Pour prouver sa bonne foi, Docker vient d'ailleurs de mettre ce dernier (containerd) en open source en le confiant à la Cloud native computing foundation comme l'a expliqué Solomon Hykes, son fondateur, dans un billet.

Des lacunes comblées au fil du temps

Au fil de ces quatre années, Docker a su également faire évoluer sa technologie afin de combler ses lacunes. A l'origine, Docker reposait sur LXC (Linux Containers). Problème : ce dernier ne permettait pas d'isoler les ressources machines utilisées par des containers situés sur un même serveur hôte. Un container pouvait contaminer son voisin et faire exploser la consommation de ressources. "Ce n'est plus le cas aujourd'hui", note Alexis Chotard. "Les cgroups, désormais implémentés dans le Kernel Linux, limitent le nombre de processus. Par défaut, Docker ne va pas imposer de limites en termes de ressources mais, depuis sa version 1.11, il est possible de restreindre cette consommation", note le consultant de Xebia.

Conçu pour déployer un référentiel d'images Docker en interne, le Docker Trusted Registry permet de scanner les images pour vérifier qu'elles ne contiennent pas de vulnérabilité. © Capture JDN

La sécurité est, elle, assurée par Seccomp (pour Secure Computing mode) mais aussi par les mécanismes de protection intrinsèques à Linux via les Linux Security Modules - tels que SELinux (Security-Enhanced Linux) ou AppArmor. Une étude récente de NCC Group reprend le rôle de tous ces composants. "Seccomp va filtrer les appels systèmes autorisés à engager un processus", poursuit Alexis Chotard. "On peut donner une autorisation ou l'enlever et empêcher certains containers d'accéder au réseau."

Le risque d'un goulot d'étranglement réseau

Un goulot d'étranglement (bottleneck) réseau peut toutefois apparaître au niveau du Docker proxy qui pilote le réacheminement de port (port mapping). Pour le consultant, il existe cependant des possibilités de contournement. "Les containers peuvent 'se parler' directement entre eux via leur IP. Les containers qui doivent, eux, être accessibles de l'extérieur, via le host, peuvent utiliser directement la stack réseau du host [option --net=host ndlr] qui n'utilisera donc pas un Network Namespace à part, et qui ne passera pas par le docker proxy", détaille Alexis Chotard.

La persistance des données en question

Autre critique régulièrement énoncée : la gestion de la persistance des données. Par nature, Docker sert le déploiement de micro-services et d'applications sans état (stateless). Les containers sont pensés pour être temporaires. Ils peuvent être arrêtés et recrées sur une autre machine hôte. Mais si les applications doivent accéder à une base de données, comment assurer la persistance des données dans un environnement distribué ? Pour Alexis Chotard, trois solutions sont possibles. "On peut esquiver le problème et le déléguer à un fournisseur de cloud en utilisant une base as a service. Si on veut conserver l'hébergement des données en interne, il faudra alors faire appel à des bases qui découpent les données et les répliquent, comme ElasticSearch. Enfin, si on reste sur des serveurs de données classiques type MySQL, on pourra passer par Rex-Ray, un plugin Docker de Dell EMC pour gérer les volumes distants." Face à ce dilemme, Uber a construit son propre gestionnaire de topologie de clusters MySQL pour Docker.

La solution pourrait aussi venir de Docker lui-même. En s'offrant en décembre dernier le français Infinit, l'éditeur de San Francisco s'est doté d'une technologie de gestion distribuée du stockage. L'intégration de cette brique à son offre pourrait permettre d'apporter une réponse au problème. Des annonces en ce sens pourraient être réalisées lors de la prochaine DockerCon, la conférence annuelle de l'éditeur qui se tiendra mi-avril à Austin.

A lire aussi :

"Cloud computing - JDN"