GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Docker Privileged - Devriez-vous exécuter des conteneurs Docker privilégiés ?

Présentation

Docker privilégié est l'une des nombreuses fonctionnalités utiles de cette puissante plate-forme de virtualisation. Avant de commencer à travailler en mode privilégié, assurez-vous de bien comprendre son fonctionnement.

Dans ce didacticiel, vous apprendrez ce que sont les conteneurs Docker privilégiés, quand les utiliser et s'il s'agit d'une bonne option pour vous.

Qu'est-ce que le mode privilégié Docker ?

Le mode privilégié Docker accorde des capacités racine de conteneur Docker à tous les appareils du système hôte. L'exécution d'un conteneur en mode privilégié lui donne les capacités de sa machine hôte. Par exemple, cela lui permet de modifier les configurations App Arm et SELinux.

Avec les fonctionnalités du noyau de l'hôte et l'accès aux périphériques, vous pouvez même installer une nouvelle instance de la plate-forme Docker dans le conteneur privilégié. Essentiellement, ce mode permet d'exécuter Docker dans Docker.

Comment vérifier si un conteneur est privilégié ?

Pour vérifier si vous exécutez un conteneur en mode privilégié, utilisez la commande :

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

Si le conteneur est privilégié, la sortie répond par true , comme dans l'image ci-dessous.

En revanche, si le conteneur n'est pas privilégié, la sortie affiche le message false .

Comment exécuter le mode privilégié Docker ?

Demandez à Docker d'exécuter un conteneur en mode privilégié en ajoutant le --privileged option à la commande d'exécution :

sudo docker run --privileged [image_name]

Exemple privilégié Docker

Pour exécuter un conteneur Ubuntu (de manière interactive) en mode privilégié, vous utiliseriez :

sudo docker run -it --privileged ubuntu

Pour tester si le conteneur a accès à l'hôte, vous pouvez essayer de créer un système de fichiers temporaire (tmpfs ) et montez-le sur /mnt :

mount -t tmpfs none /mnt

Maintenant, répertoriez les statistiques d'espace disque (en lisible par l'homme format) avec la commande :

df -h

Le système de fichiers nouvellement créé devrait apparaître dans la liste, comme dans l'image ci-dessous.

Pourquoi l'exécution de conteneurs privilégiés n'est pas sécurisée ?

Tout comme Ubuntu décourage l'utilisation du système en tant que root, Docker le fait aussi. Exposer le noyau et les ressources matérielles de l'hôte à toute cyberattaque extérieure est toujours une menace potentielle pour le système.

Pour cette raison, il est déconseillé d'utiliser des conteneurs privilégiés dans un environnement de production.

Violations possibles via des conteneurs privilégiés

Avoir des conteneurs privilégiés est un risque de sécurité pour toute organisation. Cela crée des opportunités pour les utilisateurs malveillants de prendre le contrôle du système.

Autoriser un accès racine de conteneur à tout ce qui se trouve sur le système ouvre une fenêtre d'opportunité pour les cyberattaques. Un cyberattaquant pourrait se connecter à l'hôte depuis le conteneur et mettre en danger l'infrastructure et la configuration établies.

Le scénario le plus courant est lorsqu'un utilisateur légitime abuse du privilège accordé pour une activité malveillante.

Comment minimiser l'escalade des privilèges du conteneur Docker ?

Le meilleur moyen d'empêcher l'escalade des privilèges des conteneurs Docker est de ne pas utiliser de conteneurs privilégiés du tout.

Cependant, si vous exécutez une application qui nécessite une exécution avec l'utilisateur root, il existe un moyen de minimiser les risques d'activité malveillante. Cela se fait par remappage de l'espace de noms d'utilisateur , en remappant l'utilisateur de ce conteneur spécifique vers un utilisateur moins privilégié sur l'hôte Docker. Essentiellement, le conteneur considère l'utilisateur comme la racine, contrairement à l'hôte.

Le remappage comprend l'attribution d'une plage d'UID qui fonctionnent dans le conteneur (espace de noms) comme des UID normaux de 0 à 65536 mais qui n'ont aucun privilège sur l'hôte. Deux fichiers gèrent la configuration utilisateur - un pour la plage d'ID utilisateur (/etc/subuid ) et l'autre pour la plage d'ID de groupe (/etc/subgid ).

Par défaut, docker utilise le dockremap utilisateur et groupe pour effectuer le remappage.


Ubuntu
  1. Portainer :une interface graphique facile à utiliser pour exécuter et obtenir des conteneurs Docker

  2. Devriez-vous exécuter une base de données dans Docker ?

  3. Introduction aux conteneurs Docker

  4. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

  5. 10 commandes mortelles que vous ne devriez jamais exécuter sous Linux

Comment installer Docker sur Debian 9

Traefik pour les conteneurs Docker sur Ubuntu

Comment installer Podman sur Rocky Linux 8 / AlmaLinux pour exécuter des conteneurs

Comment exécuter des conteneurs Docker

Comment supprimer les conteneurs Docker

Comment arrêter les conteneurs Docker