Kontejneri bez root pristupa: Potpuni vodič za pokretanje i rješavanje problema s dozvolama u ograničenim okruženjima

Posljednje ažuriranje: 10/07/2026
Autor: Isaac

Sigurnost kontejnera

Siguran sam da vam se ovo desilo: pokušavate sastaviti kontejner za ličnu upotrebu, želite ga učiniti sigurnijim korištenjem neprivilegovani kontejneri I odjednom se nađete zarobljeni u lavirintu grešaka u dozvolama. Frustrirajuće je provoditi sate konfigurišući foldere u korisnikovom početnom direktoriju samo da biste otkrili da kontejner ne može pisati u njih ili da su, kada to učini, rezultirajuće datoteke na hostu oštećene. nemoguće upravljati jer pripadaju fantomskom korisniku.

Realnost je da, iako je kontejnerizacija ubrzala isporuku softvera, otvorila je vrata značajnim rizicima. Prema nedavnim podacima, velika većina produkcijskih slika nosi [nejasno - moguće "nejasno" ili "nejasno"] kritične ranjivostiZbog toga je sigurnost neizostavan stub. Ne radi se samo o sprečavanju hakerskih napada, već o razumijevanju kako sistem funkcioniše. izolacija procesa kako naša infrastruktura ne bi postala sito.

Kontejneri bez root pristupa: kako pokrenuti i riješiti probleme s dozvolama u ograničenim okruženjima
Povezani članak:
Kontejneri bez root pristupa: kompletan vodič za pokretanje i rješavanje problema s dozvolama u ograničenim okruženjima

Razumijevanje ekosistema sigurnosti kontejnera

Da bismo prestali nagađati s dozvolama, prvo moramo znati šta štitimo. Arhitektura kontejnera je podijeljena na nekoliko kritičnih slojeva. Prvo, imamo slika kontejnerašto je originalni nacrt; ako je ovo ranjivo, sve instance koje implementirate bit će nesigurne. Zato je ključno koristiti pouzdane osnovne slike i redovno ih ažurirajte.

Zatim vrijeme izvođenjakoji djeluje kao arbitar između glavnog operativnog sistema i aplikacije. Ako je okruženje za izvršavanje zastarjelo, rizik od bijeg iz kontejnera dramatično se povećava. Ovome moramo dodati orkestraciju, kao što je Kubernetes, gdje kontrola pristupa zasnovana na ulogama (RBAC) To je jedina prava prepreka protiv neovlaštenog pristupa API-ju za upravljanje.

Ne možemo zaboraviti host operativni sistemAko napadač uspije kompromitovati jezgro hosta, on posjeduje ključeve cijele domene. Preporuka je ovdje jasna: koristite minimalni operativni sistem kako bi se smanjila površina napada. Konačno, mreža je najčešća ulazna tačka; gotovo 30% povreda podataka događa se zbog kvarova u povezivosti, tako da segmentacija mreže i TLS/SSL enkripcija Obavezna su.

Kontejneri sa Podmanom
Povezani članak:
Kontejneri sa Podmanom: kompletan vodič za podove i volumene

Glavobolja oko dozvola i root korisnika

Tipičan problem za hobiste je radni proces sa volumenima. Kreirate folder, montirate ga, i onda, bum!, greška. dozvola odbijenaTo se dešava jer se, po defaultu, mnogi kontejneri pokreću kao root. Kada pokušate prisiliti UID i GID na 0 Da biste ih uskladili s vašim korisnikom hosta, stvarate opasan most. Ako vam kontejner ne dozvoljava konfiguriranje ovih ID-ova, na kraju ćete potrošiti popodne pokušavajući shvatiti kojeg internog korisnika aplikacija koristi za izvršavanje chown priručnik.

  Šta je Velxio simulator i kako on revolucionira emulaciju Arduina, ESP32 i Raspberry Pi-ja?

Efikasno rješenje je primjena princip najmanje privilegijaNe biste trebali pokretati ništa kao root osim ako nije apsolutno neophodno. Da biste riješili problem datoteka kreiranih od strane kontejnera koje ne možete izbrisati na hostu, bitno je konfigurirati Dockerfile pomoću sljedećih instrukcija: KORISNIK, definiranje korisnika bez privilegija prije pokretanja aplikacije.

Ako koristite Podman, koncept kontejneri bez korijena Izvorno je i vrlo korisno, ali zahtijeva da razumijete kako su korisnici hosta mapirani na korisnike kontejnera. Da biste spriječili da dozvole izmaknu kontroli, idealno bi bilo da aplikacija bude dizajnirana da piše na određene rute i da mapiranje volumena To se radi uzimajući u obzir stvarni UID korisnika koji pokreće proces.

