Docker --privileged
Šta utiče
Kada pokrenete kontejner kao privilegovan, ovo su zaštite koje onemogućavate:
Montiranje /dev
U privilegovanom kontejneru, svi uređaji mogu biti pristupljeni u /dev/
. Stoga možete pobeći tako što ćete montirati disk domaćina.
Datoteke sistema jezgra samo za čitanje
Datoteke sistema jezgra pružaju mehanizam za proces da modifikuje ponašanje jezgra. Međutim, kada su u pitanju procesi kontejnera, želimo da sprečimo njihovo menjanje jezgra. Stoga, montiramo datoteke sistema jezgra kao samo za čitanje unutar kontejnera, osiguravajući da procesi kontejnera ne mogu modifikovati jezgro.
Maskiranje nad datotečnim sistemima jezgra
/proc datotečni sistem je selektivno zapisiv, ali iz bezbednosnih razloga, određeni delovi su zaštićeni od pisanja i čitanja preklapanjem sa tmpfs, osiguravajući da procesi kontejnera ne mogu pristupiti osetljivim oblastima.
tmpfs je datotečni sistem koji čuva sve datoteke u virtuelnoj memoriji. tmpfs ne kreira nikakve datoteke na vašem hard disku. Dakle, ako odmontirate tmpfs datotečni sistem, sve datoteke koje se u njemu nalaze su izgubljene zauvek.
Linux sposobnosti
Motori kontejnera pokreću kontejnere sa ograničenim brojem sposobnosti kako bi kontrolisali šta se dešava unutar kontejnera po defaultu. Privilegovani imaju sve sposobnosti dostupne. Da biste saznali više o sposobnostima, pročitajte:
Linux CapabilitiesMožete manipulisati sposobnostima dostupnim kontejneru bez pokretanja u --privileged
režimu koristeći --cap-add
i --cap-drop
zastavice.
Seccomp
Seccomp je koristan za ograničavanje syscalls koje kontejner može pozvati. Podrazumevani seccomp profil je omogućen podrazumevano prilikom pokretanja docker kontejnera, ali u privilegovanom režimu je on onemogućen. Saznajte više o Seccomp-u ovde:
SeccompTakođe, imajte na umu da kada se Docker (ili drugi CRI) koriste u Kubernetes klasteru, seccomp filter je onemogućen po defaultu
AppArmor
AppArmor je poboljšanje jezgra koje ograničava kontejnere na ograničen skup resursa sa profilima po programu. Kada pokrenete sa --privileged
flagom, ova zaštita je onemogućena.
SELinux
Pokretanje kontejnera sa --privileged
zastavicom onemogućava SELinux oznake, uzrokujući da nasledi oznaku kontejnerskog motora, obično unconfined
, što omogućava pun pristup sličan kontejnerskom motoru. U rootless režimu, koristi container_runtime_t
, dok se u root režimu primenjuje spc_t
.
Šta ne utiče
Namespaces
Namespaces NISU pogođeni --privileged
oznakom. Iako nemaju omogućena sigurnosna ograničenja, ne vide sve procese na sistemu ili host mreži, na primer. Korisnici mogu onemogućiti pojedinačne namespaces koristeći --pid=host
, --net=host
, --ipc=host
, --uts=host
oznake kontejnerskog motora.
User namespace
Podrazumevano, kontejnerski alati ne koriste korisničke imenske prostore, osim za kontejnere bez root privilegija, koji ih zahtevaju za montiranje datotečnih sistema i korišćenje više UID-ova. Korisnički imenski prostori, koji su ključni za kontejnere bez root privilegija, ne mogu se onemogućiti i značajno poboljšavaju bezbednost ograničavanjem privilegija.
References
Last updated