v proces gradnje vbrizgajte spremenljivke okolja

Varno vbrizgajte okoljske spremenljivke v proces gradnje

Vstavljanje okoljskih spremenljivk v proces gradnje je standard praksa v sodobnem CI/CD pipelineEkipe v proces gradnje vbrizgajo spremenljivke okolja, da v gradnje posredujejo skrivnosti, žetone in konfiguracijo izvajalnega okolja brez trdo kodiranih vrednosti. Na prvi pogled je to videti kot preprost in varen vzorec.

Vendar pa v praksi pogosto postane eno najbolj podcenjenih tveganj v dobavni verigi programske opreme.

Ker ko ekipe v proces gradnje vstavijo spremenljivke okolja, te vrednosti niso več izolirane. Postanejo dostopne vsemu, kar se izvaja znotraj tega procesa. pipelineSkripti za gradnjo, orodja CLI, dejanja tretjih oseb in celo odvisnosti jih lahko berejo.

Tu se stvari začnejo rušiti.

V tem priročniku si bomo ogledali, kako ekipe v praksi vbrizgavajo okoljske spremenljivke v proces gradnje. pipelines, kje dejansko pride do puščanja in kako zavarovati proces gradnje, ne da bi pri tem upočasnili razvoj.

Kaj pomeni vbrizgati okoljske spremenljivke v proces gradnje

V svojem bistvu vbrizgavanje okoljskih spremenljivk pomeni posredovanje vrednosti v pipeline med izvajanjem, da lahko opravila do njih dostopajo med izvajanjem. 

V praksi večina ekip v proces gradnje vbrizga spremenljivke okolja večkrat v različnih fazah, pogosto brez popolnega vpogleda v to, kako se te vrednosti uporabljajo.

Te vrednosti običajno vključujejo ključe API-ja, poverilnice baze podatkov, žetone ali konfiguracijo, specifično za okolje. Namesto da bi jih shranili neposredno v kodo, CI/CD Sistem jih dinamično naloži, ko se gradnja začne.

To rešuje resničen problem. Ohrani kodo čisto, se izogne ​​podvajanju in omogoča enako pipeline za delovanje v okoljih za pripravo, testiranje in produkcijo.

Vendar pa ta model temelji na predpostavki, ki ne drži več: da je okolje gradnje nadzorovano in predvidljivo.

sodobna pipelines niso ne eno ne drugo. Vključujejo več korakov, zunanje integracije in odvisnosti, ki dinamično izvajajo kodo. Posledično, ko je spremenljivka vbrizgana, ni več le konfiguracija. Postane del konteksta izvajanja.

Kjer okoljske spremenljivke puščajo v procesu gradnje

Večina uhajanj informacij se ne zgodi zato, ker bi nekdo izrecno razkril skrivnost. Dogodijo se zato, ker pipelineobnašajo se na načine, ki jih razvijalci ne pričakujejo povsem.

Vsakič, ko ekipe v proces gradnje vnesejo spremenljivke okolja, razširijo število komponent, ki lahko potencialno dostopajo do občutljivih podatkov.

Razvijalec lahko na primer omogoči podrobno beleženje za odpravljanje napak v neuspešni gradnji. Orodje CLI lahko kot del svojega izpisa izpiše spremenljivke okolja. Odvisnost lahko kot del izvajanja tiho dostopa do spremenljivk procesa.

Nobeno od teh dejanj samo po sebi ni videti sumljivo. Vendar pa skupaj ustvarjajo več poti puščanja.

Skrivnosti lahko končajo v:

  • graditi dnevnike, ki se shranjujejo in indeksirajo
  • izhod za odpravljanje napak, deljen med ekipami
  • dejanja CI tretjih oseb, ki izvajajo zunanjo kodo
  • odvisnosti, ki se izvajajo med namestitvijo ali izvajanjem
  • začasni artefakti, ustvarjeni med gradnjo

Ko se skrivnost enkrat pojavi v dnevnikih, le redko ostane skrit. Dnevniki se kopirajo, shranjujejo in hranijo v več sistemih. Na tej točki se izpostavljenost razširi daleč preko izvirnika. pipeline.

