Úvod
CI/CD potrubí je pilířem vývoje softwaru a jednou z hlavních součástí potrubí DevOps. Proces nepřetržité integrace/doručování (nebo implementace) definuje řadu kroků pro softwarové inženýry k dodávání nových programů.
Přestože se efektivita výroby s CI/CD zvyšuje, je tento proces náchylný k zanedbávání zabezpečení. Databáze, proprietární kód, přihlašovací údaje, klíče, tajemství a hesla používané v produkčním a testovacím prostředí jsou rovněž bezpečnostním rizikem.
Tento článek vysvětluje zabezpečení CI/CD, problémy a osvědčené postupy pro zabezpečení vaší softwarové produkce.
Co je zabezpečení CI/CD?
Zabezpečení CI/CD představuje kroky k ochraně automatizovaného výrobního potrubí softwaru. I když je celkové zabezpečení softwaru důležité, musí být spolehlivé i dodávky aktualizací a oprav softwaru.
CI/CD kanál je tok automatické integrace aplikací a dodání (nebo nasazení). Metoda implementuje časté aktualizace a opravy chyb, aby vyhovovaly potřebám klientů. V důsledku toho je hlavní důraz kladen na kompletní automatizaci dodávání softwaru pro kontinuální výrobu.
Nicméně přehlíženým faktorem v potrubí CI/CD je potrubí samotné zabezpečení. Prostřednictvím automatizace testů a neustálého monitorování by měli správci zabezpečení implementovat hodnocení zranitelnosti prostřednictvím různých kroků ve vývoji softwaru.
Běžné bezpečnostní výzvy v kanálu CI/CD
Při stínění potrubí CI/CD je třeba vzít v úvahu řadu bezpečnostních problémů:
- Soulad údajů v neprodukčním prostředí je zásadní výzvou. Čím více lidí pracuje na stejném projektu, tím vyšší je počet možných bodů porušení.
- Dobře definovaná pravidla řízení přístupu a zásady hesel pro všechny uživatele jsou nutností. V případě kompromisu připravený plán reakce na incident by měl existovat.
- Automatizace a orchestrace vyžadují četné části softwaru a jednorázové kódové bity. Průběžné monitorování a audit kódu a softwaru třetích stran.
Rychlé prostředí s neustálými aktualizacemi ponechává velký prostor pro nehody a nezamýšlené kompromisy. Nejlepším postupem je zabudovat zabezpečení do potrubí .
Osvědčené postupy zabezpečení CI/CD
Nejlepší postupy zabezpečení CI/CD závisí na infrastruktuře kanálu DevOps. Níže je deset obecných užitečných příruček k zabezpečení potrubí při práci v prostředí CI/CD.
1. Mapovat a modelovat hrozby
Proveďte průzkum potenciálních bezpečnostních hrozeb. Identifikujte body, kde jsou nutné další vrstvy zabezpečení , modelovat tyto hrozby a vytvářet cvičení ke zvýšení povědomí o potenciálních bezpečnostních problémech.
Většina bezpečnostních hrozeb se nachází v bodech připojení . Vše, co se připojuje k potrubí, by mělo být pravidelně opravováno a aktualizováno. Blokujte všechna zařízení, která odpovídajícím způsobem nesplňují požadavky na zabezpečení.
2. Zabezpečení před provedením
Vytvořte bezpečnostní kontroly před odesláním kódu do systému správy verzí. Většina IDE poskytuje bezpečnostní zásuvné moduly a během psaní varuje před zranitelností kódu.
Vzájemné hodnocení práce od nezkušených vývojářů před odevzdáním kódu do Gitu. Použijte menší kusy kódu a kontrolní seznamy, abyste zajistili, že kód splňuje všechny bezpečnostní protokoly a standardy. Vyvarujte se také kopírování a publikování klíčů API, tokenů a dalších citlivých dat.
3. Zkontrolovat Committed Code
Jakmile kód potvrdíte, znovu zkontrolujte, zda je vše rozumné. Použijte nástroje pro analýzu statického kódu získat zpětnou vazbu k odevzdání. Analytické nástroje nevyžadují, aby aplikace běžela, a mnohé z nich spolu se zprávou poskytují užitečné rady.
Odešlete zprávy o skenování kódu bezpečnostnímu týmu, aby zkontroloval případné další kroky. Používejte systémy sledování chyb a protokolujte výsledky, abyste zajistili, že všechny chyby budou opraveny a nebudou zapomenuty. Dále analyzujte historii Git pro jakoukoli podezřelou aktivitu.
4. Zabezpečte svůj Git
Git je pro hackery obzvláště cenným cílem. Ujistěte se, že vývojáři jsou vždy poučeni o tom, jak používat Git, a informováni o firemních postupech.
Použijte soubor .gitignore aby se zabránilo náhodnému odevzdání standardních a vygenerovaných souborů v mezipaměti. Mít lokálně uloženou a zabezpečenou zálohu jako součást celkové politiky zálohování.
5. Zkontrolujte zranitelnosti open source
Knihovny s otevřeným zdrojovým kódem jsou klíčovou součástí při vytváření aplikací. Software třetích stran je však náchylný ke změnám kódu, které mohou nepřímo ovlivnit zabezpečení vaší aplikace.
Nezapomeňte analyzovat a prohledat balíčky s otevřeným zdrojovým kódem na známé bezpečnostní problémy. Použijte nástroje pro analýzu složení softwaru k analýze softwaru, součástí a souborů třetích stran.
Nakonec označte všechny problémy udržet kvalitu kódu na maximu.
6. Automatizujte pomocí IaC
Infrastructure as code (IaC) poskytuje konzistentní podmínky vývoje a testování. Namísto ručního nastavování prostředí pomáhají nástroje IaC, jako je Ansible, Terraform nebo Puppet, neustále automaticky dodávat zabezpečenou infrastrukturu.
Poznámka: Zůstaňte na vrcholu nejnovějších požadavků na automatizaci s Bare Metal Cloud od společnosti phoenixNAP. Použijte naše API pro automatizované zřizování k vytvoření bezpečných dedikovaných serverových clusterů. BMC je ideálním řešením pro nástroje IaC, jako jsou Ansible a Terraform.
Nasaďte server Bare Metal Cloud již za 0,10 $/hod.
Další výhodou je, že IaC bezproblémově funguje v řetězci nástrojů DevOps. Neustále testované opakovaně použitelné konfigurace a vynucené postupy zajišťují vynikající výsledky výroby a kvalitní kód.
7. Monitor po nasazení
Po nasazení aplikace neustále skenujte a monitorujte, abyste zabránili jakýmkoli hrozbám. Monitorování pomáhá odhalit a napravit podezřelou aktivitu na základě poskytnutých dat.
Použijte nástroje jako Grafana nebo Kibana k vytvoření interaktivních vizuálních panelů, abyste dostali upozornění na jakoukoli podezřelou aktivitu.
8. Oddělte úkoly a vynucení oprávnění
Oprávnění zpomalují a dokonce narušují proces testování. Nicméně stanovení a vynucení oprávnění provádět pouze základní úkoly je z bezpečnostního hlediska zásadní.
Pokud jde o Git, definujte přístupové role pro každý repozitář a implementujte dvoufaktorové ověřování pro každé potvrzení. Pokuste se oddělit úkoly, abyste udrželi kanál bezpečný a zároveň měli nepřetržité doručování.
9. Uchovávejte přihlašovací údaje v bezpečí
Zabezpečte všechny přihlašovací údaje které poskytují přístup k softwaru a službám, jako jsou API tokeny, hesla, klíče SSH, šifrovací klíče atd. Nesprávné zabezpečení přihlašovacích údajů poskytuje cestu pro hackery, což vede k narušení dat a intelektuální krádeži.
Proto použijte platformu pro správu klíčů pro bezpečný a automatizovaný přístup ke klíčům. Software zajišťuje použití tajemství, když je to výslovně požadováno. Pro správu více složitých hesel použijte software pro správu hesel.
10. Pilně uklízejte
V prostředí CI/CD se procesy a úlohy pohybují rychle bez řádného vyčištění. Nezapomeňte vypnout všechny zbývající dočasné prostředky, jako jsou virtuální počítače, kontejnery nebo procesy. Kromě toho zaveďte obecně vhodnou údržbu zabezpečení a odstraňte veškeré nadbytečné nástroje a nástroje.