GNU/Linux >> Znalost Linux >  >> Ubuntu

Docker Privileged – měli byste provozovat Privileged Docker Containers?

Úvod

Privilegovaný Docker je jednou z mnoha užitečných funkcí této výkonné virtualizační platformy. Než začnete pracovat v privilegovaném režimu, ujistěte se, že rozumíte tomu, jak to funguje.

V tomto tutoriálu se dozvíte, jaké jsou privilegované kontejnery Docker, kdy je používat a zda je to pro vás dobrá volba.

Co je režim Privileged Docker?

Privilegovaný režim Docker poskytuje kořenové možnosti kontejneru Docker všem zařízením v hostitelském systému. Spuštění kontejneru v privilegovaném režimu mu dává možnosti jeho hostitelského počítače. Umožňuje mu například upravovat konfigurace App Arm a SELinux.

Díky funkcím jádra hostitele a přístupu k zařízení můžete dokonce nainstalovat novou instanci platformy Docker v rámci privilegovaného kontejneru. Tento režim v podstatě umožňuje spuštění Dockeru uvnitř Dockeru.

Jak zkontrolovat, zda je kontejner privilegovaný?

Chcete-li zkontrolovat, zda používáte kontejner v privilegovaném režimu, použijte příkaz:

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

Pokud je kontejner privilegovaný, výstup odpoví true , jako na obrázku níže.

Na druhou stranu, pokud kontejner není privilegovaný, výstup zobrazí zprávu false .

Jak spustit režim Privileged Docker?

Dejte Dockeru pokyn ke spuštění kontejneru v privilegovaném režimu přidáním --privileged možnost příkazu run:

sudo docker run --privileged [image_name]

Příklad oprávnění Docker

Pro spuštění kontejneru Ubuntu (interaktivně) v privilegovaném režimu byste použili:

sudo docker run -it --privileged ubuntu

Chcete-li otestovat, zda má kontejner přístup k hostiteli, můžete zkusit vytvořit dočasný souborový systém (tmpfs ) a připojte jej k /mnt :

mount -t tmpfs none /mnt

Nyní vypište statistiku místa na disku (v čitelných člověkem format) pomocí příkazu:

df -h

Nově vytvořený souborový systém by se měl objevit v seznamu, jako na obrázku níže.

Proč není spouštění privilegovaných kontejnerů bezpečné?

Stejně jako Ubuntu odrazuje od používání systému jako root, tak to dělá i Docker. Vystavení jádra a hardwarových zdrojů hostitele jakémukoli vnějšímu kybernetickému útoku je vždy potenciální hrozbou pro systém.

Z tohoto důvodu se nedoporučuje používat privilegované kontejnery v produkčním prostředí.

Možná porušení prostřednictvím privilegovaných kontejnerů

Mít privilegované kontejnery představuje bezpečnostní riziko pro každou organizaci. Vytváří příležitosti pro uživatele se zlými úmysly převzít kontrolu nad systémem.

Povolení přístupu kořenového adresáře kontejneru ke všemu v systému otevírá příležitost pro kybernetické útoky. Kybernetický útočník by se mohl připojit k hostiteli z kontejneru a ohrozit zavedenou infrastrukturu a konfiguraci.

Nejběžnějším scénářem je situace, kdy legitimní uživatel zneužije dané oprávnění ke škodlivé činnosti.

Jak minimalizovat eskalaci oprávnění kontejneru Docker?

Nejlepší způsob, jak zabránit eskalaci oprávnění kontejneru Docker, je nepoužívat privilegované kontejnery vůbec.

Pokud však spouštíte aplikaci, která vyžaduje spouštění s uživatelem root, existuje způsob, jak minimalizovat pravděpodobnost škodlivé činnosti. To se provádí přemapováním jmenného prostoru uživatele , přemapování uživatele pro tento konkrétní kontejner na méně privilegovaného uživatele na hostiteli Docker. Kontejner v podstatě vidí uživatele jako root, zatímco hostitel nikoli.

Přemapování zahrnuje přiřazení rozsahu UID, které fungují v rámci kontejneru (jmenného prostoru) jako normální UID od 0 do 65536, ale nemají žádná oprávnění na hostiteli. Dva soubory spravují konfiguraci uživatele – jeden pro rozsah ID uživatele (/etc/subuid ) a druhý pro rozsah ID skupiny (/etc/subgid ).

Ve výchozím nastavení používá docker dockremap uživatele a skupinu, aby provedli přemapování.


Ubuntu
  1. 5 důvodů, proč byste měli vyvinout linuxovou kontejnerovou strategii

  2. Porttainer:Snadno použitelné gui pro spouštění a získávání kontejnerů dokovacích stanic

  3. Spusťte Docker jako uživatel bez oprávnění root

  1. Měli byste spustit databázi v Dockeru?

  2. Úvod do Docker Containers

  3. Jak nainstalovat Docker a spustit kontejnery Docker v Ubuntu

  1. Jak sdílet data mezi kontejnery Docker

  2. Jak přepsat vstupní bod pomocí Docker Run

  3. 10 smrtících příkazů, které byste nikdy neměli spouštět na Linuxu