Strategije za izgradnju oklopljenih slika

Ako želite prestati patiti, morate promijeniti način na koji konstruirate svoje slike. Jedna brutalno učinkovita tehnika je... višefazne gradnjeU osnovi, koristite tešku sliku sa svim alatima za izgradnju za generiranje binarne datoteke, a zatim kopirate samo tu datoteku u konačnu sliku. izuzetno lagana.

Kontejneri bez root pristupa: kako pokrenuti i riješiti probleme s dozvolama u ograničenim okruženjima
Povezani članak:
Ovladavanje kontejnerima bez roota: kompletan vodič za dozvole i sigurnost

Možete ići čak i dalje koristeći sliku ogrebotinaOvo stvara kontejner koji nema apsolutno ništa: nema ljuske, nema upravitelja paketa, samo vašu aplikaciju. To napadaču praktično onemogućava izvršavanje zlonamjernih naredbi ako uspije ući, jer Nema interpretatora komandi na raspolaganju.

Još jedna sigurnosna mjera je čišćenje slike bilo koje binarne datoteke s dozvolama. setuid ili setgidOve dozvole omogućavaju izvršavanje datoteke s privilegijama vlasnika datoteke, a ne korisnika koji ju je pokrenuo, što je autoput za... eskalacija privilegijaJednostavna naredba za traženje i uklanjanje ovih dijelova tokom kreiranja slike može vam uštedjeti mnogo problema.

  Šta je LST datoteka? Čemu služi i kako ga otvoriti

Opasnosti privilegovanog načina rada i mogućnosti Linuxa

Ponekad, iz očaja zbog nemogućnosti rješavanja problema s dozvolama, upadnemo u iskušenje korištenja zastavice –privilegovaniZaboravite na to. Privilegovani režim prekida izolaciju kontejnera i daje vam potpuni pristup uređajima hosta. To je kao da date ključeve svoje kuće strancu samo zato što nije znao kako da otvori vrtnu kapiju.

Umjesto toga, trebali biste se igrati sa Mogućnosti LinuxaDocker dodjeljuje skup zadanih dozvola (kao što su CAP_CHOWN ili CAP_NET_RAW). Ako vaša aplikacija ne treba manipulirati mrežom na niskom nivou, najpametniji pristup je eliminisati nepotrebne mogućnosti i dodajte samo one koje su strogo potrebne od strane --cap-add.

Za one koji upravljaju ozbiljnijim okruženjima, postoje dodaci za autorizaciju kao što je opa-docker-authz. Ovo omogućava presretanje poziva API-ju Docker daemona i blokiranje svakog pokušaja pokretanja kontejnera u privilegovanom režimu, osiguravajući da niko, čak ni greškom, ne ostavi vrata otvorena hostu.

Optimizacija i održavanje okruženja

Nemojte se ograničavati na veličinu slike od 5 MB kada koristite Alpine Linux ako to uzrokuje probleme s kompatibilnošću s bibliotekama. Ponekad je poželjnija malo veća Debian slika. stabiliziran i poznat od strane tima. Ključno je implementirati skeniranje ranjivosti Automatizirani CI/CD cjevovod za otkrivanje CVE-a prije nego što slika stigne do produkcije.

Što se tiče pohrane, sprječava aplikaciju da piše u korijenski datotečni sistem. Konfigurirajte datotečni sistem samo za čitanje (rootfs) i definira specifične volumene samo za podatke koji trebaju postojati. Ovo nije samo sigurnije, već i prisiljava na čistiju arhitekturu i bez imovineolakšavanje horizontalnog skaliranja.

Za planirane procese, nemojte stavljati cron zadatak unutar kontejnera web stranice. Zlatno pravilo je jedan proces po kontejneruNajčišći pristup je korištenje slike vaše aplikacije za pokretanje efemernog kontejnera koji izvršava zadatak, a zatim se uništava, ili upravljanje cronom s hosta pozivanjem kontejnerskog mehanizma pomoću naredbi.

  Šta je TXZ datoteka? Čemu služi i kako ga otvoriti

Sigurnost kontejnera je kontinuirani proces koji uključuje eliminaciju root pristupa, ograničavanje mogućnosti kernela i uklanjanje nepotrebnih alata iz slika kontejnera. Kombinacijom neprivilegovanih korisnika sa ojačavanjem vremena izvođenja i stalnim praćenjem, postiže se okruženje u kojem funkcionalnost ne ugrožava integritet host sistema.

Kreiranje laganih kontejnera pomoću Podmana na Linuxu
Povezani članak:
Lagani kontejneri s Podmanom na Linuxu: Praktični vodič