search
Cloud blog – DevSecOps: Integrace zabezpečení produktu do každé fáze SDLC
Gitlab

DevSecOps: Integrace zabezpečení produktu do každé fáze SDLC

site-sdlc

Životní cyklus vývoje softwaru (SDLC) má od svého vzniku různé podoby. V této oblasti se uplatnily různé filozofie, z nichž každá přinesla vlastní soubor vylepšení.

Dnes je hnací silou většiny projektů vývoje softwaru DevOps. Protože však bezpečnost není integrována do DevOps, musí bezpečnostní týmy pracovat odděleně od vývojového týmu. Stručně řečeno, bezpečnost je mimo oblast vývoje a provozu a řeší se ručně, což destabilizuje automatizovaný cyklus DevOps.

Základním principem DevSecOps je integrace bezpečnosti do celého životního cyklu vývoje softwaru, od samého počátku procesu vývoje až po nasazení a údržbu. To znamená, že úvahy a postupy týkající se bezpečnosti nejsou považovány za samostatnou funkci nebo dodatečnou myšlenku, ale jsou integrovány do všech aspektů procesu vývoje softwaru. Pojďme se ponořit do podrobností a dozvědět se více o funkcích DevSecOps a o tom, jak životní cyklus DevSecOps implementovat.

 

Co nabízí DevSecOps?

Za prvé, DevSecOps vysvětluje, že “bezpečnost je zodpovědností každého z nás” a zároveň zachovává rychlost vývoje.

DevSecOps tak může existovat bez použití dalšího softwaru pro kontrolu zabezpečení. DevSecOps pomáhá snižovat prodlevy mezi dodáním kódu z platformy Dev do Security a zpět, čímž šetří čas a zdroje. Toho je dosaženo začleněním zabezpečení do vývoje, testování a nasazení softwaru.

Obvykle je Security SDLC překážkou inovací a rychlého vývoje. Díky DevSecOps je testovací kód podroben všem bezpečnostním kontrolám a projektové týmy nemají problémy se zabezpečením, jako jsou náhodné útoky, hackerské útoky a výpadky.

V procesu integrace zabezpečení poskytuje DevSecOps svým uživatelům několik klíčových výhod, a to

  • Používání sady testovacích postupů, včetně integračních, jednotkových atd. s cílem zabránit regresi a zlepšit kvalitu každé verze, čímž se ušetří značné množství času.
  • Rozpoznání zranitelností v každé fázi, což snižuje rizika projektu.
  • Práci na principu bezpečnosti projektu, který spočívá v tom, že vývojáři mají k dispozici automatizované mechanismy testování.
  • Použití vhodného přístupu k větvení a označování pro správu řízení zdrojových kódů (SCM) a automatické generování poznámek k vydání, které poskytují všem zúčastněným stranám úplné porozumění.
  • Zajištění úspěšnosti každého sestavení a konzistentního a účinného mechanismu řešení problémů v případě selhání, který podporuje spolupráci napříč týmy.
  • Umožnění členům týmu analyzovat klíčové ukazatele výkonnosti a zlepšovat proces DevSecOps.
  • Používání nasazení Blue-green k rychlé reakci na změny.
  • Umožnění týmům bezproblémově používat stejné procesy a nástroje pro aplikace bez ohledu na programovací jazyk, ve kterém jsou napsány.
  • Pomoc předcházet poškození dobré pověsti tím, že zabraňuje možnosti narušení díky rozšířenému auditu a monitorování.

 

Jaký je rozdíl mezi DevOps a DevSecOps?

blog-sdlc-cz

Jak se mění fáze SDLC při implementaci DevSecOps

  1. Plánování 

Fáze plánování DevSecOps je nejméně automatizovaná a je možná pouze za spolupráce, diskuse, přezkoumání a strategie bezpečnostní analýzy. Týmy musí provést bezpečnostní analýzu a vypracovat plán testování, který určí, kde, kdy a jak se testování projeví.

