Aplinkos kintamųjų įterpimas į kūrimo procesą yra standard praktika šiuolaikinėje srityje CI/CD pipelines. Komandos į kūrimo procesą įterpia aplinkos kintamuosius, kad perduotų paslaptis, prieigos raktus ir vykdymo laiko konfigūraciją į kūrimo procesus be kietojo kodo reikšmių. Iš pirmo žvilgsnio tai atrodo kaip paprastas ir saugus modelis.
Tačiau praktikoje tai dažnai tampa viena iš labiausiai neįvertinamų rizikų programinės įrangos tiekimo grandinėje.
Nes kai komandos į kūrimo procesą įterpia aplinkos kintamuosius, šios vertės nebelieka izoliuotos. Jos tampa prieinamos viskam, kas veikia jo viduje. pipelineJuos gali skaityti kūrimo scenarijai, CLI įrankiai, trečiųjų šalių veiksmai ir net priklausomybės.
Čia viskas pradeda griūti.
Šiame vadove apžvelgsime, kaip komandos realiame gyvenime į kūrimo procesą įterpia aplinkos kintamuosius. pipelinekur iš tikrųjų įvyksta nutekėjimai ir kaip užtikrinti kūrimo proceso saugumą nesulėtinant kūrimo.
Ką reiškia aplinkos kintamųjų įterpimas į kūrimo procesą
Iš esmės aplinkos kintamųjų įterpimas reiškia reikšmių perdavimą į pipeline vykdymo metu, kad užduotys galėtų prie jų prieiti vykdymo metu.
Šios reikšmės paprastai apima API raktus, duomenų bazės kredencialus, prieigos raktus arba aplinkai būdingą konfigūraciją. Užuot jas tiesiogiai saugoję kode, CI/CD Sistema juos dinamiškai įkelia, kai prasideda kūrimas.
Tai išsprendžia realią problemą. Tai palaiko kodą švarų, vengia dubliavimo ir leidžia tą patį pipeline veikti testavimo, parengimo ir gamybos aplinkose.
Tačiau šis modelis remiasi prielaida, kuri nebegalioja: kad kūrimo aplinka yra kontroliuojama ir nuspėjama.
modernus pipelinenėra nei vienas, nei kitas. Jie apima kelis veiksmus, išorines integracijas ir priklausomybes, kurios dinamiškai vykdo kodą. Todėl įvedus kintamąjį, jis nebėra tik konfigūracija. Jis tampa vykdymo konteksto dalimi.
Kur aplinkos kintamieji nuteka kūrimo procese
Dauguma nutekinimų įvyksta ne dėl to, kad kažkas atvirai atskleidžia paslaptį. Jie įvyksta todėl, kad pipelineelgiasi taip, kaip kūrėjai iki galo nenumato.
Pavyzdžiui, kūrėjas gali įjungti išsamų registravimą, kad galėtų derinti nepavykusį kompiliavimą. CLI įrankis gali atspausdinti aplinkos kintamuosius kaip savo išvesties dalį. Priklausomybė gali tyliai pasiekti proceso kintamuosius vykdymo metu.
Nė vienas iš šių veiksmų pats savaime neatrodo įtartinas. Tačiau kartu jie sukuria daug nutekėjimo kelių.
Paslaptys gali baigtis:
- kurti žurnalus, kurie būtų saugomi ir indeksuojami
- derinimo išvestis, bendrinama tarp komandų
- trečiųjų šalių CI veiksmai, vykdantys išorinį kodą
- priklausomybės, kurios vykdomos diegimo arba vykdymo metu
- laikini artefaktai, sukurti kūrimo metu
Kai slapta informacija pasirodo žurnaluose, ji retai kada lieka paslėpta. Žurnalai kopijuojami, saugomi ir saugomi keliose sistemose. Tuomet atskleidimas gerokai viršija pradinę. pipeline.
Štai kodėl aplinkos kintamųjų nutekėjimai dažnai aptinkami vėlai, kai žala jau padaryta.
Kodėl komandos į kūrimo procesą įterpia aplinkos kintamuosius
Nepaisant šių rizikų, komandos labai pasikliauja aplinkos kintamųjų injekcija. Ir ne be reikalo.
Tai įgalina pipelines išlikti lanksčiam. Viena darbo eiga gali prisitaikyti prie skirtingų aplinkų, autentifikuotis keliose paslaugose ir dinamiškai keisti elgseną nekeičiant kodo.
Greitai besikeičiančiose „DevOps“ aplinkose šis lankstumas yra būtinas. Tačiau lankstumas visada turi kompromisų. Kuo dinamiškesnis pipeline Kuo jis tampa, tuo sunkiau kontroliuoti, kas vyksta jo viduje. Kiekvienas papildomas žingsnis, integracija ar priklausomybė didina vietų, kur galima pasiekti jautrius duomenis, skaičių.
Dėl to aplinkos kintamųjų injekcija iš konfigūracijos detalės virsta saugumo problema.
Dažniausios rizikos, kai į kūrimo procesą įterpiate aplinkos kintamuosius
Rizika nėra teorinė. Ji pasireiškia realybėje. pipelines kiekvieną dieną.
Paslaptys nuteka į žurnalus
Rąstai yra vienas iš Dažniausi poveikio šaltiniaiDerinimo žymės, CLI įrankiai ir steko pėdsakai dažnai atskleidžia jautrias reikšmes, kūrėjams to nepastebint.
Kai šios vertybės tampa matomos, jos greitai plinta tarp sistemų.
Pernelyg liberali prieiga
Daug pipelines visus kintamuosius veikia visuose darbuose. Tai sukuria nereikalingą riziką.
Jei vienas žingsnis tampa pažeistas, jis gali pasiekti prisijungimo duomenis, kurių jam iš tikrųjų nereikia.
Priklausomybė ir piktnaudžiavimas veiksmais
modernus pipelinelabai priklauso nuo trečiųjų šalių įrankių ir integracijų. Šie komponentai veikia toje pačioje aplinkoje kaip ir jūsų slaptieji kodai.
Jei vienas iš jų elgiasi kenkėjiškai, jis gali tyliai pasiekti įterptus kintamuosius.
Pagal OWASPTiekimo grandinės atakos dažnai išnaudoja patikimus komponentus kūrimo procese. Aplinkos kintamieji dažnai tampa lengviausiu taikiniu.
Atsarginės paslaptys kode
Kai dėl trūkstamų kintamųjų nepavyksta sukurti kompiliacijų, komandos kartais prideda atsargines reikšmes, kad išlaikytų pipelines bėga.
Laikui bėgant, šios vertės tampa commitapdorojamas arba dislokuojamas, sukuriant ilgalaikį pavojų.
Geriausia praktika, kaip saugiai į kompiliavimo procesą įterpti aplinkos kintamuosius
| Kategorija | Geriausia praktika | Kodėl tai svarbu |
|---|---|---|
| Paslapčių saugojimas | Naudokite saugyklą arba CI paslapčių tvarkyklę | Apsaugo nuo kodo atskleidimo |
| Prieigos kontrolė | Apriboti prieigą vienam darbui | Sumažina atakos paviršių |
| Miško ruoša | Maskuoti jautrias vertes | Apsaugo nuo nutekėjimo |
| Taikymo sritis ir gyvavimo trukmė | Naudokite trumpalaikius įgaliojimus | Riboja sprogimo spindulį |
| Patvirtinimas | Jei trūksta kintamųjų, kompiliavimas nepavyksta | Išvengiama nesaugių atsarginių variantų |
Kodėl daugelis CI/CD Apsaugos įrankiai „Miss Env Var Leaks“
Dauguma saugumo įrankių sutelkia dėmesį į kodo arba priklausomybių nuskaitymą po kūrimo pabaigos.
Tačiau vykdymo metu nuteka aplinkos kintamieji.
A pipeline gali teisingai įterpti paslaptis ir vis tiek jas atskleisti per žurnalus arba vykdymo laiko elgseną. Kol skaitytuvas aptinka problemą, paslaptis jau gali būti pažeista.
Tai sukuria atotrūkį tarp aptikimo ir prevencijos.
Komandoms reikia valdiklių, kurie veiktų tuo pačiu metu pipeline bėga, o ne po to, kai baigiasi.
Kaip rekomenduojame apsaugoti aplinkos kintamųjų injekciją
Praktiškai veiksminga apsauga priklauso nuo kelių nuoseklių principų.
Saugokite paslaptis už jos ribų pipelineĮterpkite juos tik vykdymo metu. Apribokite prieigą iki minimalios reikiamos apimties. Kai tik įmanoma, naudokite trumpalaikius prisijungimo duomenis.
Tuo pačiu metu stebėkite, kaip pipelines prieigos jautrios vertės. Netikėti prieigos modeliai dažnai rodo riziką dar prieš tai, kai nuotėkis tampa matomas.
Šis požiūris perkelia saugumą nuo reaktyvaus aptikimo prie proaktyvios kontrolės.
Kaip „Xygeni“ padeda apsaugoti CI/CD Slapta injekcija
Užuot pasikliavusi tik nuskaitymu po surinkimo, „Xygeni“ analizuoja, kaip pipelineVykdydami naudoja aplinkos kintamuosius. Tai apima tai, kaip slaptosios raktažodžiai juda tarp užduočių, kaip kūrimo etapai prie jų prisijungia ir kaip priklausomybės sąveikauja su vykdymo aplinka.
Pavyzdžiui, „Xygeni“ gali aptikti, kada pipeline kintamieji atskleidžiami pernelyg plačiai, kai žingsnis rizikuoja atspausdinti jautrias reikšmes žurnaluose arba kai priklausomybė netikėtai bando pasiekti prisijungimo duomenis.
Tuo pačiu metu, guardrails vykdyti politiką tiesiogiai pipelineKomandos gali blokuoti nesaugius kūrinius, apriboti slaptą prieigą prie konkrečių užduočių ir užkirsti kelią rizikingoms konfigūracijoms, kol jos nepasiekia gamybos aplinkos.
Kadangi tai vyksta viduje CI/CD darbo eigą, kūrėjams nereikia keisti savo darbo būdo. Saugumas tampa neatsiejama jo dalimi pipeline, o ne atskiras žingsnis.
Dėl to komandos gauna matomumą, kaip naudojamos paslaptys, kontroliuoja, kaip jos atskleidžiamos, ir sumažina nutekėjimo riziką nesulėtindamos teikimo.
Baigiamosios mintys
Tačiau tai taip pat įneša rizikos sluoksnį, kuris dažnai lieka nepastebėtas.
Iššūkis yra ne tai, ar naudoti aplinkos kintamuosius, o kaip kontroliuoti jų matomumą vykdymo metu.
Šiuolaikinėse „DevOps“ aplinkose daug svarbiau užkirsti kelią nutekėjimams kūrimo proceso metu, nei juos aptikti vėliau.




