Per impostazione predefinita, i contenitori Docker vengono eseguiti con il privilegio di root, così come l'applicazione che viene eseguita all'interno del contenitore. Questa è un'altra preoccupazione importante dal punto di vista della sicurezza perché gli hacker possono ottenere l'accesso come root all'host Docker hackerando l'applicazione in esecuzione all'interno del contenitore.
Metodo 1:aggiungi utente al gruppo Docker
1. Per eseguire Docker come utente non root, devi aggiungere il tuo utente al gruppo Docker.
2. Crea un gruppo Docker se non ce n'è uno:
$ sudo groupadd docker
3. Aggiungi il tuo utente al gruppo Docker:
$ sudo usermod -aG docker [non-root user]
4. Disconnettersi e riconnettersi in modo che l'appartenenza al gruppo venga rivalutata.
Metodo 2 – Utilizzo di Dockerfile (istruzione USER)
Docker fornisce una soluzione semplice ma potente per modificare il privilegio del contenitore in un utente non root e quindi contrastare l'accesso root dannoso all'host Docker. Questa modifica all'utente non root può essere eseguita utilizzando -u o –utente opzione del sottocomando di esecuzione della finestra mobile o di USER istruzioni nel Dockerfile.
1. Modifica il Dockerfile che crea un utente con privilegi non root e modifica l'utente root predefinito in un utente con privilegi non root appena creato, come mostrato qui:
########################################## # 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. Procedi con la creazione dell'immagine Docker utilizzando il sottocomando "docker build", come illustrato di seguito:
$ sudo docker build -t nonrootimage .
3. Infine, verifichiamo l'utente corrente del nostro container utilizzando il comando id in un sottocomando di esecuzione della finestra mobile:
$ sudo docker run --rm nonrootimage id uid=8877(john) gid=8877(john) groups=8877(john)
Evidentemente, l'utente, il gruppo e i gruppi del contenitore sono ora cambiati in un utente non root.