Oblíbeným nástrojem pro plánování DevSecOps je IriusRisk, nástroj pro kolektivní modelování hrozeb. Existují také nástroje pro spolupráci a komunikaci, jako je Slack, a řešení pro správu a sledování problémů, jako je Jira nebo Asana.

 

  1. Kód

Vývojáři mohou v této fázi vytvářet bezpečnější kód pomocí technologií DevSecOps, a to pomocí revize kódu, statické analýzy kódu a zachycení před odesláním, což jsou základní bezpečnostní postupy.

Každá revize a sloučení automaticky spustí bezpečnostní kontrolu nebo ověření, pokud jsou bezpečnostní technologie přímo integrovány do stávajícího pracovního postupu vývojářů v systému Git. Tyto technologie podporují různá integrovaná vývojová prostředí a mnoho programovacích jazyků. Mezi oblíbené bezpečnostní nástroje patří PMD, Gerrit, SpotBugs, CheckStyle, Phabricator a Find Security Bugs.

 

  1. Sestavení

Fáze “sestavení” začíná při vývoji zdrojového kódu repozitáře. Hlavním úkolem nástrojů pro sestavení DevSecOps je automatizovat bezpečnostní analýzu výstupního artefaktu sestavení. Statické testování aplikačního softwaru (SAST), jednotkové testování a analýza softwarových komponent jsou nejzásadnějšími bezpečnostními postupy. Do stávajícího CI/CD pipeline lze implementovat nástroje, které tyto testy automatizují.

Závislosti kódu třetích stran, které mohou pocházet z neznámého nebo nedůvěryhodného zdroje, často instalují a sestavují vývojáři. Závislosti na externím kódu navíc mohou neúmyslně nebo zákeřně přinést zranitelnosti a exploity. Proto je ve fázích DevSecOps klíčové tyto závislosti během vývoje prověřovat a kontrolovat z hlediska potenciálních bezpečnostních chyb.

Mezi nejoblíbenější nástroje pro vytvoření analýzy ve fázi sestavení patří Checkmarx, SourceClear, Retire.js, SonarQube, OWASP Dependency-Check a Snyk.

 

  1. Test

Fáze testování začíná, když je artefakt sestavení úspěšně vytvořen a doručen do staging nebo testovacího prostředí. Provedení kompletní sady testů vyžaduje značné množství času. Proto by tato fáze měla proběhnout rychle, aby se důležitější testy ušetřily na závěrečný krok.

V průběhu celého procesu testování se používají nástroje pro dynamické testování zabezpečení aplikací (DAST), které slouží k odhalování aplikačních toků, jako je autorizace, ověřování uživatelů, koncové body připojené k rozhraní API a SQL injection.

Na současném trhu je k dispozici řada placených i open-source testovacích nástrojů. Mezi podporované funkce a jazykové ekosystémy patří například BDD Automated Security Tests, Boofuzz, JBroFuzz, OWASP ZAP, SecApp suite, GAUNTLET, IBM AppScan a Arachi.

 

  1. Vydání

Kód aplikace musí být před uvolněním v rámci cyklu DevSecOps důkladně otestován. Tato fáze se zaměřuje na zabezpečení běhové architektury kontrolou hodnot konfigurace prostředí, včetně řízení přístupu uživatelů, přístupu k síťové bráně firewall a správy osobních údajů.

Jedním z hlavních problémů fáze uvolnění je princip nejmenších oprávnění (PoLP). PoLP znamená, že každý program, proces a uživatel potřebuje k provedení svého úkolu minimální přístup. To v sobě spojuje ověřování přístupových tokenů a klíčů API, které omezují vstup vlastníka. Bez tohoto ověřování by hacker mohl narazit na klíč, který by mu umožnil přístup k nepřiřazeným částem systému.

Ve fázi vydání jsou řešení pro správu konfigurace klíčovou součástí zabezpečení. V této fázi lze konfiguraci systému zkontrolovat a auditovat. Výsledkem je, že revize v úložišti správy konfigurace mohou být použity ke změně návrhu, který se tak stává neměnným. Mezi oblíbené nástroje pro správu konfigurace patří Terraform, Docker, Ansible, Chef a Puppet společnosti HashiCorp.

 

  1. Zavádění

