vložit proměnné prostředí do procesu sestavení

Bezpečné vkládání proměnných prostředí do procesu sestavení

Vkládání proměnných prostředí do procesu sestavení je standard praxe v moderním CI/CD pipelineTýmy vkládají do procesu sestavení proměnné prostředí, aby do sestavení předaly tajné kódy, tokeny a konfiguraci za běhu bez nutnosti pevně kódovat hodnoty. Na první pohled to vypadá jako jednoduchý a bezpečný vzorec.

V praxi se však často stává jedním z nejvíce podceňovaných rizik v dodavatelském řetězci softwaru.

Protože jakmile týmy vloží proměnné prostředí do procesu sestavení, tyto hodnoty přestanou být izolované. Stanou se přístupnými všemu, co běží uvnitř daného procesu. pipelineSkripty pro sestavování, nástroje CLI, akce třetích stran a dokonce i závislosti je mohou číst.

Tady se věci začínají hroutit.

V této příručce si projdeme, jak týmy v reálných podmínkách vkládají proměnné prostředí do procesu sestavení. pipelines, kde k únikům skutečně dochází a jak zabezpečit proces sestavení bez zpomalení vývoje.

Co znamená vložit proměnné prostředí do procesu sestavení

V jádru znamená vkládání proměnných prostředí předávání hodnot do pipeline za běhu, aby k nim úlohy mohly přistupovat během provádění. 

V praxi většina týmů vkládá proměnné prostředí do procesu sestavení několikrát v různých fázích, často bez úplného přehledu o tom, jak jsou tyto hodnoty použity.

Tyto hodnoty obvykle zahrnují klíče API, přihlašovací údaje k databázi, tokeny nebo konfiguraci specifickou pro dané prostředí. Místo jejich přímého ukládání do kódu, CI/CD Systém je dynamicky načítá při spuštění sestavení.

Toto řeší skutečný problém. Udržuje kód čistý, zabraňuje duplicitě a umožňuje totéž. pipeline pro provoz v prostředích pro přípravu, testování a produkčních procesů.

Tento model se však opírá o předpoklad, který již neplatí: že prostředí pro sestavení je kontrolované a předvídatelné.

moderní pipelines nejsou ani jedno, ani druhé. Zahrnují více kroků, externí integrace a závislosti, které dynamicky spouštějí kód. Výsledkem je, že jakmile je proměnná vložena, už se nejedná jen o konfiguraci. Stává se součástí kontextu spuštění.

Kde dochází k úniku proměnných prostředí v procesu sestavení

Většina úniků informací se nestane proto, že by někdo explicitně odhalil tajemství. Stávají se proto, že pipelinechovají se způsoby, které vývojáři plně nepředpokládají.

Pokaždé, když týmy vloží proměnné prostředí do procesu sestavení, rozšiřují počet komponent, které mohou potenciálně přistupovat k citlivým datům.

Vývojář může například povolit podrobné protokolování pro ladění selhávajícího sestavení. Nástroj CLI může vypsat proměnné prostředí jako součást svého výstupu. Závislost může tiše přistupovat k proměnným procesu jako součást svého provádění.

Žádná z těchto akcí sama o sobě nevypadá podezřele. Dohromady však vytvářejí více únikových cest.

Tajemství se mohou ocitnout v:

  • vytvářet protokoly, které se ukládají a indexují
  • výstup ladění sdílený mezi týmy
  • Akce CI třetích stran, které spouštějí externí kód
  • závislosti, které se spouštějí během instalace nebo běhu
  • dočasné artefakty generované během sestavení

Jakmile se tajný údaj objeví v protokolech, jen zřídka zůstane uzavřen. Protokoly se kopírují, ukládají a uchovávají napříč různými systémy. V tomto okamžiku se odhalení rozšíří daleko za hranice originálu. pipeline.

Proto jsou úniky proměnných prostředí často odhaleny pozdě a až poté, co je škoda již napáchána.

Proč týmy vkládají proměnné prostředí do procesu sestavení

Navzdory těmto rizikům se týmy silně spoléhají na vkládání proměnných prostředí. A to z dobrého důvodu.

To umožňuje pipelines pro zachování flexibility. Jeden pracovní postup se může přizpůsobit různým prostředím, ověřovat se u více služeb a dynamicky měnit chování bez nutnosti úpravy kódu.

V rychle se rozvíjejících DevOps prostředích je tato flexibilita nezbytná. Flexibilita však vždy s sebou nese kompromisy. Čím dynamičtější a pipeline Čím více se stává, tím obtížnější je kontrolovat, co se uvnitř děje. Každý další krok, integrace nebo závislost zvyšuje počet míst, kde lze získat přístup k citlivým datům.

V důsledku toho se vkládání proměnných prostředí mění z detailu konfigurace na bezpečnostní problém.

Běžná rizika při vkládání proměnných prostředí do procesu sestavení

Rizika nejsou teoretická. Objevují se v reálných pipelinekaždý den.

Tajemství unikající do protokolů

Protokoly jsou jedním z nejčastější zdroje expoziceLadicí příznaky, nástroje CLI a trasování zásobníku často odhalují citlivé hodnoty, aniž by si toho vývojáři všimli.

Jakmile jsou tyto hodnoty odhaleny, rychle se šíří napříč systémy.

Příliš permisivní přístup

Mnoho pipelinevystavují všechny proměnné všem úlohám. To vytváří zbytečné riziko.

Pokud dojde k ohrožení jednoho kroku, může získat přístup k přihlašovacím údajům, které ve skutečnosti nepotřebuje.

Závislost a zneužívání akcí

moderní pipelinese silně spoléhají na nástroje a integrace třetích stran. Tyto komponenty běží ve stejném prostředí jako vaše tajné kódy.

Pokud se jeden z nich chová škodlivě, může k vloženým proměnným přistupovat tiše.

Podle OWASPÚtoky v dodavatelském řetězci často zneužívají důvěryhodné komponenty v procesu sestavení. Proměnné prostředí se často stávají nejjednodušším cílem.

Toto riziko není teoretické. Nedávné incidenty, jako například kompromitace Axios NPM, ukazují, jak útočníci zneužívají důvěryhodné závislosti k přístupu k běhovým tajným kódům a pipeline data.
 

Záložní tajemství v kódu

Když sestavení selže kvůli chybějícím proměnným, týmy někdy přidají záložní hodnoty, aby zachovaly pipelineběží.

Postupem času se tyto hodnoty stávají commitpoužity nebo nasazeny, což vede k dlouhodobé expozici.

Nejlepší postupy pro bezpečné vkládání proměnných prostředí do procesu sestavení

Zabezpečení způsobu, jakým týmy vkládají proměnné prostředí do procesu sestavení, nespočívá v odebrání flexibility. Jde o kontrolu toho, jak jsou tyto hodnoty zobrazovány během provádění.
 
Kategorie Nejlepší praxe Proč to záleží
Úložiště tajemství Použijte správce trezoru nebo tajných klíčů CI Zabraňuje odhalení v kódu
Řízení přístupu Omezení přístupu na úlohu Snižuje útočnou plochu
Přihlášení Hodnoty citlivé na masku Zabraňuje únikům
Rozsah a životnost Používejte krátkodobé přihlašovací údaje Omezuje poloměr výbuchu
Potvrzení Selžení sestavení, pokud chybí proměnné Vyhýbá se nebezpečným záložním řešením

Proč mnoho CI/CD Úniky bezpečnostních nástrojů Miss Env Var

Většina bezpečnostních nástrojů se zaměřuje na skenování kódu nebo závislostí po dokončení sestavení.

Během provádění však dochází k únikům proměnných prostředí.

A pipeline může správně vkládat tajné kódy a přesto je odhalovat prostřednictvím protokolů nebo chování za běhu. V době, kdy skener problém detekuje, už může být tajný kód ohrožen.

To vytváří mezeru mezi detekcí a prevencí.

Týmy potřebují kontrolní mechanismy, které fungují, zatímco pipeline běží, ne po jeho skončení.

To se stává obzvláště důležitým, když týmy vkládají proměnné prostředí do procesu sestavení napříč více úlohami a kroky třetích stran bez běhových kontrol.

Jak doporučujeme zabezpečit vkládání proměnných prostředí

V praxi se účinná ochrana omezuje na několik konzistentních principů.

Uchovávejte tajemství mimo pipelineVkládejte je pouze za běhu. Omezte přístup na minimální požadovaný rozsah. Kdykoli je to možné, používejte krátkodobé přihlašovací údaje.

Zároveň sledujte, jak pipelines citlivými hodnotami přístupu. Neočekávané vzorce přístupu často indikují riziko dříve, než se únik stane viditelným.

Tento přístup posouvá bezpečnost z reaktivní detekce na proaktivní kontrolu.

Jak Xygeni pomáhá chránit CI/CD Tajná injekce

Xygeni se zaměřuje na bod, kde týmy vkládají proměnné prostředí do procesu sestavení a kde se tajné informace skutečně odhalují: uvnitř pipeline, během provádění.

Místo spoléhání se pouze na skenování po sestavení analyzuje Xygeni, jak pipelineÚlohy používají při běhu proměnné prostředí. To zahrnuje způsob, jakým se tajné klíče přesouvají mezi úlohami, jak k nim přistupují kroky sestavení a jak závislosti interagují s prostředím pro provádění.

Například Xygeni dokáže detekovat, kdy pipeline zpřístupňuje proměnné příliš široce, když krok riskuje tisk citlivých hodnot do protokolů nebo když se závislost neočekávaně pokouší o přístup k přihlašovacím údajům.

Ve stejnou dobu, guardrails přímo prosazovat politiku pipelineTýmy mohou blokovat nebezpečné sestavení, omezit tajný přístup ke konkrétním úlohám a zabránit rizikovým konfiguracím před jejich uvedením do produkčního prostředí.

Protože se to děje v rámci CI/CD pracovního postupu, vývojáři nemusí měnit způsob své práce. Zabezpečení se stává součástí pipeline, nikoli samostatný krok.

Díky tomu týmy získají přehled o tom, jak se tajné informace používají, kontrolují, jak jsou zveřejňovány, a snižují riziko úniků, aniž by se zpomalilo dodání.

Závěrečné myšlenky

Vkládání proměnných prostředí do procesu sestavení je nezbytné pro moderní CI/CD pracovní postupy. Bez řádné kontroly však může tento postup odhalit tajemství v několika fázích provádění.

Zároveň to však s sebou nese i riziko, které často zůstane bez povšimnutí.

Problém není v tom, zda používat proměnné prostředí, ale v tom, jak řídit jejich vystavení během provádění.

V moderních DevOps prostředích je mnohem důležitější předcházet únikům dat během procesu sestavení než jejich následná detekce.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni