La sécurité avec Docker – Chapitre 3 : Les utilisateurs

chained

Chapitre III : Utilisateurs

 

Docker ne doit pas être contrôlé par root :

 

Vous devez utiliser un compte standard pour manipuler vos containers et vos images Docker.

C’est très simple, il suffit que votre utilisateur appartienne au groupe docker :

sudo adduser moi docker
docker run ...

 

Les conteneurs ne doivent pas être lancés par root :

 

Un conteneur ne doit pas être lancé en tant qu’utilisateur root sauf s’il y a une utilité particulière.

Par exemple, si on installe un serveur MariaDB, c’est l’utilisateur mysql qui est censé démarrer le service.

docker run -u mysql -d mariadb

 

Les services dans les conteneurs ne doivent pas être lancés par root :

 

Dans le même ordre d’idées, un conteneur – de même qu’une VM ou une machine physique – ne doit pas lancer de service en tant qu’utilisateur root.

Toujours avec MariaDB, c’est l’utilisateur mysql qui est censé démarrer le service.

Un exemple avec supervisor :

[supervisord]
nodaemon=true
[program:mariadb]
command=mysqld
process_name=mysqld
user_name=mysql
redirect_stderr=true

 

Il y a des cas où ce n’est pas possible, notamment pour les services ouvrant des ports well known (ports <1024) qui nécessitent des droits de root pour être ouverts.

Dans le cas d’Apache c’est géré par un process en tant que root qui lui-même lance des process enfants en tant qu’utilisateur www-data.

Avec Supervisor, ça donne ça :

[supervisord]
nodaemon=true
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.err
autorestart=true

Sur le même sujet :