Zato se puščanja okoljskih spremenljivk pogosto odkrijejo pozno in šele potem, ko je škoda že storjena.

Zakaj ekipe v proces gradnje vbrizgavajo spremenljivke okolja

Kljub tem tveganjem se ekipe močno zanašajo na vbrizgavanje okoljskih spremenljivk. In to z dobrim razlogom.

Omogoča pipelineza ohranjanje prilagodljivosti. En sam potek dela se lahko prilagodi različnim okoljem, overi v več storitvah in dinamično spremeni vedenje brez spreminjanja kode.

V hitro spreminjajočih se okoljih DevOps je ta prilagodljivost bistvena. Vendar pa prilagodljivost vedno prinaša kompromise. Bolj dinamičen kot je pipeline postaja, težje je nadzorovati, kaj se dogaja v njem. Vsak dodaten korak, integracija ali odvisnost poveča število mest, kjer je mogoče dostopati do občutljivih podatkov.

Posledično se vbrizgavanje okoljskih spremenljivk premakne iz podrobnosti konfiguracije v varnostno skrb.

Pogosta tveganja pri vstavljanju okoljskih spremenljivk v proces gradnje

Tveganja niso teoretična. Pojavljajo se v resničnem pipelinevsak dan.

Skrivnosti, ki puščajo v dnevnike

Hlodi so eden od najpogostejši viri izpostavljenostiZastavice za odpravljanje napak, orodja CLI in sledi sklada pogosto razkrijejo občutljive vrednosti, ne da bi jih razvijalci opazili.

Ko so te vrednosti enkrat izpostavljene, se hitro širijo po sistemih.

Preveč permisivni dostop

Veliko pipelineizpostavlja vse spremenljivke vsem delovnim mestom. To ustvarja nepotrebno tveganje.

Če je en korak ogrožen, lahko dostopa do poverilnic, ki jih dejansko ne potrebuje.

Odvisnost in zloraba dejanj

sodobna pipelinese močno zanašajo na orodja in integracije tretjih oseb. Te komponente delujejo v istem okolju kot vaše skrivnosti.

Če se eden od njih obnaša zlonamerno, lahko tiho dostopa do vbrizganih spremenljivk.

Glede na OWASPNapadi v dobavni verigi pogosto izkoriščajo zaupanja vredne komponente v procesu gradnje. Spremenljivke okolja pogosto postanejo najlažja tarča.

To tveganje ni teoretično. Nedavni incidenti, kot je na primer ogrožanje Axios npm, kažejo, kako napadalci zlorabljajo zaupanja vredne odvisnosti za dostop do skrivnosti izvajalnega okolja in pipeline podatkov.
 

Rezervne skrivnosti v kodi

Ko gradnja ne uspe zaradi manjkajočih spremenljivk, ekipe včasih dodajo rezervne vrednosti, da ohranijo pipelineteče.

Sčasoma te vrednosti postanejo commituporabljeni ali nameščeni, kar ustvarja dolgoročno izpostavljenost.

Najboljše prakse za varno vstavljanje okoljskih spremenljivk v proces gradnje

Zaščita načina, kako ekipe vbrizgavajo okoljske spremenljivke v proces gradnje, ne pomeni odvzema fleksibilnosti. Gre za nadzor nad tem, kako so te vrednosti izpostavljene med izvajanjem.
 
Kategorija Best Practice Zakaj je pomembno
Shranjevanje skrivnosti Uporabite upravitelja trezorja ali CI skrivnosti Preprečuje izpostavljenost v kodi
Nadzor dostopa Omeji dostop na opravilo Zmanjša površino napada
Beleženje Vrednosti, občutljive na masko Preprečuje puščanje
Obseg in življenjska doba Uporabite kratkotrajne poverilnice Omejuje polmer eksplozije
Potrditev Neuspešne gradnje, če manjkajo spremenljivke Izogiba se nevarnim nadomestnim ukrepom

