környezeti változók beillesztése a build folyamatba

Környezeti változók biztonságos beillesztése a fordítási folyamatba

A környezeti változók beillesztése az építési folyamatba egy standard gyakorlat a modern világban CI/CD pipelines. A csapatok környezeti változókat injektálnak a build folyamatba, hogy titkokat, tokeneket és futásidejű konfigurációt adjanak át a buildeknek anélkül, hogy fix értékeket kellene beírniuk. Első pillantásra ez egy egyszerű és biztonságos mintának tűnik.

A gyakorlatban azonban gyakran az egyik leginkább alábecsült kockázattá válik a szoftverellátási láncban.

Mert miután a csapatok környezeti változókat injektálnak a build folyamatba, ezek az értékek már nem elszigeteltek. Hozzáférhetővé válnak minden számára, ami a folyamatban fut. pipelineBuild szkriptek, CLI eszközök, harmadik féltől származó műveletek és még függőségek is képesek olvasni őket.

Itt kezdenek szétesni a dolgok.

Ebben az útmutatóban bemutatjuk, hogyan juttatnak be a csapatok környezeti változókat a build folyamatba valós körülmények között. pipelines, hol történnek valójában a szivárgások, és hogyan lehet biztonságossá tenni az építési folyamatot a fejlesztés lassítása nélkül.

Mit jelent környezeti változók befecskendezése az építési folyamatba?

A környezeti változók injektálása lényegében azt jelenti, hogy értékeket adunk át egy pipeline futásidőben, hogy a feladatok (jobok) a végrehajtás során hozzáférhessenek hozzájuk. 

A gyakorlatban a legtöbb csapat többször is befecskendez környezeti változókat a build folyamatba a különböző szakaszokban, gyakran anélkül, hogy teljes rálátást kapna arra, hogyan használják ezeket az értékeket.

Ezek az értékek jellemzően API-kulcsokat, adatbázis-hitelesítő adatokat, tokeneket vagy környezetspecifikus konfigurációt tartalmaznak. Ahelyett, hogy közvetlenül a kódban tárolná őket, a CI/CD A rendszer dinamikusan tölti be őket, amikor a build elindul.

Ez egy valós problémát old meg. Tiszta kódot biztosít, elkerüli a duplikációt, és lehetővé teszi ugyanazt. pipeline tesztelési, előkészítési és éles környezetekben való futtatáshoz.

Ez a modell azonban egy olyan feltételezésen alapul, amely már nem áll fenn: hogy az építési környezet ellenőrzött és kiszámítható.

Modern pipelineAz ok egyik sem. Több lépést, külső integrációkat és függőségeket tartalmaznak, amelyek dinamikusan végrehajtják a kódot. Ennek eredményeként, miután egy változót befecskendeznek, az már nem csak konfiguráció. A végrehajtási kontextus részévé válik.

Hol szivárognak a környezeti változók az építési folyamat során?

A legtöbb szivárgás nem azért történik, mert valaki nyíltan felfed egy titkot. Azért történnek, mert pipelineolyan módon viselkednek, amelyet a fejlesztők nem teljesen előre látnak.

Minden alkalommal, amikor a csapatok környezeti változókat injektálnak a build folyamatba, bővítik azon komponensek számát, amelyek potenciálisan hozzáférhetnek az érzékeny adatokhoz.

Például egy fejlesztő engedélyezheti a részletes naplózást egy hibás build hibakereséséhez. Egy CLI eszköz kimenete részeként kinyomtathatja a környezeti változókat. Egy függőség a végrehajtás részeként csendben hozzáférhet a folyamatváltozókhoz.

Önmagukban egyik cselekedet sem tűnik gyanúsnak. Együttesen azonban több szivárgási útvonalat hoznak létre.

A titkok a következőkben végződhetnek:

  • naplókat kell létrehozni, amelyeket tárolnak és indexelnek
  • csapatok között megosztott hibakeresési kimenet
  • külső kódot futtató harmadik féltől származó CI-műveletek
  • telepítés vagy futásidő alatt végrehajtódó függőségek
  • az építés során keletkezett ideiglenes műtermékek

