Блог
Postizanje istinske višekorisničke izolacije u Docker-u
Docker-ov model deljenog kernela donosi rizike za višekorisnička okruženja. Ovaj vodič pruža konkretne korake za jačanje izolacije korišćenjem korisničkih imenskih prostora, seccomp-a, AppArmor-a, alata za peskovanje i najboljih praksi orkestracije.
Sažetak
Docker kontejneri dele kernel hosta, što može biti sigurnosni problem za višekorisnička okruženja gde korisnici možda ne veruju jedni drugima. Ovaj članak objašnjava praznine u izolaciji podrazumevanih Docker postavki i pruža konkretne korake za jačanje izolacije korišćenjem Linux imenskih prostora, cgroups, korisničkih imenskih prostora, seccomp-a, AppArmor-a i hardverske virtualizacije. Naučićete kako da konfigurišete Docker demon po korisniku, koristite alate za peskovanje poput gVisor ili Firecracker za jaču izolaciju, i orkestrirate sa Kubernetes-om za višekorisnički rad. Pokrićemo i odabir pravog dobavljača infrastrukture koji nudi KVM-baziranu virtualizaciju za dodatni sloj razdvajanja. Na kraju, imaćete plan za bezbedno izvođenje višekorisničkih opterećenja sa Docker-om.
Kada hostujete više korisnika na jednom Docker hostu, podrazumevana izolacija kontejnera—izgrađena na Linux imenskim prostorima i cgroups—često nije dovoljna. Bekstvo kontejnera kod jednog korisnika moglo bi ugroziti ceo host i sve ostale kontejnere. Ovaj problem je posebno izražen u deljenom hostingu, SaaS platformama ili bilo kom scenariju gde se nepoverljivi kod izvršava uz vaš sopstveni. Dobra vest: možete slojeviti više tehnika izolacije da biste izgradili otvrdnuto višekorisničko okruženje. Ovaj vodič prolazi kroz šest praktičnih koraka, od niskog voća poput korisničkih imenskih prostora do naprednih mera poput peskovitih izvršnih okruženja i izbora infrastrukture.
Razumevanje podrazumevane Docker izolacije
Docker koristi Linux imenske prostore za izolaciju procesa, mreže, datotečnog sistema i drugih resursa. Cgroups ograničavaju CPU, memoriju i I/O. Ali oni dele jedan kernel—ranjivost u kernelu može uticati na sve kontejnere. Za istinsku višekorisničku izolaciju, posebno sa nepoverljivim korisnicima, potrebna vam je dubinska odbrana. Kao što je objašnjeno u Dizajniranje višekorisničke Docker arhitekture: Izbor pravog nivoa izolacije, nivoi izolacije se kreću od slabog (samo imenski prostori) do jakog (hardverski virtualizovani). Krenimo od najslabijeg.
Korak 1: Omogućite korisničke imenske prostore
Podrazumevano, root unutar kontejnera se mapira na root na hostu. Bekstvo kontejnera daje potpuni pristup hostu. Korisnički imenski prostori preslikavaju root kontejnera na ne-root korisnika napolju. Omogućite ga globalno sa dockerd --userns-remap=default ili po kontejneru sa --userns=host. Ovaj jednostavan korak eliminiše mnoge napade eskalacije privilegija. Testirajte svoje aplikacije: neke koje zahtevaju privilegije nivoa hosta (npr. montiranje datotečnih sistema) mogu da se pokvare. Za Drupal ili WordPress sajtove, obično je bezbedno.
Korak 2: Primenite seccomp i AppArmor profile
Seccomp ograničava sistemske pozive koje kontejner može da napravi. Docker dolazi sa podrazumevanim seccomp profilom koji blokira opasne sistemske pozive poput mount i reboot. Za višekorisnički rad, dodatno ga zategnite—blokirajte neuobičajene sistemske pozive koje alati za bekstvo koriste. Slično, AppArmor može da ograniči procese kontejnera. Kreirajte prilagođeni AppArmor profil koji odbija pisani pristup interfejsima kernela i ograničava putanje datoteka. Oba se postavljaju putem --security-opt flagova. Kombinujte ih za slojevitu odbranu.
Korak 3: Koristite Docker demone po korisniku
Pokretanje jednog Docker demona za sve korisnike je rizično—bekstvo kontejnera moglo bi da pristupi soketu demona. Izolujte demone po korisniku koristeći Docker-u-Docker (DinD) ili udaljene krajnje tačke demona. Na primer, pokrenite Docker demon unutar kontejnera sa --privileged (ali to slabi izolaciju). Bolji pristup: pokrenite odvojene demone na odvojenim VM-ovima ili koristite Docker-ovu eksperimentalnu --group funkciju sa korisničkim imenskim prostorima. Za orkestraciju, Kubernetes izolacija zasnovana na imenskim prostorima je praktičnija, kao što je objašnjeno u Odbrana od bekstva kontejnera: Praktični vodič za Docker izolaciju za višekorisnički hosting.
Korak 4: Razmotrite peskovita izvršna okruženja
Kada je sam Linux kernel nepoverljiv, koristite peskovito izvršno okruženje koje dodaje lagani VM sloj. gVisor (runsc) presreće sistemske pozive i implementira sopstveni kernel, dok Firecracker koristi mikro-VM-ove sa hardverskom virtualizacijom. Oba se integrišu sa Docker-om putem containerd izvršnih okruženja. Na primer, dodajte "runtimes": {"runsc": {}} u Docker demon konfiguraciju i pokrenite kontejnere sa --runtime=runsc. Performanse su 5–15% sporije, ali je izolacija mnogo jača. Idealno za visoko sigurna višekorisnička podešavanja.
Korak 5: Orkestrirajte sa Kubernetes-om i sigurnosnim politikama
Kubernetes pruža izvornu višekorisničku izolaciju kroz imenske prostore, Pod sigurnosne standarde i NetworkPolicies. Definišite imenske prostore po korisniku sa kvotama resursa i primenite ograničene pod sigurnosne kontekste (uklonite sve mogućnosti, samo za čitanje koreni datotečni sistem). Ulazni kontroleri poput OPA/Gatekeeper mogu blokirati pogrešne konfiguracije. Ako upravljate mnogim korisnicima, Kubernetes automatizuje primenu izolacije. Za orkestraciju na produkcijskom nivou, pogledajte Izvan Docker Compose: Orkestracija produkcijski spremnih kontejnerizovanih aplikacija.
Korak 6: Odaberite pravog dobavljača hostinga
Hipervizor vašeg dobavljača infrastrukture je važan. Docker na deljenom hostingu (OpenVZ) pruža slabu izolaciju—jedan korisnik može videti procese drugog. Preferirajte dobavljače koji koriste KVM ili VMware, koji nude razdvajanje na nivou hardvera. Dobavljači poput DigitalOcean, Kamatera ili AWS nude KVM-bazirane VPS-ove sa namenskim resursima. Za fizičke mašine, osigurajte da je BIOS-level virtualizacija omogućena za ugnježdene kontejnere. Dobavljač koji izoluje korisnike na nivou hipervizora nadopunjuje vašu kontejnersku izolaciju. Kao što je detaljno objašnjeno u Ovladavanje Docker izolacijom za siguran i efikasan veb hosting, host OS takođe treba da bude otvrdnut sa minimalnom površinom napada.
Upozorenja i kompromisi
Svaki dodatni sloj dodaje složenost i trošak performansi. Korisnički imenski prostori mogu pokvariti zapremine montirane na hostu. Seccomp profili zahtevaju podešavanje po aplikaciji. Peskovita izvršna okruženja poput gVisor ne podržavaju sve sistemske pozive—vaša aplikacija možda neće raditi. Docker demoni po korisniku povećavaju memorijsko opterećenje. Odaberite nivo izolacije koji odgovara vašem modelu pretnje: za poverljive korisnike, podrazumevani imenski prostori mogu biti dovoljni; za javni SaaS, investirajte u peskovita izvršna okruženja i Kubernetes politike. Temeljno testirajte pre produkcije.
Zaključak
Istinska višekorisnička izolacija u Docker-u je ostvariva slojevanjem više kernel funkcija, peskovitih izvršnih okruženja i kontrolnih mehanizama orkestracije. Počnite sa korisničkim imenskim prostorima i seccomp-om, zatim pređite na demone po korisniku ili peskovita izvršna okruženja. Za velike razmere, Kubernetes pruža izolaciju vođenu politikama. Uvek uparite sa hostom razdvojenim na nivou hipervizora od uglednog dobavljača. Nijedna tehnika nije neprobojna, ali njihovom kombinacijom stvarate čvrstu odbranu. Vaši korisnici će vam biti zahvalni—a i vaša sigurnosna revizija.
Sources (5)
- Docker and Container Isolation - Medium
- Enhanced Container Isolation - Docker Docs
- Container orchestration is the automated process of deploying, managing, scaling, and networking containers in production.
- Container Orchestration 101 - Docker
- Best 10 Docker Container Hosting Platforms in 2026 - Purvaco Technology