Pokud předchozí proces proběhl dobře, je čas nasadit artefakt sestavení do produkční fáze. Během zavádění by měly být řešeny bezpečnostní problémy ovlivňující současný pracovní systém. Například je nutné pečlivě zkontrolovat veškeré rozdíly v konfiguraci mezi aktuálním pracovním prostředím a původními parametry staging a vývojového prostředí. Kromě toho by měly být zkontrolovány a ověřeny produkční certifikáty TLS a DRM v rámci přípravy na budoucí upgrady.

Fáze zavádění je vhodnou dobou pro použití ověřovacích nástrojů, jako jsou Osquery, Falco a Tripwire. Ty mohou shromažďovat data z aktivního systému a vyhodnocovat jeho fungování. Organizace mohou také uplatnit principy chaos engineeringu testováním systému, aby zvýšily svou důvěru v jeho odolnost vůči turbulencím. Je možné replikovat reálné události, jako jsou selhání pevného disku, ztráta síťového připojení a selhání serveru.

 

  1. Operace

Další kritickou fází je nepřetržitý provoz výrobku kde provozní pracovníci často provádějí pravidelnou údržbu. Provozní týmy musí často monitorovat zranitelnosti nultého dne. DevSecOps může pomocí nástrojů IAC rychle a efektivně chránit infrastrukturu organizace a zároveň zabránit proniknutí lidského faktoru.

 

  1. Monitorování

Narušení bezpečnosti lze předejít, pokud je zabezpečení neustále monitorováno kvůli abnormalitám. Proto je zásadní zavést spolehlivý nástroj pro průběžné monitorování, který pracuje v reálném čase a sleduje výkon systému a včas odhaluje případné zneužití.

blog-sdlc

Nejlepší postupy DevSecOps 

Zavedení filozofie DevSecOps vyžaduje kombinaci několika přístupů a odklon od tradičního způsobu myšlení. Níže jsou uvedeny tipy, jak zlepšit proces hned teď:

  • Změřte čas ztracený při řešení zranitelností po sloučení kódu. Dále najděte vzorec v typu nebo zdroji těchto bezpečnostních zranitelností a proveďte úpravy ke zlepšení.
  • Identifikujte problematická místa a rizika softwaru mezi vývojem a zabezpečením, vytvořte plán jejich řešení a poté tento plán realizujte.
  • Provádějte drobné změny v kódu. Více drobných aktualizací se snáze kontroluje a obhajuje a lze je zavést rychleji než monolitické změny projektu.
  • Automatizujte a integrujte bezpečnostní kontroly. Provádějte skenování všude, abyste zkontrolovali každou změnu zabezpečeného kódu a identifikovali bezpečnostní chyby u zdroje.
  • Zabudujte bezpečnostní skenování do pracovního postupu vývojáře. Integrované zabezpečení umožňuje vývojářům najít a opravit zranitelnosti ještě před uvolněním kódu. Snižuje také počet zranitelností otevřeného kódu zasílaných bezpečnostnímu týmu, což usnadňuje jejich kontrolu.
  • Poskytněte vývojářům přístup k hlášením SAST a DAST. To je sice důležité pro opravování, ale je to také cenný nástroj, který vývojářům pomáhá rozvíjet postupy bezpečného kódování.
  • Omezte nebo eliminujte všechny kaskádovité bezpečnostní procesy v rámci SDLC. V případě potřeby byste měli být vždy schopni změnit směr: zachovejte svou organizaci a bezpečnostní kontroly.
  • Poskytněte bezpečnostnímu týmu přehled o vyřešených i nevyřešených zranitelnostech v kódu, kde se zranitelnosti nacházejí, kdo je vytvořil a jaký je jejich stav pro nápravu.
  • Optimalizujte sadu nástrojů, aby se zaměstnanci mohli soustředit na jediné rozhraní: jediný zdroj pravdy.

 

Konkrétními případy

GitLab pomáhá společnostem zajistit bezpečnostní protokoly, které zajišťují integritu aplikace a soulad s bezpečnostní politikou společnosti. Níže uvádíme několik příkladů. 

Jedním z případů je příběh společnosti Hilti, která úspěšně implementovala GitLab pro zajištění vlastního SCM, CI/CD a bezpečnostního skenování kódu. Díky GitLabu se doba nasazení zkrátila ze tří hodin na 15 minut. Vývojové a testovací týmy nyní vlastní kód a mohou předem vidět potenciální zranitelnosti. Díky GitLabu mohli vyvíjet software ve vlastní režii rychleji, než kdyby používali složitou sadu nástrojů.

Dalším úspěšným příkladem je Dunelm, maloobchodní prodejce bytového textilu, který si vybral GitLab SaaS Ultimate pro integraci nástrojů a bezproblémové nasazení bezpečných pipelines na cloudové platformě AWS.

Když inženýrské týmy společnosti Dunelm přešly na cílenou bezserverovou architekturu, zjistily významné mezery ve stávajících nástrojích CI/CD. K integraci různých zásuvných modulů a rychlému vytváření robustních softwarových potrubí bylo zapotřebí více automatizace, lepší správy, zabezpečení a flexibility. 

Vedení společnosti Dunelm se rozhodlo pro GitLab CI/CD, aby technickým týmům umožnilo řešit výzvy v oblasti výkonu, testování a zabezpečení v rané fázi a v průběhu celého SDLC. Dnes mohou páry v rámci pipeline GitLab spouštět složitější kontroly. Díky skenování SAST/DAST jsou bezpečnostní chyby odhaleny mnohem dříve už ve vývoji a týmy je mohou okamžitě opravit.

Dalším dobrým příkladem je, jak GitLab optimalizoval práci společnosti Zebra, online platformy pro srovnávání pojištění. Zebra používala pro nasazení zejména GitHub a Jenkins a velké množství zásuvných modulů vedlo k potížím se správou a bezpečnostním problémům. Po analýze různých platforem se vedení rozhodlo pro GitLab, který nabízí pokročilé úložiště a možnosti CI/CD. Týmy navíc přešly z používání tří nástrojů na používání pouze GitLab CI/CD, což jim umožnilo proces plně automatizovat. GitLab také zajistil bezpečnost a soulad s požadavky certifikace SOC2.

Tyto případy ukazují, jak DevSecOps může organizacím pomoci výrazně zlepšit zabezpečení, snížit počet defektů, nasazení a dobu cyklu. Více informací o případových studiích společnosti GitLab si můžete přečíst zde.

 

Desetibodový kontrolní seznam pro testování zabezpečení 

Nakonec zvažte desetistupňový kontrolní seznam zabezpečení DevSecOps, který používá GitLab a který může vašemu týmu pomoci se sladit a zajistit, že je na správné cestě.

  1. Uvědomte si, co je ve vašem procesu DevSecOps nejnáročnější.

Analyzujte, kde zabezpečení vytváří problémy v procesu vývoje. Možná bude potřeba korigovat prioritizaci opravy zranitelností kódu nebo lidi zodpovědné za tento proces. Jakmile pochopíte chyby ve svém přístupu, můžete je začít opravovat.

  1. Definujte společný cíl.

Protože existuje mnoho předpokladů o bezpečnosti a odpovědnosti, nabídněte svému týmu jasné cíle, které vytvoří kulturu, v níž je snižování bezpečnostních rizik odpovědností všech.

  1. Proveďte audit, abyste zjistili, kde týmy plýtvají časem.

Pochopením toho, kolik času váš tým stráví opravami chyb po sloučení kódu, můžete identifikovat vzorce a provést úpravy ke zlepšení.

  1. Diskutujte o bolestivých místech a zranitelnostech.

Projednáním problémů s celým týmem můžete vytvořit plán jejich řešení. Tato diskuse pomáhá zajistit, aby byl vyslyšen hlas všech, a identifikovat problematická místa, která nemusí být zřejmá z chladných a komplexních dat.

  1. Provádějte malé, postupné změny kódu.

Ve společnosti GitLab je iterace jednou ze základních hodnot, proto když dělají změny, jsou malé, rychle proveditelné a následně se vyvíjejí. Stejný princip platí i pro přechod od DevOps k DevSecOps. Malé, postupné změny kódu se snadněji testují a zabezpečují a lze je zavádět rychleji než monolitické změny projektu.

  1. Automatizujte a integrujte.

Automatizace a integrace jsou pro DevOps klíčové, ale díky nim je také bezpečnostní skenování mocným nástrojem. Pokud se skenování provádí všude, bude zkontrolována každá změna kódu a zranitelnosti budou nalezeny mnohem dříve.

  1. Zpřehledněte hlášení o zabezpečení.

Místo toho, abyste výsledky statického testování bezpečnosti aplikací (SAST) a dynamického testování bezpečnosti aplikací (DAST) uchovávali izolovaně v rámci bezpečnostních týmů, zajistěte, aby tyto informace byly dostupné celému týmu, zejména vývojářům.

  1. Zjistěte, zda máte bezpečnostní procesy založené na principu Waterfallu.

V tradičním waterfall přístupu k bezpečnosti se zranitelnosti obvykle objevují na konci vývojového cyklu. Věnujte čas auditu stávajících pracovních postupů zabezpečení v rámci SDLC. Pokud zjistíte nějaké procesy ve stylu waterfallu, zvažte jejich odstranění nebo výrazné omezení závislosti na nich. Vždy byste měli mít možnost změnit směr.

  1. Zajistěte, aby měl bezpečnostní tým přístup k informacím o stavu zranitelností.

Bezpečnostní týmy potřebují lepší přehled o vyřešených a nevyřešených zranitelnostech, o tom, kde se nacházejí, kdo je vytvořil a jaký je jejich stav pro nápravu.

  1. Spojte své nástroje do jediné platformy DevSecOps.

Je snazší být zodpovědný za bezpečnost, když týmy potřebují správné nástroje. Nejlepší způsob, jak posunout zabezpečení kupředu, je komplexní platforma, která pomáhá týmům DevOps opustit waterfallové procesy, zefektivňuje komunikaci, umožňuje automatizaci a kontinuální integraci a poskytuje jediný zdroj přesných dat o výsledcích bezpečnostních skenů a stavu kritických zranitelností.

 

Závěr

Souhrnně lze říci, že implementace DevSecOps přináší následující výhody:

  • Pomáhá budovat důvěru zákazníků tím, že poskytuje specifické produkty a služby.
  • Zabraňuje zneužití zranitelností systému a zvyšuje celkovou bezpečnost systému.
  • Metodika DevSecOps umožňuje týmům rychle dosáhnout výsledků a zároveň zajistit nejvyšší úroveň zabezpečení.
  • Díky integraci zabezpečení do procesu vývoje softwaru od návrhu až po nasazení mohou týmy okamžitě identifikovat a eliminovat potenciální rizika, a tím snížit riziko škodlivých útoků.
  • DevSecOps pomáhá organizacím vyhnout se potenciálním hrozbám a udržet si konkurenceschopnost na trhu.

Implementace DevSecOps je nezbytná pro každý tým, který se chce chránit před škodlivými útoky a zároveň rychle a efektivně provádět vývoj. Integrace zabezpečení do SDLC navíc zajistí, že všechny nové aplikace budou bezpečné od samého počátku.

 

Gitlab a Cloudfresh

Společnost Cloudfresh je certifikovaným partnerem GitLabu pro poradenství, podporu a implementaci. Umožňujeme organizacím získat z řešení GitLab maximum. S naší pomocí zlepšují stovky týmů své SDLC díky našim odborným znalostem. Podívejte se na naše profesionální služby GitLab.

 

gitlab_badges_1

 

Naši odborníci na GitLab vám rádi poradí a zajistí správu a implementaci vysoce kvalitních technických řešení GitLab.

Pomocí tohoto odkazu získáte 30denní bezplatnou zkušební verzi licencí GitLab pro vlastní správu, profesionální onboarding, konzultace, odborné znalosti a technickou podporu od společnosti Cloudfresh.

Urychleme společně vaši transformaci DevSecOps

Spojte se se společností Сloudfresh