Zakaj mnogi CI/CD Varnostna orodja Miss Env Var Puščanja

Večina varnostnih orodij se osredotoča na skeniranje kode ali odvisnosti po končani gradnji.

Vendar pa med izvajanjem pride do puščanja okoljskih spremenljivk.

A pipeline lahko pravilno vstavi skrivnosti in jih še vedno razkrije prek dnevnikov ali delovanja med izvajanjem. Ko pregledovalnik zazna težavo, je skrivnost morda že ogrožena.

To ustvarja vrzel med odkrivanjem in preprečevanjem.

Ekipe potrebujejo kontrole, ki delujejo medtem ko pipeline teče, ne po koncu.

To postane še posebej pomembno, ko ekipe v proces gradnje vbrizgajo spremenljivke okolja v več opravilih in korakih tretjih oseb brez kontrolnikov izvajalnega okolja.

Kako priporočamo zavarovanje vbrizgavanja okoljskih spremenljivk

V praksi se učinkovita zaščita zreducira na nekaj doslednih načel.

Skrivnosti shranjujte zunaj pipelineVbrizgajte jih samo med izvajanjem. Dostop omejite na najmanjši zahtevani obseg. Kadar koli je mogoče, uporabljajte kratkotrajne poverilnice.

Hkrati spremljajte, kako pipelinedostop do občutljivih vrednosti. Nepričakovani vzorci dostopa pogosto kažejo na tveganje, še preden puščanje postane vidno.

Ta pristop preusmerja varnost iz reaktivnega zaznavanja v proaktivni nadzor.

Kako Xygeni pomaga zaščititi CI/CD Skrivna injekcija

Xygeni se osredotoča na točko, kjer ekipe v proces gradnje vbrizgajo spremenljivke okolja in kjer se skrivnosti dejansko razkrijejo: znotraj pipeline, med izvedbo.

Namesto da bi se zanašal le na skeniranje po izdelavi, Xygeni analizira, kako pipelineMed izvajanjem uporabljajo okoljske spremenljivke. To vključuje, kako se skrivnosti premikajo med opravili, kako koraki gradnje dostopajo do njih in kako odvisnosti vplivajo na okolje izvajanja.

Xygeni lahko na primer zazna, kdaj pipeline preširoko izpostavlja spremenljivke, ko korak tvega, da bo v dnevnike izpisal občutljive vrednosti ali ko odvisnost poskuša nepričakovano dostopati do poverilnic.

Ob istem času, guardrails neposredno uveljavljati politiko v pipelineEkipe lahko blokirajo nevarne gradnje, omejijo tajni dostop do določenih opravil in preprečijo tvegane konfiguracije, preden dosežejo produkcijo.

Ker se to dogaja znotraj CI/CD delovnega toka razvijalcem ni treba spreminjati načina dela. Varnost postane del pipeline, ne ločen korak.

Posledično ekipe dobijo vpogled v to, kako se skrivnosti uporabljajo, nadzorujejo, kako so razkrite, in zmanjšajo tveganje uhajanja informacij, ne da bi pri tem upočasnile dostavo.

Končna thoughts

Vstavljanje okoljskih spremenljivk v proces gradnje je bistvenega pomena za sodobno CI/CD poteki dela. Vendar pa lahko ta praksa brez ustreznega nadzora razkrije skrivnosti v več fazah izvajanja.

Vendar pa s seboj prinaša tudi tveganje, ki ga pogosto ne opazimo.

Izziv ni v tem, ali uporabiti okoljske spremenljivke, temveč kako nadzorovati njihovo izpostavljenost med izvajanjem.

V sodobnih DevOps okoljih je preprečevanje puščanj med procesom gradnje veliko pomembnejše kot njihovo naknadno odkrivanje.

orodja-za-analizo-sestave-programske-programske-orodja-sca
Določite prednostne naloge, odpravite in zavarujte tveganja programske opreme
Pridobite svoj brezplačni račun.
Ni potrebna kreditna kartica.

Zagotovite si razvoj in dostavo programske opreme

z Xygeni Product Suite