Olen kindel, et see on teiega juhtunud: proovite isiklikuks kasutamiseks konteinerit kokku panna ja soovite selle kasutamise ajal ohutumaks muuta. privileegideta konteinerid Ja äkki leiad end lõksus lubade vigade labürindis. On masendav veeta tunde kasutaja kodukataloogi kaustade konfigureerimisega, et siis avastada, et konteiner ei saa neile kaustadele kirjutada või et kui saab, siis on hostil olevad tulemuseks olevad failid rikutud. võimatu hallata sest need kuuluvad fantoomkasutajale.
Tegelikkus on see, et kuigi konteinerdamine on tarkvara tarnimist kiirendanud, on see avanud ukse märkimisväärsetele riskidele. Hiljutiste andmete kohaselt on valdav enamus tootmiskujutistest [ebaselge - võimalik, et "ebaselge" või "ebaselge"] kriitilised haavatavusedSee teeb turvalisusest vältimatu samba. Asi pole ainult häkkerite rünnakute takistamises, vaid ka süsteemi toimimise mõistmises. protsessi isoleerimine et meie infrastruktuur ei muutuks sõelaks.
Konteinerite turvalisuse ökosüsteemi mõistmine
Et lõpetada õiguste osas oletamisega tegelemine, peame kõigepealt teadma, mida me kaitseme. Konteineri arhitektuur on jagatud mitmeks kriitiliseks kihiks. Esiteks on meil konteineri piltmis on algne plaan; kui see on haavatav, on kõik teie juurutatud eksemplarid ebaturvalised. Seetõttu on oluline seda kasutada usaldusväärse baasi pildid ja hoidke neid ajakohasena.
Siis käitusaegmis toimib vahekohtunikuna hostoperatsioonisüsteemi ja rakenduse vahel. Kui käituskeskkond on aegunud, on oht, et konteineri põgenemine suureneb dramaatiliselt. Sellele tuleb lisada orkestreerimine, näiteks Kubernetes, kus rollipõhine juurdepääsu kontroll (RBAC) See on ainus tõeline barjäär haldus-API-le volitamata juurdepääsu vastu.
Me ei saa unustada host-operatsioonisüsteemKui ründajal õnnestub hosti kerneli ohtu seada, on tal võtmed kogu domeenile. Soovitus on selge: kasutage minimaalne operatsioonisüsteem et vähendada rünnakupinda. Lõpuks on võrk kõige levinum sisenemispunkt; peaaegu 30% rikkumistest toimub ühenduvusprobleemide tõttu, seega võrgu segmenteerimine ja TLS/SSL-krüptimine Need on kohustuslikud.
Õiguste ja juurkasutaja peavalu
Harrastajate tüüpiline probleem on köidetega töötamine. Lood kausta, paigaldad selle ja siis – pauk! – ilmneb viga. luba keelatudSee juhtub seetõttu, et paljud konteinerid käivituvad vaikimisi root-kasutajana. Kui proovite sundida UID ja GID väärtusel 0 Nende sobitamiseks teie hostikasutajaga loote ohtliku silla. Kui konteiner ei luba teil neid ID-sid konfigureerida, raiskate terve pärastlõuna, püüdes välja selgitada, millist sisemist kasutajat rakendus toimingu tegemiseks kasutab. chown manuaal.
Tõhus lahendus on rakendada vähimate privileegide põhimõteSa ei tohiks midagi root'ina käivitada, kui see pole hädavajalik. Konteineris loodud failide probleemi lahendamiseks, mida sa ei saa hostis kustutada, on oluline seadistada Dockerfile järgmise käsuga: USER, määratledes enne rakenduse käivitamist õigusteta kasutaja.
Kui kasutate Podmani, siis mõiste juurteta konteinerid See on natiivne ja väga kasulik, kuid see nõuab teilt arusaamist, kuidas hosti kasutajad on konteineri kasutajatega seotud. Et õigused kontrolli alt väljuksid, peaks rakendus ideaalis olema loodud kirjutama kindlatele marsruutidele ja et mahu kaardistamine Seda tehakse protsessi käivitava kasutaja tegelikku UID-d arvestades.
Soomuspiltide loomise strateegiad
Kui sa tahad kannatusi lõpetada, pead muutma oma kujutluspiltide loomise viisi. Üks brutaalselt tõhus tehnika on... mitmeastmelised ehitusedPõhimõtteliselt kasutate binaarfaili genereerimiseks raskekaalulist image'i koos kõigi ehitustööriistadega ja seejärel kopeerite ainult selle faili lõplikule image'ile. äärmiselt kerge.
Pildi abil saad veelgi kaugemale minna kriimustadaSee loob konteineri, millel pole absoluutselt mitte midagi: ei shelli, ei paketihaldurit, ainult teie rakendus. See muudab ründaja jaoks pahatahtlike käskude täitmise praktiliselt võimatuks, kui neil õnnestub sisse pääseda, kuna Käskude tõlgendamist pole saadaval.
Teine turvameede on kõigi õigustega binaarfailide kujutise puhastamine setuid või setgidNeed õigused võimaldavad faili käivitada faili omaniku õigustega, mitte selle käivitanud kasutaja õigustega, mis on takistuseks... privileegide eskaleerumineLihtne käsk nende bittide otsimiseks ja eemaldamiseks pildi loomise ajal võib teile palju vaeva säästa.
Privilegeeritud režiimi ohud ja Linuxi võimalused
Mõnikord langeme meeleheitel kiusatusse kasutada lippu, kuna me ei suuda õiguste probleemi lahendada. –privilegeeritudUnusta see. Privilegeeritud režiim murrab konteineri isolatsiooni ja annab sulle täieliku juurdepääsu hosti seadmetele. See on nagu annaksid oma maja võtmed võõrale ainult sellepärast, et ta ei teadnud, kuidas aiaväravat avada.
Selle asemel peaksite mängima sellega, Linuxi võimalusedDocker määrab vaikimisi õiguste komplekti (näiteks CAP_CHOWN või CAP_NET_RAW). Kui teie rakendus ei pea võrku madalal tasemel manipuleerima, on kõige targem lähenemisviis järgmine: kõrvaldada ebavajalikud võimed ja lisage ainult need, mida rangelt nõutakse --cap-add.
Tõsisemate keskkondade haldamisel on olemas autoriseerimispluginad näiteks opa-docker-authz. Need võimaldavad pealt kuulata Dockeri deemoni API-le suunatud kõnesid ja blokeerida kõik katsed käivitada konteiner privilegeeritud režiimis, tagades, et keegi, isegi kogemata, ei jätaks ust hosti poole lahti.
Keskkonna optimeerimine ja hooldus
Alpine Linuxi kasutamisel ära takerdu 5 MB pildi suurusesse, kui see tekitab teekidega ühilduvusprobleeme. Mõnikord on eelistatav veidi suurem Debiani pilt. stabiliseeritud ja teadaolev meeskonna poolt. Oluline on rakendada haavatavuste skaneerimine Automatiseeritud CI/CD torujuhe CVE-de tuvastamiseks enne pildi tootmiskeskkonda jõudmist.
Salvestusruumi osas takistab see rakendusel juurfailisüsteemi kirjutamist. Konfigureerige kirjutuskaitstud failisüsteem (rootfs) ja määratleb kindlad köited ainult nende andmete jaoks, mis peavad säilima. See pole mitte ainult turvalisem, vaid sunnib ka puhtama arhitektuuri järele ja päranditahorisontaalse skaleerimise hõlbustamine.
Ajastatud protsesside puhul ärge pange cron-tööülesannet veebisaidi konteinerisse. Kuldreegel on järgmine: üks protsess konteineri kohtaKõige puhtam lähenemisviis on kasutada oma rakenduse image'i ajutise konteineri käivitamiseks, mis täidab ülesande ja seejärel hävitab ennast, või hallata croni hostist, kutsudes konteinerimootorit käskude abil.
Konteineri turvalisus on pidev protsess, mis hõlmab juurjuurdepääsu kõrvaldamist, kerneli võimaluste piiramist ja ebavajalike tööriistade eemaldamist konteineri kujutistelt. Kombineerides privileegideta kasutajaid käitusaja tugevdamise ja pideva jälgimisega, saavutatakse keskkond, kus funktsionaalsus ei kahjusta hostsüsteemi terviklikkust.
Kirglik kirjanik baitide maailmast ja üldse tehnoloogiast. Mulle meeldib jagada oma teadmisi kirjutamise kaudu ja just seda ma selles ajaveebis teengi, näitan teile kõike kõige huvitavamat vidinate, tarkvara, riistvara, tehnoloogiliste suundumuste ja muu kohta. Minu eesmärk on aidata teil digimaailmas lihtsal ja meelelahutuslikul viisil navigeerida.

