Esmu pārliecināts, ka tas ir noticis ar jums: jūs mēģināt salikt konteineru personīgai lietošanai, vēlaties padarīt to drošāku, lietojot nepiešķirti konteineri Un pēkšņi jūs nonākat iesprostotā atļauju kļūdu labirintā. Ir nomācoši pavadīt stundas, konfigurējot mapes lietotāja mājas direktorijā, tikai lai atklātu, ka konteiners nevar tajās rakstīt vai, ja tas to dara, iegūtie faili resursdatorā ir bojāti. neiespējami pārvaldīt jo tie pieder fantoma lietotājam.
Realitātē, lai gan konteinerizācija ir paātrinājusi programmatūras piegādi, tā ir radījusi ievērojamus riskus. Saskaņā ar jaunākajiem datiem, lielākajā daļā ražošanas attēlu ir [neskaidri — iespējams, "neskaidri" vai "neskaidri"] kritiskās ievainojamībasTas padara drošību par neapspriežamu pīlāru. Runa nav tikai par hakeru uzbrukumu novēršanu, bet gan par sistēmas darbības izpratni. procesa izolēšana lai mūsu infrastruktūra nekļūtu par sietu.
Konteineru drošības ekosistēmas izpratne
Lai pārtrauktu minēt atļaujas, mums vispirms ir jāzina, ko mēs aizsargājam. Konteinera arhitektūra ir sadalīta vairākos kritiskos slāņos. Pirmkārt, mums ir konteinera attēlskas ir sākotnējais plāns; ja tas ir ievainojams, visi jūsu izvietotie gadījumi būs nedroši. Tāpēc ir svarīgi to izmantot uzticamas bāzes attēli un regulāri atjauniniet tos.
Tad izpildlaikskas darbojas kā starpnieks starp resursdatora operētājsistēmu un lietojumprogrammu. Ja izpildlaika vide ir novecojusi, pastāv risks, ka konteinera aizbēgšana ievērojami palielinās. Tam jāpieskaita orķestrēšana, piemēram, Kubernetes, kur uz lomām balstīta piekļuves kontrole (RBAC) Tā ir vienīgā reālā barjera pret nesankcionētu piekļuvi pārvaldības API.
Mēs nevaram aizmirst, resursdatora operētājsistēmaJa uzbrucējam izdodas apdraudēt resursdatora kodolu, viņam ir atslēgas uz visu domēnu. Ieteikums šeit ir skaidrs: izmantojiet minimāla operētājsistēma lai samazinātu uzbrukuma virsmu. Visbeidzot, tīkls ir visizplatītākais ieejas punkts; gandrīz 30% pārkāpumu notiek savienojamības kļūmju dēļ, tāpēc tīkla segmentācija un TLS/SSL šifrēšana Tie ir obligāti.
Atļauju un root lietotāja galvassāpes
Tipiska problēma hobijiem ir darbplūsma ar sējumiem. Jūs izveidojat mapi, to pievienojat, un tad, bums, rodas kļūda. atļauja liegtaTas notiek tāpēc, ka pēc noklusējuma daudzi konteineri tiek palaisti kā root lietotājs. Mēģinot piespiest UID un GID pie 0 Lai tie atbilstu jūsu resursdatora lietotājam, jūs veidojat bīstamu tiltu. Ja konteiners neļauj konfigurēt šos ID, jūs galu galā tērēsiet pēcpusdienu, mēģinot noskaidrot, kuru iekšējo lietotāju lietojumprogramma izmanto, lai veiktu darbību. chown rokasgrāmata.
Efektīvs risinājums ir piemērot mazāko privilēģiju principsNevajadzētu neko palaist kā root, ja vien tas nav absolūti nepieciešams. Lai atrisinātu problēmu ar konteinerā izveidotiem failiem, kurus nevar izdzēst resursdatorā, ir svarīgi konfigurēt Dockerfile ar šādu instrukciju: LIETOTĀJA, definējot lietotāju bez privilēģijām pirms lietojumprogrammas palaišanas.
Ja lietojat Podmanu, tad jēdziens bez saknēm konteineri Tā ir iebūvēta un ļoti noderīga, taču tai ir nepieciešams saprast, kā resursdatora lietotāji tiek piesaistīti konteinera lietotājiem. Lai novērstu atļauju nekontrolējamu izplatīšanos, ideālā gadījumā lietojumprogrammai jābūt izstrādātai tā, lai tā rakstītu noteiktos maršrutos, un ka apjoma kartēšana Tas tiek darīts, ņemot vērā lietotāja, kurš palaiž procesu, reālo UID.
Bruņotu attēlu veidošanas stratēģijas
Ja vēlaties pārtraukt ciešanas, jums jāmaina veids, kā jūs konstruējat savus attēlus. Viena nežēlīgi efektīva metode ir... daudzpakāpju būvēšanaBūtībā jūs izmantojat smagsvara attēlu ar visiem veidošanas rīkiem, lai ģenerētu bināro failu, un pēc tam kopējat tikai šo failu uz galīgo attēlu. ārkārtīgi viegls.
Izmantojot attēlu, varat sasniegt vēl vairāk. saskrāpētTas izveido konteineru, kurā nav absolūti nekā: nav čaulas, nav pakotņu pārvaldnieka, tikai jūsu lietojumprogramma. Tas padara uzbrucējam praktiski neiespējamu izpildīt ļaunprātīgas komandas, ja viņam izdodas iekļūt, jo Nav komandu tulka pieejamas.
Vēl viens drošības pasākums ir jebkura binārā faila ar atļaujām attēla tīrīšana setuid vai setgidŠīs atļaujas ļauj failu izpildīt ar faila īpašnieka, nevis lietotāja, kurš to palaiž, privilēģijām, kas ir automaģistrāle... privilēģiju eskalācijaVienkārša komanda, lai meklētu un noņemtu šos bitus attēla veidošanas laikā, var ietaupīt daudz nepatikšanas.
Privileģētā režīma briesmas un Linux iespējas
Dažreiz, izmisuma dēļ, nespējot atrisināt atļauju problēmu, mēs nonākam kārdinājumā izmantot karodziņu –privileģētsAizmirstiet par to. Privilēģētais režīms pārtrauc konteinera izolāciju un sniedz jums pilnīgu piekļuvi saimnieka ierīcēm. Tas ir līdzīgi kā dot savas mājas atslēgas svešiniekam tikai tāpēc, ka viņš nezināja, kā atvērt dārza vārtus.
Tā vietā jums vajadzētu spēlēties ar Linux iespējasDocker piešķir noklusējuma atļauju kopu (piemēram, CAP_CHOWN vai CAP_NET_RAW). Ja jūsu lietojumprogrammai nav nepieciešams manipulēt ar tīklu zemā līmenī, visgudrākā pieeja ir likvidēt nevajadzīgas iespējas un pievienojiet tikai tos, kas ir absolūti nepieciešami --cap-add.
Tiem, kas pārvalda nopietnākas vides, ir pieejamas autorizācijas spraudņi piemēram, opa-docker-authz. Tie ļauj pārtvert Docker dēmona API izsaukumus un bloķēt jebkuru mēģinājumu palaist konteineru privileģētā režīmā, nodrošinot, ka neviens, pat kļūdas dēļ, neatstāj durvis vaļā uz resursdatoru.
Vides optimizācija un uzturēšana
Nevajag ieslīgt 5 MB attēla lielumā, ja, lietojot Alpine Linux, rodas saderības problēmas ar bibliotēkām. Dažreiz vēlams izmantot nedaudz lielāku Debian attēlu. stabilizēts un zināms komanda. Svarīgi ir ieviest ievainojamību skenēšana Automatizēta CI/CD plūsma CVE noteikšanai pirms attēla nonākšanas ražošanas vidē.
Attiecībā uz krātuvi tas neļauj lietojumprogrammai rakstīt saknes failu sistēmā. Konfigurējiet tikai lasāma failu sistēma (rootfs) un definē konkrētus apjomus tikai tiem datiem, kuriem ir jāpaliek spēkā. Tas ir ne tikai drošāk, bet arī piespiež tīrāku arhitektūru un bez īpašumaatvieglojot horizontālu mērogošanu.
Plānotiem procesiem neievietojiet cron uzdevumu vietnes konteinerā. Zelta likums ir šāds: viens process katrā konteinerāTīrākā pieeja ir izmantot lietotnes attēlu, lai palaistu īslaicīgu konteineru, kas izpilda uzdevumu un pēc tam iznīcina sevi, vai arī pārvaldīt cron no resursdatora, izsaucot konteinera dzinēju, izmantojot komandas.
Konteineru drošība ir nepārtraukts process, kas ietver root piekļuves likvidēšanu, kodola iespēju ierobežošanu un nevajadzīgu rīku noņemšanu no konteineru attēliem. Apvienojot neprivileģētus lietotājus ar izpildlaika aizsardzību un pastāvīgu uzraudzību, tiek panākta vide, kurā funkcionalitāte neapdraud resursdatora sistēmas integritāti.
Kaislīgs rakstnieks par baitu pasauli un tehnoloģiju kopumā. Man patīk dalīties savās zināšanās rakstot, un tieši to es darīšu šajā emuārā, parādot visu interesantāko informāciju par sīkrīkiem, programmatūru, aparatūru, tehnoloģiju tendencēm un daudz ko citu. Mans mērķis ir palīdzēt jums vienkāršā un izklaidējošā veidā orientēties digitālajā pasaulē.

