Z aktuálních zjištění společnosti Verizon plyne, že téměř 58 % firem se stalo v uplynulém roce cílem narušení bezpečnosti dat a ve 41 % případů za to mohly slabiny v softwaru. Takovéto incidenty mohou organizace připravit o značné finanční prostředky a poškodit jejich reputaci.
Nicméně, vývoj aplikací prošel značnými inovacemi. Současné firmy při tvorbě aplikací a softwaru dodržují zásady a využívají nástroje DevOps. V rámci DevOps se aplikace nevyvíjí a neuvolňuje jako celek, ale iterativně. Někdy dokonce dochází k uvolňování nových verzí denně. Hledání bezpečnostních nedostatků v takto frekventovaných verzích však není jednoduché. Právě z tohoto důvodu je bezpečnost jedním z klíčových aspektů v procesu DevOps.
Každý tým, který se podílí na vývoji aplikace, tedy vývoj, testování, provoz a produkce, nese odpovědnost za zavedení potřebných bezpečnostních opatření, aby se předešlo jakýmkoli zranitelnostem, které by mohly vést k narušení bezpečnosti. V tomto článku se zaměřím na doporučené postupy v oblasti zabezpečení DevOps pro bezpečný vývoj a nasazení aplikací.
Zavedení modelu DevSecOps
DevSecOps je aktuální a velmi diskutovaný termín v oblasti DevOps. Jedná se o základní bezpečnostní strategii, kterou začíná uplatňovat stále více IT společností. Jak již samotný název napovídá, jde o propojení vývoje, bezpečnosti a provozu.
DevSecOps představuje metodiku začleňování bezpečnostních nástrojů do celého životního cyklu DevOps. Bezpečnost se tedy stává nedílnou součástí procesu od samého počátku vývoje aplikace. Propojení DevOps a zabezpečení umožňuje organizacím vytvářet bezpečné aplikace, které nemají zranitelná místa. Tato metodika napomáhá i k odstranění bariér mezi vývojovými, provozními a bezpečnostními týmy v rámci organizace.
Níže uvádím několik základních postupů, které je nutné implementovat v modelu DevSecOps:
- V procesu integrace vývoje používejte bezpečnostní nástroje, jako jsou Snyk a Checkmarx.
- Všechny automatizované testy musí být vyhodnoceny bezpečnostními odborníky.
- Vývojové a bezpečnostní týmy musí spolupracovat na vytváření modelů hrozeb.
- Bezpečnostní požadavky musí mít v produktovém backlogu vysokou prioritu.
- Před nasazením je nutné zkontrolovat všechny zásady zabezpečení infrastruktury.
Kontrola kódu v menších celcích
Kód by měl být kontrolován po menších částech. Nikdy nekontrolujte rozsáhlý kód nebo celou aplikaci najednou, to by byla chyba. Kontrolujte kód postupně, po malých částech, abyste zajistili jeho důkladnou kontrolu.
Implementace procesu řízení změn
Je nezbytné zavést proces řízení změn.
Pokud dojde ke změnám v aplikaci, která je již v provozu, nechcete, aby vývojáři libovolně přidávali kód, funkce nebo je odebírali. V této fázi může pomoci pouze zavedení procesu řízení změn.
Každá změna, která má být v aplikaci provedena, by tedy měla projít procesem řízení změn. Jakmile bude změna schválena, může ji vývojář implementovat.
Neustálé vyhodnocování aplikací v produkci
Organizace často opomíjejí bezpečnost v okamžiku, kdy je aplikace v produkčním prostředí.
Aplikaci je nutné pravidelně kontrolovat. Měl by být pravidelně kontrolován její kód a prováděny bezpečnostní testy, aby se předešlo zavedení nových bezpečnostních mezer.
K tomuto účelu je možné využít software pro kontinuální bezpečnost, jako například Invicti, Probely a Intruder.
Školení vývojového týmu v oblasti bezpečnosti
Je nezbytné proškolit vývojový tým o osvědčených postupech v oblasti zabezpečení.
Například, pokud do týmu nastoupí nový vývojář, který není seznámen s SQL injection, je potřeba zajistit, aby byl informován o tom, co SQL injection je, co způsobuje a jaké škody může způsobit aplikaci. Nemusíte se zabývat technickými detaily. Je však nutné zajistit, aby vývojový tým byl neustále informován o nových pokynech pro bezpečnostní standardy a osvědčených postupech.
Existuje mnoho kurzů zaměřených na webovou bezpečnost, které lze využít.
Vývoj a implementace bezpečnostních procesů
Bezpečnost se neobejde bez procesů. Je nezbytné mít ve vaší organizaci definované specifické bezpečnostní procesy, které je nutné následně implementovat.
Po implementaci se mohou objevit situace, kdy bude nutné procesy revidovat, protože některé věci nefungují podle očekávání, nebo je proces příliš komplikovaný. Může to mít různé důvody, proto je důležité tyto procesy upravovat.
Ať se ale děje cokoliv, je nutné zajistit, aby po implementaci byly bezpečnostní procesy monitorovány a auditovány.
Implementace a prosazování bezpečnostní správy
Implementace a prosazování zásad správy je zásadní pro zavedení osvědčených bezpečnostních postupů DevOps. Je nutné vytvořit zásady správy, které musí dodržovat všechny týmy podílející se na vývoji aplikací, tedy vývoj, bezpečnost, provoz a další.
Každý zaměstnanec by měl těmto zásadám plně rozumět, proto musí být tyto zásady velmi transparentní. Je nutné sledovat, zda zaměstnanci vaší organizace dodržují zásady správy.
Standardy bezpečného kódování
Vývojáři se primárně soustředí na funkčnost aplikace, a bezpečnostní aspekty opomíjejí, protože nejsou jejich prioritou. S narůstajícím počtem kybernetických hrozeb je však nezbytné zajistit, aby vývojový tým znal osvědčené postupy v oblasti zabezpečení při psaní kódu.
Měli by být informováni o bezpečnostních nástrojích, které jim mohou pomoci identifikovat zranitelnosti v kódu již během jeho vývoje, aby vývojáři mohli kód okamžitě upravit a zranitelnost opravit.
Je vhodné začít používat nástroje pro automatizaci zabezpečení v procesech DevOps, aby se minimalizovala ruční práce.
Zavedením automatizačních nástrojů je možné nejen provádět testování, ale také vytvářet opakovatelné testy aplikace. S automatizovanými nástroji pro analýzu kódu, správu tajemství, správu konfigurací, správu zranitelností a další, je snadné vyvíjet bezpečné produkty.
Provádění posouzení zranitelnosti
Je nutné provádět posouzení zranitelnosti s cílem identifikovat slabá místa aplikace a odstranit je ještě před jejím nasazením do produkčního prostředí.
Toto posouzení by se mělo provádět pravidelně, a pokud se objeví bezpečnostní nedostatky, vývojový tým na nich musí pracovat a opravit je. K dispozici je několik nástrojů pro skenování a správu zranitelností, které lze použít k identifikaci slabin aplikace.
Zavedení správy konfigurací
Je důležité implementovat správu konfigurací.
Součástí správy konfigurací je i proces řízení změn, o kterém jsem se zmínil dříve. Je tedy nezbytné mít přehled o tom, jakou konfiguraci řešíte, jaké změny se v aplikaci provádějí, kdo je autorizuje a schvaluje. To vše spadá do správy konfigurace.
Implementace modelu nejmenších oprávnění
Mezi doporučené postupy zabezpečení DevOps patří i používání modelu nejmenších oprávnění. Nikdy nikomu nedávejte více oprávnění, než je nezbytně nutné.
Například, pokud vývojář nepotřebuje přístup ROOT nebo Admin, můžete mu přidělit přístup běžného uživatele, aby mohl pracovat na potřebných aplikačních modulech.
Oddělení sítě DevOps
V organizaci je vhodné používat segmentaci sítě.
Aktiva organizace, jako jsou aplikace, servery, úložiště dat, by neměly běžet na stejné síti, protože by to mohlo vést k problému s jediným bodem selhání. Pokud se hacker dostane do sítě organizace, mohl by získat kontrolu nad veškerými aktivy. Proto by každá logická jednotka měla mít samostatnou síť.
Například, vývojové prostředí a produkční prostředí by měly běžet na různých, izolovaných sítích.
Je možné také využít síťová řešení Zero-Trust.
Používání správce hesel
Přihlašovací údaje by neměly být ukládány v excelových tabulkách. Místo toho je lepší použít centralizovaného správce hesel.
Hesla by neměla být sdílena mezi uživateli. Nejlepší je ukládat přihlašovací údaje na bezpečném a centralizovaném místě, odkud si je může API volat a používat je pouze nezbytný tým s přístupem.
Implementace auditu a kontroly
Je důležité provádět pravidelné audity a kontroly. Měly by se provádět pravidelné audity kódu aplikace a prostředí bezpečnostních procesů, stejně jako dat, která aplikace shromažďuje.
Závěr
Toto jsou některé z klíčových bezpečnostních postupů DevOps, které musí organizace dodržovat při tvorbě bezpečných aplikací a softwaru. Zavedení bezpečnostních postupů v rámci procesu DevOps může organizaci ušetřit nemalé finanční prostředky. Je tedy vhodné začít implementovat bezpečnostní postupy, které byly popsány v tomto článku, pro bezpečné a rychlejší uvolňování aplikací.