ievadīt vides mainīgos būvēšanas procesā

Droši ievadiet vides mainīgos būvēšanas procesā

Vides mainīgo ievadīšana būvēšanas procesā ir standard prakse mūsdienu vidē CI/CD pipelines. Komandas ievada vides mainīgos būvēšanas procesā, lai nodotu noslēpumus, žetonus un izpildlaika konfigurāciju būvējumiem bez cietā kodējuma vērtībām. Virspusēji tas izskatās pēc vienkārša un droša modeļa.

Tomēr praksē tas bieži kļūst par vienu no visvairāk nenovērtētajiem riskiem programmatūras piegādes ķēdē.

Jo, tiklīdz komandas ievada vides mainīgos būvēšanas procesā, šīs vērtības vairs nav izolētas. Tās kļūst pieejamas visam, kas darbojas tajā. pipelineTos var nolasīt gan būvēšanas skripti, gan komandrindas saskarnes rīki, gan trešo pušu darbības, gan pat atkarības.

Šeit lietas sāk sadalīties.

Šajā rokasgrāmatā mēs aplūkosim, kā komandas reālajā dzīvē ievada vides mainīgos būvēšanas procesā. pipelines, kur patiesībā notiek noplūdes un kā nodrošināt būvēšanas procesu, nepalēninot izstrādi.

Ko nozīmē vides mainīgo ievadīšana būvēšanas procesā

Pēc būtības vides mainīgo ievadīšana nozīmē vērtību nodošanu pipeline izpildes laikā, lai darbi varētu tiem piekļūt izpildes laikā. 

Praksē lielākā daļa komandu vairākas reizes dažādos posmos ievada vides mainīgos būvēšanas procesā, bieži vien bez pilnīgas pārredzamības par to, kā šīs vērtības tiek izmantotas.

Šīs vērtības parasti ietver API atslēgas, datubāzes akreditācijas datus, žetonus vai videi specifisku konfigurāciju. Tā vietā, lai tās tiktu glabātas tieši kodā, CI/CD Sistēma tos ielādē dinamiski, kad sākas būvēšana.

Tas atrisina reālu problēmu. Tas uztur kodu tīru, novērš dublēšanos un ļauj veikt to pašu. pipeline lai darbotos dažādās izstrādes, testēšanas un ražošanas vidēs.

Tomēr šis modelis balstās uz pieņēmumu, kas vairs nav spēkā: ka būvniecības vide ir kontrolēta un paredzama.

mūsdienu pipelinenav ne viens, ne otrs. Tie ietver vairākus soļus, ārējas integrācijas un atkarības, kas dinamiski izpilda kodu. Tā rezultātā, kad mainīgais ir ievadīts, tas vairs nav tikai konfigurācija. Tas kļūst par izpildes konteksta daļu.

Kur vides mainīgie noplūst būvēšanas procesā

Lielākā daļa noplūžu nenotiek tāpēc, ka kāds atklāti atklāj noslēpumu. Tās notiek tāpēc, ka pipelineuzvedas tā, kā izstrādātāji to pilnībā neparedz.

Katru reizi, kad komandas ievada vides mainīgos būvēšanas procesā, tās paplašina komponentu skaitu, kas potenciāli var piekļūt sensitīviem datiem.

Piemēram, izstrādātājs var iespējot detalizētu reģistrēšanu, lai atkļūdotu kļūmīgu būvējumu. CLI rīks var izdrukāt vides mainīgos kā daļu no savas izvades. Atkarība var piekļūt procesa mainīgajiem klusībā kā daļu no tās izpildes.

Neviena no šīm darbībām pati par sevi neizskatās aizdomīga. Tomēr kopā tās rada vairākus noplūdes ceļus.

Noslēpumi var nonākt pie:

  • veidot žurnālus, kas tiek saglabāti un indeksēti
  • atkļūdošanas izvade, kas koplietota starp komandām
  • trešo pušu CI darbības, kas darbina ārēju kodu
  • atkarības, kas tiek izpildītas instalēšanas vai izpildes laikā
  • būvēšanas laikā ģenerētie pagaidu artefakti