Ha egy titkos információ egyszer megjelenik a naplókban, ritkán marad meg a rendszeren. A naplókat lemásolják, tárolják és megőrzik több rendszeren keresztül. Ezen a ponton a kiszivárgás messze túlmutat az eredetin. pipeline.

Ezért a környezeti változók szivárgásait gyakran későn fedezik fel, miután a kár már megtörtént.

Miért adnak a csapatok környezeti változókat a build folyamathoz?

Ezen kockázatok ellenére a csapatok nagymértékben támaszkodnak a környezeti változók injektálására. És jó okkal.

Lehetővé teszi pipelines a rugalmasság megőrzése érdekében. Egyetlen munkafolyamat képes alkalmazkodni a különböző környezetekhez, több szolgáltatáshoz is hitelesíthető, és dinamikusan változtathatja a viselkedését a kód módosítása nélkül.

A gyorsan változó DevOps környezetekben ez a rugalmasság elengedhetetlen. A rugalmasság azonban mindig kompromisszumokkal jár. Minél dinamikusabb egy pipeline Minél több adatot tárolunk, annál nehezebbé válik annak ellenőrzése, hogy mi történik benne. Minden további lépés, integráció vagy függőség növeli azon helyek számát, ahol az érzékeny adatokhoz hozzá lehet férni.

Ennek eredményeként a környezeti változók injektálása a konfigurációs részletből biztonsági problémává válik.

Gyakori kockázatok környezeti változók építési folyamatba történő befecskendezésekor

A kockázatok nem elméletiek. A valóságban is megjelennek. pipelineminden nap.

Titkok szivárognak a naplókba

A naplók az egyik leggyakoribb expozíciós forrásokA hibakeresési jelzők, a parancssori felület (CLI) eszközök és a veremkövetések gyakran érzékeny értékeket tárnak fel anélkül, hogy a fejlesztők észrevennék.

Miután ezek az értékek napvilágra kerülnek, gyorsan terjednek a rendszerek között.

Túlzottan engedékeny hozzáférés

Sok pipelines minden változót kitesznek az összes munkának. Ez szükségtelen kockázatot teremt.

Ha egy lépés veszélybe kerül, olyan hitelesítő adatokhoz férhet hozzá, amelyekre valójában nincs szüksége.

Függőség és cselekvési visszaélés

Modern pipelinenagymértékben támaszkodnak harmadik féltől származó eszközökre és integrációkra. Ezek az összetevők ugyanabban a környezetben futnak, mint a titkok.

Ha egyikük rosszindulatúan viselkedik, csendben hozzáférhet a befecskendezett változókhoz.

Szerint OWASPAz ellátási lánccal kapcsolatos támadások gyakran kihasználják a megbízható komponenseket a build folyamatban. A környezeti változók gyakran a legkönnyebb célponttá válnak.

Ez a kockázat nem elméleti. Legutóbbi események, mint például az axios npm kompromittálása, bemutatják, hogyan használják fel a támadók a megbízható függőségeket a futásidejű titkok eléréséhez, és pipeline adatokat.
 

Tartalék titkok a kódban

Amikor a buildek hiányzó változók miatt meghiúsulnak, a csapatok néha tartalék értékeket adnak hozzá a megőrzésük érdekében. pipelinefut.

Idővel ezek az értékek commitbevetve vagy telepítve, ami hosszú távú kitettséget teremt.

Ajánlott gyakorlatok környezeti változók biztonságos befecskendezéséhez a build folyamatba

A csapatok által a build folyamatba bevitt környezeti változók biztonságossá tétele nem a rugalmasság elvesztését jelenti. Arról szól, hogy hogyan szabályozzuk, hogyan jelennek meg ezek az értékek a végrehajtás során.
 
Kategória Legjobb gyakorlat Miért számít?
Titkok tárolása Használjon trezort vagy CI-titkok kezelőjét Megakadályozza a kódban való kitettséget
Belépési ellenőrzés Hozzáférés korlátozása feladatonként Csökkenti a támadási felületet
Fakitermelés Érzékeny értékek maszkolása Megakadályozza a szivárgást
Hatály és élettartam Használjon rövid életű hitelesítő adatokat Korlátozza a robbanási sugarat
Érvényesítés Hiányzó változók esetén a buildek sikertelenek Kerüli a nem biztonságos tartalék megoldásokat

