Jérôme Petazzoni, ingénieur principal à dotCloud, a étudié les avancées en termes de sécurité concernant Docker, par rapport aux autres technologies de virtualisation et de conteneurs, dans un récent article de blog "CONTAINERS & DOCKER: HOW SECURE ARE THEY?". Jérôme met en avant les techniques utilisées par Docker, en dépit d'un besoin en configuration sophistiquée, de connaissances d'experts, et de l'utilisation de technologies déjà disponibles sous Linux (par exemple SELinux).
Docker utilise deux technologies principales dans Linux pour fabriquer des conteneurs, il s'agit notamment des cgroups et des namespaces. Jérôme reconnaît que Docker offre essentiellement les mêmes fonctionnalités que LXC et a également les mêmes risques de sécurité. Docker s'aligne avec le principe du moindre privilège dans la façon dont il configure ses conteneurs quand ils démarrent, cependant Docker lui-même doit être exécuté en tant que root. Le noyau Linux est actuellement le facteur limitant qui fait que les droits root sont nécessaires. Cela signifie que les utilisateurs devraient prendre soin de protéger le démon Docker tout comme l'accès à son API REST. Jérôme déclare que les choses vont s'améliorer:
L'objectif final pour Docker est donc de mettre en oeuvre deux améliorations de sécurité supplémentaires :
- mapper l'utilisateur root d'un conteneur à un utilisateur non-root de l'hôte Docker, afin d'atténuer les effets d'une élévation de privilèges conteneur-hôte ;
- permettre au démon de Docker de fonctionner sans les privilèges root, et déléguer les opérations nécessitant ces privilèges à des sous-processus bien vérifiés, chacun avec sa propre (et très limitée) portée : la configuration du réseau virtuel, la gestion du système de fichiers, etc.
Jérôme compare Docker à d'autres technologies de virtualisation traditionnelles et reconnaît que les gens perçoivent actuellement la virtualisation traditionnelle comme étant plus sûr en raison de la couche supplémentaire d'isolation que prévoit l'hyperviseur. La virtualisation traditionnelle a été utilisée en production pendant une longue période et, inversement, il y a relativement peu de conteneurs utilisés en production. Jérôme note que dès que les gens se seront rendu compte de l'efficacité de l'utilisation des conteneurs, ils seront utilisés en production plus souvent, obtenant ainsi les moyens d'aider la communauté Linux pour fournir des patchs réglant des failles de sécurité.
Les autres conteneurs basés sur LXC auront les mêmes problèmes de sécurité. OpenVZ est un autre conteneur pensé pour être plus stable et plus sûr. Cependant, il nécessite un noyau Linux personnalisé pour fonctionner entièrement et puisque les développeurs qui travaillent dessus sont les mêmes qui contribuent à LXC nous pouvons nous attendre à ce que LXC le remplace une fois que LXC aura mûri. Il existe d'autres technologies de conteneur qui fonctionnent bien (par exemple, Solaris Zones), mais ils sont loin d'avoir la même base pour pouvoir s'améliorer au fil du temps.