Les conteneurs ne sont pas des machines virtuelles : espaces de noms, cgroups et illusion d'isolation
Photo : Medium

Les conteneurs ne sont pas des machines virtuelles : espaces de noms, cgroups et illusion d'isolation

Un conteneur n'est qu'un processus dont le reste du système est généralement masqué. Comprendre cela, c'est comprendre ses limites en matière de sécurité.

Beaucoup de gens considèrent les conteneurs comme de petites machines virtuelles. Cette perception conduit à des décisions erronées en matière de sécurité. En réalité, un conteneur n'est qu'un processus Linux ordinaire, s'exécutant directement sur le noyau du serveur.

Les trois mécanismes qui constituent un conteneur

  • Espace de noms — détermine ce que le processus peut voir. L'espace de noms PID fait croire au processus qu'il est le numéro 1 ; l'espace de noms réseau lui attribue une pile réseau distincte ; l'espace de noms de montage lui attribue une arborescence de répertoires distincte
  • cgroup — détermine la quantité de CPU, de RAM et de bande passante disque dont un processus peut disposer
  • Système de fichiers en couches — plusieurs conteneurs partagent des couches en lecture seule, chacun disposant d’une seule couche en écriture, ce qui permet de créer de nouveaux conteneurs presque instantanément

Conséquences en matière de sécurité

Comme le noyau est partagé, une faille permettant l'escalade de privilèges au niveau du noyau peut permettre à un attaquant de sortir du conteneur pour accéder directement au serveur. La machine virtuelle dispose d'une couche de séparation supplémentaire, à savoir le logiciel de virtualisation.

On peut en déduire quelques principes pratiques :

  • N'exécutez pas de conteneurs avec les droits root si ce n'est pas strictement nécessaire
  • Ne montez pas le socket Docker dans le conteneur — cela revient à accorder les droits root au serveur
  • Pour isoler plusieurs utilisateurs qui ne se font pas confiance, utilisez des machines virtuelles ; ne vous fiez pas aux conteneurs

Pourquoi faut-il continuer à l'utiliser ?

Les conteneurs apportent une excellente solution au problème de l'emballage et de la reproduction d'environnement : la même image s'exécute de la même manière sur votre machine et sur le serveur. C'est là leur principal atout, tandis que l'isolation n'est qu'un avantage secondaire — et un avantage limité.

Chia sẻ

Thảo luận