Miért sokan CI/CD Biztonsági eszközök Miss Env Var Leaks

A legtöbb biztonsági eszköz a kód vagy a függőségek beolvasására összpontosít a build befejezése után.

A végrehajtás során azonban környezeti változók szivárgása történik.

A pipeline helyesen tudja beilleszteni a titkos kódokat, és továbbra is felfedheti azokat a naplókon vagy a futásidejű viselkedésen keresztül. Mire a szkenner észleli a problémát, a titkos kód már veszélybe kerülhet.

Ez szakadékot teremt a felderítés és a megelőzés között.

A csapatoknak olyan kontrollokra van szükségük, amelyek akkor is működnek, amikor a pipeline fut, nem miután befejeződött.

Ez különösen kritikussá válik, amikor a csapatok futásidejű vezérlők nélkül több feladaton és harmadik féltől származó lépéseken keresztül juttatnak be környezeti változókat a build folyamatba.

Hogyan ajánljuk a környezeti változók befecskendezésének biztonságossá tételét?

A gyakorlatban a hatékony védelem néhány következetes alapelv betartásán múlik.

Őrizd meg a titkokat a külső téren pipelineCsak futásidőben injektáld őket. Korlátozd a hozzáférést a minimálisan szükséges hatókörre. Használj rövid életű hitelesítő adatokat, amikor csak lehetséges.

Ezzel egyidejűleg figyelje meg, hogyan pipelines hozzáférés-érzékeny értékek. A váratlan hozzáférési minták gyakran már a szivárgás láthatóvá válása előtt jelzik a kockázatot.

Ez a megközelítés a biztonságot a reaktív észlelésről a proaktív ellenőrzésre helyezi át.

Hogyan segít a Xygeni a védelemben? CI/CD Titkos injekció

A Xygeni arra a pontra összpontosít, ahol a csapatok környezeti változókat injektálnak az építési folyamatba, és ahol a titkok ténylegesen napvilágra kerülnek: belül pipeline, végrehajtás közben.

Ahelyett, hogy csak az utólagos szkennelésre hagyatkozna, a Xygeni elemzi, hogyan pipelinekörnyezeti változókat használnak futás közben. Ez magában foglalja azt is, hogy a titkok hogyan mozognak a feladatok között, hogyan férnek hozzájuk a build lépések, és hogyan hatnak egymásra a függőségek a végrehajtási környezettel.

Például a Xygeni képes érzékelni, amikor egy pipeline túl széles körben teszi elérhetővé a változókat, amikor egy lépés kockáztatja a bizalmas értékek naplókba nyomtatását, vagy amikor egy függőség váratlanul megpróbál hozzáférni a hitelesítő adatokhoz.

Ugyanabban az időben, guardrails közvetlenül érvényesítse a szabályzatot pipelineA csapatok blokkolhatják a nem biztonságos buildeket, korlátozhatják a titkos hozzáférést bizonyos feladatokhoz, és megakadályozhatják a kockázatos konfigurációkat, mielőtt azok elérnék az éles környezetet.

Mert ez belül történik CI/CD a munkafolyamatnak köszönhetően a fejlesztőknek nem kell megváltoztatniuk a munkamódszerüket. A biztonság a folyamat részévé válik. pipeline, nem egy külön lépés.

Ennek eredményeként a csapatok betekintést nyernek abba, hogyan használják a titkos információkat, szabályozhatják azok nyilvánosságra kerülését, és csökkenthetik a szivárgások kockázatát a kézbesítés lassítása nélkül.

Záró gondolatok

A környezeti változók beillesztése az építési folyamatba elengedhetetlen a modern CI/CD munkafolyamatok. Megfelelő kontrollok nélkül azonban ez a gyakorlat a végrehajtás több szakaszában is titkokat fedhet fel.

Azonban egy olyan kockázati réteget is jelent, amely gyakran észrevétlen marad.

A kihívás nem az, hogy használjunk-e környezeti változókat, hanem az, hogy hogyan szabályozzuk azok elérhetőségét a végrehajtás során.

A modern DevOps környezetekben a szivárgások megelőzése a build folyamat során sokkal fontosabb, mint azok utólagos észlelése.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal