Les conteneurs Docker s'exécutent par défaut avec le privilège root, tout comme l'application qui s'exécute à l'intérieur du conteneur. Il s'agit d'une autre préoccupation majeure du point de vue de la sécurité, car les pirates peuvent obtenir un accès root à l'hôte Docker en piratant l'application exécutée à l'intérieur du conteneur.
Méthode 1 - Ajouter un utilisateur au groupe Docker
1. Pour exécuter Docker en tant qu'utilisateur non root, vous devez ajouter votre utilisateur au groupe docker.
2. Créez un groupe docker s'il n'y en a pas :
$ sudo groupadd docker
3. Ajoutez votre utilisateur au groupe docker :
$ sudo usermod -aG docker [non-root user]
4. Déconnectez-vous et reconnectez-vous afin que votre appartenance au groupe soit réévaluée.
Méthode 2 - Utilisation de Dockerfile (instruction USER)
Docker fournit une solution simple mais puissante pour changer le privilège du conteneur en un utilisateur non root et ainsi contrecarrer l'accès root malveillant à l'hôte Docker. Cette modification de l'utilisateur non root peut être effectuée à l'aide de -u ou -utilisateur option de la sous-commande docker run ou de l'USER instruction dans le Dockerfile.
1. Modifiez le Dockerfile qui crée un utilisateur à privilèges non root et remplacez l'utilisateur root par défaut par l'utilisateur à privilèges non root nouvellement créé, comme indiqué ici :
########################################## # Dockerfile to change from root to # non-root privilege ########################################### # Base image is CentOS 7 FROM Centos:7 # Add a new user "john" with user id 8877 RUN useradd -u 8877 john # Change to non-root privilege USER john
2. Procédez à la création de l'image Docker à l'aide de la sous-commande "docker build", comme illustré ici :
$ sudo docker build -t nonrootimage .
3. Enfin, vérifions l'utilisateur actuel de notre conteneur à l'aide de la commande id dans une sous-commande docker run :
$ sudo docker run --rm nonrootimage id uid=8877(john) gid=8877(john) groups=8877(john)
De toute évidence, l'utilisateur, le groupe et les groupes du conteneur sont désormais remplacés par un utilisateur non root.