Kad noslēpums parādās žurnālos, tas reti paliek noslēpumā. Žurnāli tiek kopēti, glabāti un saglabāti vairākās sistēmās. Šajā brīdī tā ir kļuvusi pieejama daudz plašāk nekā sākotnēji. pipeline.

Tāpēc vides mainīgo noplūdes bieži tiek atklātas vēlu un pēc tam, kad kaitējums jau ir nodarīts.

Kāpēc komandas ievada vides mainīgos būvēšanas procesā

Neskatoties uz šiem riskiem, komandas lielā mērā paļaujas uz vides mainīgo injicēšanu. Un tam ir labs iemesls.

Tas ļauj pipelines saglabāt elastību. Viena darbplūsma var pielāgoties dažādām vidēm, autentificēties vairākos pakalpojumos un dinamiski mainīt darbību, nemainot kodu.

Strauji mainīgās DevOps vidēs šī elastība ir būtiska. Tomēr elastība vienmēr ir saistīta ar kompromisiem. Jo dinamiskāka ir pipeline Jo vairāk tas kļūst, jo grūtāk ir kontrolēt tā iekšienē notiekošo. Katrs papildu solis, integrācija vai atkarība palielina vietu skaitu, kur var piekļūt sensitīviem datiem.

Tā rezultātā vides mainīgo injekcija no konfigurācijas detaļas pāriet uz drošības problēmu.

Biežākie riski, ievadot vides mainīgos būvēšanas procesā

Riski nav teorētiski. Tie parādās reālajā dzīvē. pipelinekatru dienu.

Noslēpumi noplūst žurnālos

Baļķi ir viens no visbiežāk sastopamie iedarbības avotiAtkļūdošanas karodziņi, komandrindas saskarnes rīki un steka izsekošanas dati bieži vien atklāj sensitīvas vērtības, izstrādātājiem to nepamanot.

Kad šīs vērtības ir atklātas, tās ātri izplatās starp sistēmām.

Pārāk atļaujoša piekļuve

Daudz pipelines pakļauj visus mainīgos visiem darbiem. Tas rada nevajadzīgu risku.

Ja viens solis tiek apdraudēts, tas var piekļūt akreditācijas datiem, kas tam patiesībā nav nepieciešami.

Atkarība un rīcības ļaunprātīga izmantošana

mūsdienu pipelinelielā mērā paļaujas uz trešo pušu rīkiem un integrācijām. Šie komponenti darbojas tajā pašā vidē, kur jūsu noslēpumi.

Ja kāds no tiem uzvedas ļaunprātīgi, tas var klusībā piekļūt ievadītajiem mainīgajiem.

Saskaņā ar OWASPPiegādes ķēdes uzbrukumi bieži izmanto uzticamus komponentus būvēšanas procesā. Vides mainīgie bieži vien kļūst par vieglāko mērķi.

Šis risks nav teorētisks. Nesenie incidenti, piemēram, axios npm kompromiss, parāda, kā uzbrucēji ļaunprātīgi izmanto uzticamas atkarības, lai piekļūtu izpildlaika noslēpumiem un pipeline dati.
 

Rezerves noslēpumi kodā

Ja būvēšana neizdodas trūkstošu mainīgo dēļ, komandas dažreiz pievieno rezerves vērtības, lai saglabātu pipelineskrien.

Laika gaitā šīs vērtības kļūst committiek izmantots vai izvietots, radot ilgtermiņa pakļaušanu riskam.

Labākā prakse vides mainīgo drošai ievadīšanai būvēšanas procesā

Komandu vides mainīgo ievadīšanas veidošanas procesā nodrošināšana nenozīmē elastības atņemšanu. Tā ir par to, kā šīs vērtības tiek parādītas izpildes laikā.
 
Kategorija Labākā prakse Kāpēc tas ir svarīgi
Noslēpumu glabāšana Izmantojiet seifu vai CI noslēpumu pārvaldnieku Novērš koda atkailināšanos
Piekļuves kontrole Ierobežot piekļuvi katram darbam Samazina uzbrukuma virsmu
Mežizstrāde Maskēt jutīgas vērtības Novērš noplūdes
Darbības joma un kalpošanas laiks Izmantojiet īslaicīgus akreditācijas datus Ierobežo sprādziena rādiusu
Validēšana Neizdodas veidot, ja trūkst mainīgo Izvairās no nedrošām atkāpšanās iespējām

