⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

FAQ de sécurité des conteneurs

Comment les conteneurs sont-ils isolés de l'hôte dans Docker Desktop ?

Docker Desktop exécute tous les conteneurs à l'intérieur d'une machine virtuelle Linux personnalisée / minimale (sauf pour les conteneurs Windows natifs). Cela ajoute une couche d'isolation forte entre les conteneurs et l'hôte de la machine, même si les conteneurs s'exécutent en tant que root.

Cependant, notez ce qui suit :

  • Les conteneurs ont accès aux fichiers hôte configurés pour le partage de fichiers via Paramètres -> Ressources -> Partage de Fichiers (voir la question FAQ suivante ci-dessous pour plus d'informations).

  • Par défaut, les conteneurs s'exécutent en tant que root mais avec des capacités limitées à l'intérieur de la VM Docker Desktop. Les conteneurs s'exécutant avec des privilèges élevés (par exemple, --privileged, --pid=host, --cap-add, etc.) s'exécutent en tant que root avec des privilèges élevés à l'intérieur de la VM Docker Desktop ce qui leur donne accès aux éléments internes de la VM Docker Desktop, y compris le Docker Engine. Ainsi, les utilisateurs doivent être prudents quant aux conteneurs qu'ils exécutent avec de tels privilèges pour éviter les violations de sécurité par des images de conteneur malveillantes.

  • Si le mode Isolation de Conteneurs Renforcée (ECI) est activé, alors chaque conteneur s'exécute dans un Espace de Noms Utilisateur Linux dédié à l'intérieur de la VM Docker Desktop, ce qui signifie que le conteneur n'a aucun privilège dans la VM Docker Desktop. Même lors de l'utilisation du flag --privileged ou similaire, les processus de conteneur ne seront privilégiés que dans la limite logique du conteneur, mais non privilégiés autrement. De plus, ECI protège utilise d'autres techniques avancées pour s'assurer qu'ils ne peuvent pas facilement violer la VM Docker Desktop et le Docker Engine à l'intérieur (voir la section ECI pour plus d'informations). Aucun changement aux conteneurs ou aux flux de travail utilisateur n'est requis car la protection supplémentaire est ajoutée sous le capot.

À quelles parties du système de fichiers hôte les conteneurs ont-ils accès en lecture et écriture ?

Les conteneurs peuvent seulement accéder aux fichiers hôte si ceux-ci sont partagés via Paramètres -> Ressources -> Partage de Fichiers, et seulement lorsque de tels fichiers sont montés par liaison dans le conteneur (par exemple, docker run -v /chemin/vers/fichier/hôte:/mnt ...).

Les conteneurs s'exécutant en tant que root peuvent-ils accéder aux fichiers ou répertoires appartenant à l'administrateur sur l'hôte ?

Non ; le partage de fichiers hôte (montage par liaison du système de fichiers hôte) utilise un serveur de fichiers créé dans l'espace utilisateur (s'exécutant dans com.docker.backend en tant qu'utilisateur exécutant Docker Desktop), donc les conteneurs ne peuvent obtenir aucun accès que l'utilisateur sur l'hôte n'a pas déjà.