Kontejnery Dockeru ve výchozím nastavení běží s oprávněním root a stejně tak i aplikace, která běží uvnitř kontejneru. To je další velký problém z hlediska zabezpečení, protože hackeři mohou získat root přístup k hostiteli Docker hackováním aplikace běžící uvnitř kontejneru.
Metoda 1 – Přidat uživatele do skupiny Docker
1. Chcete-li spustit Docker jako uživatel bez oprávnění root, musíte svého uživatele přidat do skupiny dockerů.
2. Vytvořte skupinu ukotvitelných panelů, pokud žádná neexistuje:
$ sudo groupadd docker
3. Přidejte svého uživatele do skupiny dockerů:
$ sudo usermod -aG docker [non-root user]
4. Odhlaste se a přihlaste se znovu, aby bylo vaše členství ve skupině přehodnoceno.
Metoda 2 – Použití Dockerfile (uživatelská instrukce)
Docker poskytuje jednoduché, ale výkonné řešení, jak změnit oprávnění kontejneru na uživatele bez oprávnění root, a zmařit tak škodlivý root přístup k hostiteli Docker. Tuto změnu na uživatele bez oprávnění root lze provést pomocí -u nebo –uživatel možnost dílčího příkazu docker run nebo USER instrukce v Dockerfile.
1. Upravte soubor Dockerfile, který vytváří uživatele s oprávněním jiného než root, a změňte výchozího uživatele root na nově vytvořeného uživatele s oprávněním jiného uživatele, jak je znázorněno zde:
########################################## # 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. Pokračujte ve vytváření obrazu Docker pomocí dílčího příkazu „docker build“, jak je znázorněno zde:
$ sudo docker build -t nonrootimage .
3. Nakonec ověřte aktuálního uživatele našeho kontejneru pomocí příkazu id v dílčím příkazu docker run:
$ sudo docker run --rm nonrootimage id uid=8877(john) gid=8877(john) groups=8877(john)
Je zřejmé, že uživatel kontejneru, skupina a skupiny jsou nyní změněny na uživatele bez oprávnění root.