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.
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.
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.
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
| 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.
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
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
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.




