La sécurité avec Docker – Chapitre 3 : Les utilisateurs
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