Kāpēc daudzi CI/CD Drošības rīki Miss Env Var Leaks

Lielākā daļa drošības rīku koncentrējas uz koda vai atkarību skenēšanu pēc būvēšanas pabeigšanas.

Tomēr izpildes laikā notiek vides mainīgo noplūdes.

A pipeline var pareizi ievadīt noslēpumus un joprojām atklāt tos, izmantojot žurnālus vai izpildlaika darbību. Līdz brīdim, kad skeneris atklāj problēmu, noslēpums jau var būt apdraudēts.

Tas rada plaisu starp atklāšanu un profilaksi.

Komandām ir nepieciešamas kontroles, kas darbojas, kamēr pipeline darbojas, nevis pēc tam, kad tas ir beidzies.

Tas kļūst īpaši svarīgi, ja komandas ievada vides mainīgos būvēšanas procesā vairākos darbos un trešo pušu darbībās bez izpildlaika vadības.

Kā mēs iesakām nodrošināt vides mainīgo injekciju

Praksē efektīva aizsardzība ir atkarīga no dažiem konsekventiem principiem.

Glabājiet noslēpumus ārpusē pipelineIevadiet tos tikai izpildes laikā. Ierobežojiet piekļuvi līdz minimālajam nepieciešamajam tvērumam. Kad vien iespējams, izmantojiet īslaicīgus akreditācijas datus.

Vienlaikus sekojiet līdzi, kā pipelines piekļuves sensitīvām vērtībām. Negaidīti piekļuves modeļi bieži vien norāda uz risku, pirms noplūde kļūst redzama.

Šī pieeja maina drošību no reaktīvas noteikšanas uz proaktīvu kontroli.

Kā Xygeni palīdz aizsargāt CI/CD Slepena injekcija

Xygeni koncentrējas uz punktu, kurā komandas ievada vides mainīgos būvēšanas procesā un kur noslēpumi faktiski tiek atklāti: iekšpusē pipeline, izpildes laikā.

Tā vietā, lai paļautos tikai uz skenēšanu pēc izveides, Xygeni analizē, kā pipelines izmanto vides mainīgos to izpildes laikā. Tas ietver to, kā noslēpumi pārvietojas starp uzdevumiem, kā veidošanas soļi tiem piekļūst un kā atkarības mijiedarbojas ar izpildes vidi.

Piemēram, Xygeni var noteikt, kad a pipeline mainīgie tiek pakļauti pārāk plaši, ja darbība riskē izdrukāt sensitīvas vērtības žurnālos vai ja atkarība negaidīti mēģina piekļūt akreditācijas datiem.

Tajā pašā laikā, guardrails īstenot politiku tieši pipelineKomandas var bloķēt nedrošas versijas, ierobežot slepenu piekļuvi konkrētiem darbiem un novērst riskantas konfigurācijas, pirms tās nonāk ražošanas vidē.

Jo tas notiek iekšā CI/CD darbplūsmas dēļ izstrādātājiem nav jāmaina darba veids. Drošība kļūst par daļu no pipeline, nevis atsevišķs solis.

Rezultātā komandas iegūst pārredzamību par to, kā tiek izmantoti noslēpumi, kontrolē to izpaušanas veidu un samazina noplūdes risku, nepalēninot piegādi.

Final Domas

Vides mainīgo ievadīšana būvēšanas procesā ir būtiska mūsdienīgai CI/CD darbplūsmas. Tomēr bez pienācīgas kontroles šī prakse var atklāt noslēpumus vairākos izpildes posmos.

Tomēr tas rada arī riska slāni, kas bieži vien paliek nepamanīts.

Problēma nav vides mainīgo izmantošana, bet gan to, kā kontrolēt to iedarbību izpildes laikā.

Mūsdienu DevOps vidē noplūžu novēršana būvēšanas procesa laikā ir daudz svarīgāka nekā to atklāšana pēc tam.

sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu