Mga Container na Walang Root: Isang Kumpletong Gabay sa Pagpapatakbo at Pag-troubleshoot ng mga Pahintulot sa mga Restricted Environment

Huling pag-update: 10/07/2026
May-akda: Isaac

Seguridad sa lalagyan

Sigurado akong nangyari na ito sa iyo: sinusubukan mong bumuo ng isang lalagyan para sa personal na paggamit, gusto mo itong gawing mas ligtas gamit mga lalagyan na walang pribilehiyo At bigla na lang, makikita mo ang iyong sarili na nakulong sa isang labirinto ng mga error sa pahintulot. Nakakadismaya ang gumugol ng maraming oras sa pag-configure ng mga folder sa home directory ng user para lang matuklasan na hindi ito kayang sulatan ng container, o kapag nangyari ito, ang mga nagresultang file sa host ay sira na. imposibleng pamahalaan dahil pagmamay-ari sila ng isang phantom user.

Ang katotohanan ay, habang pinabilis ng containerization ang paghahatid ng software, binuksan nito ang pinto sa malalaking panganib. Ayon sa kamakailang datos, ang karamihan sa mga imahe ng produksyon ay naglalaman ng [hindi malinaw - posibleng "hindi malinaw" o "hindi malinaw"] kritikal na mga kahinaanDahil dito, ang seguridad ay isang mahalagang haligi. Hindi lamang ito tungkol sa pagpigil sa mga hacker sa pag-atake sa atin, kundi pati na rin sa pag-unawa kung paano gumagana ang sistema. paghihiwalay ng proseso para hindi maging salaan ang ating imprastraktura.

Mga lalagyan na walang root: kung paano patakbuhin at i-troubleshoot ang mga pahintulot sa mga pinaghihigpitang kapaligiran
Kaugnay na artikulo:
Mga lalagyan na walang root: isang kumpletong gabay sa pagpapatakbo at pag-troubleshoot ng mga pahintulot sa mga pinaghihigpitang kapaligiran

Pag-unawa sa ecosystem ng seguridad ng lalagyan

Para matigil ang panghuhula gamit ang mga pahintulot, kailangan muna nating malaman kung ano ang ating pinoprotektahan. Ang arkitektura ng isang container ay nahahati sa ilang kritikal na layer. Una, mayroon tayong larawan ng lalagyanna siyang orihinal na blueprint; kung ito ay mahina, lahat ng instance na iyong ide-deploy ay magiging hindi ligtas. Kaya naman mahalagang gamitin pinagkakatiwalaang base na mga imahe at panatilihing napapanahon ang mga ito.

Pagkatapos ang oras ng pagpapatakbona nagsisilbing tagapamagitan sa pagitan ng host operating system at ng application. Kung ang runtime ay luma na, ang panganib ng isang pagtakas ng lalagyan tumataas nang husto. Kailangan nating idagdag dito ang orkestrasyon, tulad ng Kubernetes, kung saan ang role-based na access control (RBAC) Ito lamang ang tunay na hadlang laban sa hindi awtorisadong pag-access sa management API.

Hindi natin makakalimutan ang sistema ng operating ng hostKung ang isang attacker ay nagawang ikompromiso ang host kernel, hawak nila ang mga susi sa buong domain. Malinaw ang rekomendasyon dito: gumamit ng minimal na operating system upang mabawasan ang saklaw ng pag-atake. Panghuli, ang network ang pinakakaraniwang entry point; halos 30% ng mga paglabag ay nangyayari dahil sa mga pagkabigo sa koneksyon, kaya ang segmentasyon ng network at pag-encrypt ng TLS/SSL Ang mga ito ay sapilitan.

Mga lalagyan na may Podman
Kaugnay na artikulo:
Mga lalagyan na may Podman: isang kumpletong gabay sa mga pod at volume

Ang sakit ng ulo ng mga pahintulot at ang root user

Ang karaniwang problema para sa mga mahilig sa libangan ay ang daloy ng trabaho gamit ang mga volume. Gagawa ka ng folder, i-mount ito, at pagkatapos, boom!, isang error ang lilitaw. tinanggihan ang pahintulotNangyayari ito dahil, bilang default, maraming container ang nagsisimula bilang root. Kapag sinubukan mong pilitin ang UID at GID sa 0 Para maitugma sila sa iyong host user, lumilikha ka ng isang mapanganib na bridge. Kung hindi ka pinapayagan ng container na i-configure ang mga ID na ito, masasayang mo ang isang hapon sa pag-alam kung aling internal user ang ginagamit ng application para magsagawa ng... chown manu-manong

  Ano ang Velxio simulator at paano nito binabago ang emulasyon ng Arduino, ESP32 at Raspberry Pi?

Ang epektibong solusyon ay ang paglalapat ng prinsipyo ng pinakamaliit na pribilehiyoHindi mo dapat patakbuhin ang kahit ano bilang root maliban kung talagang kinakailangan. Para malutas ang problema ng mga file na ginawa ng container na hindi mo mabura sa host, mahalagang i-configure ang Dockerfile gamit ang sumusunod na tagubilin: USER, pagtukoy sa isang user na walang mga pribilehiyo bago magsimula ang application.

Kung gagamitin mo ang Podman, ang konsepto ng mga lalagyang walang ugat Ito ay native at lubos na nakakatulong, ngunit kailangan mong maunawaan kung paano inima-map ang mga host user sa mga container user. Upang maiwasan ang pagkawala ng kontrol sa mga pahintulot, mainam na ang application ay dapat idinisenyo upang magsulat sa mga partikular na ruta at na ang pagmamapa ng dami Ginagawa ito kung isasaalang-alang ang totoong UID ng gumagamit na naglulunsad ng proseso.

Mga estratehiya para sa pagbuo ng mga imaheng nakabaluti

Kung gusto mong ihinto ang pagdurusa, kailangan mong baguhin ang paraan ng pagbuo mo ng iyong mga imahe. Ang isang brutal at epektibong pamamaraan ay... mga konstruksyon na may maraming yugtoTalaga, gagamit ka ng isang mabibigat na imahe kasama ang lahat ng mga tool sa pagbuo upang makabuo ng binary, at pagkatapos ay kokopyahin mo lamang ang file na iyon sa isang pangwakas na imahe. sobrang ilaw.

Mga lalagyan na walang root: kung paano patakbuhin at i-troubleshoot ang mga pahintulot sa mga pinaghihigpitang kapaligiran
Kaugnay na artikulo:
Pag-master ng mga container nang walang root: isang kumpletong gabay sa mga pahintulot at seguridad

Maaari ka pang magpatuloy gamit ang larawan kumamotLumilikha ito ng isang container na walang anumang laman: walang shell, walang package manager, kundi ang iyong application lamang. Ginagawa nitong halos imposible para sa isang attacker na magpatupad ng mga malisyosong utos kung makapasok sila, dahil Walang interpreter ng utos magagamit.

Ang isa pang hakbang sa seguridad ay ang paglilinis ng imahe ng anumang binary na may mga pahintulot setuid o setgidAng mga pahintulot na ito ay nagpapahintulot sa isang file na maisagawa gamit ang mga pribilehiyo ng may-ari ng file at hindi ng user na naglulunsad nito, na isang daanan para sa... pagtaas ng pribilehiyoAng isang simpleng utos na hanapin at tanggalin ang mga pirasong ito habang bumubuo ng imahe ay makakapagtipid sa iyo ng maraming abala.

  Ano ang isang LST file? Para saan ito at kung paano buksan ang isa

Ang mga panganib ng privileged mode at ang mga kakayahan ng Linux

Minsan, dahil sa desperasyon na hindi malutas ang isang problema sa mga pahintulot, nahuhulog tayo sa tukso na gamitin ang flag –may pribilehiyoKalimutan mo na 'yan. Binabasag ng privileged mode ang isolation ng container at binibigyan ka nito ng ganap na access sa mga device ng host. Parang pagbibigay mo lang ng susi ng bahay mo sa isang estranghero dahil lang hindi nila alam kung paano buksan ang garden gate.

Sa halip, dapat kang makipaglaro sa Mga kakayahan ng LinuxNagtatalaga ang Docker ng isang hanay ng mga default na pahintulot (tulad ng CAP_CHOWN o CAP_NET_RAW). Kung hindi kailangang manipulahin ng iyong aplikasyon ang network sa mababang antas, ang pinakamatalinong paraan ay alisin ang mga hindi kinakailangang kakayahan at idagdag lamang ang mga mahigpit na kinakailangan ng --cap-add.

Para sa mga namamahala sa mas seryosong mga kapaligiran, mayroong mga plugin ng pahintulot tulad ng opa-docker-authz. Pinapayagan nito ang pag-intercept sa mga tawag sa API ng Docker daemon at pagharang sa anumang pagtatangka na ilunsad ang isang container sa privileged mode, tinitiyak na walang sinuman, kahit na hindi sinasadya, ang mag-iiwan ng pinto na bukas sa host.

Pag-optimize at pagpapanatili ng kapaligiran

Huwag masyadong mag-alala sa laki ng 5MB na imahe kapag gumagamit ng Alpine Linux kung nagdudulot ito ng mga isyu sa compatibility sa mga library. Minsan, mas mainam kung medyo mas malaki ang Debian image. matatag at kilala ng pangkat. Ang mahalaga ay ang pagpapatupad ng isang pag-scan ng kahinaan Awtomatikong CI/CD pipeline upang matukoy ang mga CVE bago pa man umabot sa produksyon ang imahe.

Tungkol sa imbakan, pinipigilan nito ang aplikasyon sa pagsusulat sa root file system. I-configure ang sistema ng file na read-only (rootfs) at tumutukoy lamang ng mga partikular na volume para sa data na kailangang manatili. Hindi lamang ito mas ligtas, kundi pinipilit din nito ang isang mas malinis na arkitektura at walang ari-arianpagpapadali ng pahalang na pag-scale.

Para sa mga naka-iskedyul na proseso, huwag maglagay ng cron job sa loob ng lalagyan ng website. Ang ginintuang tuntunin ay isang proseso bawat lalagyanAng pinakamalinis na paraan ay ang paggamit ng imahe ng iyong app upang maglunsad ng isang panandaliang container na nagsasagawa ng gawain at pagkatapos ay sinisira ang sarili nito, o upang pamahalaan ang cron mula sa host sa pamamagitan ng pagtawag sa container engine gamit ang mga command.

  Ano ang isang TXZ File? Para saan ito at kung paano buksan ang isa

Ang seguridad ng container ay isang patuloy na proseso na kinabibilangan ng pag-aalis ng root access, paghihigpit sa mga kakayahan ng kernel, at pag-aalis ng mga hindi kinakailangang tool mula sa mga imahe ng container. Sa pamamagitan ng pagsasama-sama ng mga walang pribilehiyong user sa runtime hardening at patuloy na pagsubaybay, nakakamit ang isang kapaligiran kung saan ang functionality ay hindi nakakakompromiso sa integridad ng host system.

Paggawa ng mga Magaan na Container gamit ang Podman sa Linux
Kaugnay na artikulo:
Mga Magaan na Container na may Podman sa Linux: Isang Praktikal na Gabay