Comment cela fonctionne-t-il ?
Docker implémente l'Isolation de Conteneurs Renforcée en utilisant le runtime de conteneur Sysbox. Sysbox est un fork du runtime OCI runc standard qui a été modifié pour améliorer l'isolation et les charges de travail des conteneurs standards. Pour plus de détails, voir Sous le capot.
Quand l'Isolation de Conteneurs Renforcée est activée, les conteneurs créés par les utilisateurs via docker run
ou docker create
sont automatiquement lancés en utilisant Sysbox au lieu du runtime OCI runc standard. Les utilisateurs n'ont rien d'autre à faire et peuvent continuer à utiliser les conteneurs comme d'habitude. Pour les exceptions, voir FAQ.
Même les conteneurs qui utilisent le flag non sécurisé --privileged
peuvent maintenant être exécutés de manière sécurisée avec l'Isolation de Conteneurs Renforcée, de sorte qu'ils ne peuvent plus être utilisés pour violer la Machine Virtuelle (VM) Docker Desktop ou d'autres conteneurs.
NoteQuand l'Isolation de Conteneurs Renforcée est activée dans Docker Desktop, le flag
--runtime
de Docker CLI est ignoré. Le runtime par défaut de Docker continue d'êtrerunc
, mais tous les conteneurs utilisateur sont implicitement lancés avec Sysbox.
L'Isolation de Conteneurs Renforcée n'est pas la même chose que le mode userns-remap de Docker Engine ou Rootless Docker.
Sous le capot
Sysbox améliore l'isolation des conteneurs en utilisant des techniques telles que :
- Activer l'espace de noms utilisateur Linux sur tous les conteneurs (l'utilisateur root dans le conteneur est mappé vers un utilisateur non privilégié dans la VM Linux).
- Restreindre le conteneur de monter des répertoires sensibles de la VM.
- Vérifier les appels système sensibles entre le conteneur et le noyau Linux.
- Mapper les ID utilisateur/groupe du système de fichiers entre l'espace de noms utilisateur du conteneur et la VM Linux.
- Émuler des portions des systèmes de fichiers
/proc
et/sys
à l'intérieur du conteneur.
Certaines de ces techniques sont rendues possibles par les avancées récentes du noyau Linux que Docker Desktop incorpore maintenant. Sysbox applique ces techniques avec un impact fonctionnel ou de performance minimal sur les conteneurs.
Ces techniques complètent les mécanismes de sécurité de conteneur traditionnels de Docker tels que l'utilisation d'autres espaces de noms Linux, cgroups, Capacités Linux restreintes, Seccomp, et AppArmor. Elles ajoutent une couche forte d'isolation entre le conteneur et le noyau Linux à l'intérieur de la VM Docker Desktop.
Pour plus d'informations, voir Fonctionnalités et avantages clés.
Isolation de Conteneurs Renforcée versus remappage d'espace de noms utilisateur
Le Docker Engine inclut une fonctionnalité appelée mode userns-remap qui active l'espace de noms utilisateur dans tous les conteneurs. Cependant, elle souffre de quelques limitations et n'est pas supportée dans Docker Desktop.
Le mode userns-remap est similaire à l'Isolation de Conteneurs Renforcée en ce que les deux améliorent l'isolation des conteneurs en tirant parti de l'espace de noms utilisateur Linux.
Cependant, l'Isolation de Conteneurs Renforcée est beaucoup plus avancée puisqu'elle assigne automatiquement des mappages d'espace de noms utilisateur exclusifs par conteneur et ajoute plusieurs autres fonctionnalités d'isolation de conteneur destinées à sécuriser Docker Desktop dans les organisations avec des exigences de sécurité strictes.
Isolation de Conteneurs Renforcée versus Rootless Docker
Rootless Docker permet au Docker Engine, et par extension aux conteneurs, de s'exécuter sans privilèges root nativement sur un hôte Linux. Cela permet aux utilisateurs non-root d'installer et d'exécuter Docker nativement sur Linux.
Rootless Docker n'est pas supporté dans Docker Desktop. Bien que ce soit une fonctionnalité précieuse lors de l'exécution de Docker nativement sur Linux, sa valeur dans Docker Desktop est réduite puisque Docker Desktop exécute le Docker Engine dans une VM Linux. C'est-à-dire, Docker Desktop permet déjà aux utilisateurs hôte non-root d'exécuter Docker et isole le Docker Engine de l'hôte en utilisant une machine virtuelle.
Contrairement à Rootless Docker, l'Isolation de Conteneurs Renforcée n'exécute pas Docker Engine dans un espace de noms utilisateur Linux. Plutôt, elle exécute les conteneurs générés par ce moteur dans un espace de noms utilisateur. Cela a l'avantage de contourner les limitations de Rootless Docker et crée une frontière plus forte entre les conteneurs et le Docker Engine.
L'Isolation de Conteneurs Renforcée est destinée à s'assurer que les conteneurs lancés avec Docker Desktop ne peuvent pas facilement violer la VM Linux Docker Desktop et donc modifier les paramètres de sécurité à l'intérieur.