Když se dnes hovoří o IT bezpečnosti, nejčastěji přijde řeč na zabezpečení infrastruktury – antiviry, firewally, monitorovací systémy a umělá inteligence sledující provoz a vyhodnocující podezřelé aktivity. Na oné neprůstřelnosti se však musí začít pracovat už v momentech vývoje systému. Jak se vlastně takový zabezpečený software dělá? Právě to příklad spolupráce s Finbricks šikovně demonstruje.
Cleverlance se specializuje na vývoj softwaru „na míru“ pro zákazníky z oblasti financí, telekomunikací a automobilového průmyslu. Dodavatelé pracující pro tyto segmenty se musí řídit velice přísnými bezpečnostními standardy a splňovat certifikace, o které je navíc nutné ucházet se každý rok znovu. Totálně bezpečný vývoj softwaru ovšem začíná už dlouho před napsáním prvního řádku kódu – výběrem důvěryhodných členů týmu a zabezpečením prostředí, ve kterém bude tým pracovat. V Cleverlance proto mají svoje prostory rozdělené do zón podle důvěrnosti informací, se kterými se v dané zóně operuje. Přístup do jednotlivých zón není možný bez čipové karty s příslušným stupněm oprávnění, každá zóna má svá bezpečnostní opatření. Samotný vývoj softwaru, který pracuje s osobními údaji zákazníků, je možný jen v té nejpřísněji zabezpečené zóně. Obdobný přístup jako ve fyzickém světě se pak projevuje i v tom virtuálním – veškeré zakázky mají v informačních systémech firmy svá vlastní úložiště souborů, zdrojových kódů a dalších informací, ke kterým mají přístup pouze schválení členové týmu.
Startu vývoje předchází analýzy zadání a technického designu, který obvykle připravuje zkušený architekt, jehož úkolem je dohlédnout i na to, že v kódu budou použity všechny obvyklé postupy jeho zabezpečení. Protože útočníci jsou vždy minimálně o půl kroku napřed, programátoři po celém světě své zkušenosti sdílí. Například prostřednictvím mezinárodní organizace OWASP Foundation, která pravidelně zveřejňuje přehled nejčastěji zneužívaných „děr“ v softwaru a postupů, jak kód zabezpečit.
Ale teď už k samotné tvorbě kódu, což je možná navzdory očekávání velmi kreativní činnost. Programátor musí každý den vyřešit několik problémů, vymyslet, jak aplikaci napsat tak, aby dělala, co má. Střípky aplikace musí zapadnout do skládačky, na které se podílejí ostatní členové vývojářského týmu. Mimo jiné proto se musí v předstihu vymyslet a napsat testovací scénář, postup, podle kterého automatizovaný nástroj později otestuje fungování části kódu. Když vývojář kód dokončí, otestuje ho a odladí případné chyby, požádá vedoucího týmu, aby jeho „dílek“ začlenil do celkového kódu aplikace. Vedoucí musí nejdřív všechno zkontrolovat a teprve poté ho do aplikace zařadí. O každém kousku kódu díky tomu existuje přesný záznam
Ke slovu se dostávají i testeři, jejichž tým se mezitím věnuje psaní dalších testovacích scénářů, které mají ověřit fungování aplikace jako celku. Každý den, nejčastěji během noci, sestaví automatizovaný nástroj ze shromážděného zdrojového kódu funkční aplikaci a provede všechny testovací scénáře. Ráno už mají programátoři k dispozici podrobnou zprávu, v jakém stavu výsledek jejich včerejší práce je. Zatímco ještě před pár lety testování prováděli téměř výhradně lidé, v současnosti je obvyklým cílem dosáhnout alespoň 50% podílu automatizovaného testování. I to je doklad toho, jak velký skok testování za poslední tři čtyři roky udělalo.
A nejen ono. Na průběžné testy navazuje sada těch závěrečných, které zkouší celkovou funkčnost. Nejdůležitější jsou přitom ty penetrační, při kterých se „etičtí hackeři“ snaží odkrýt slabiny výsledného produktu. Pokud se vyvíjí online služba, jako jsou e-shopy nebo platební brány, podrobuje se zkoušce i jiná důležitá vlastnost softwaru – schopnost odolat vysoké zátěži a snaze o zahlcení systému.
Spousta kroků, že? Podle Jiřího Voldána, ředitele dodávky produktů Cleverlance, jsou ale nutné, aby všechno opravdu fungovalo a firma mohla software dodávat těm nejnáročnějším klientům, jako jsou finanční instituce. „S příchodem legislativy, jako je například GDPR, evropská směrnice o ochraně osobních údajů, jsme se rozhodli, že zavedeme ty nejpřísnější standardy, abychom pro zákazníky byli partnerem číslo jedna. Neznamenalo to jenom mít technické know-how a víc testovat. Znamenalo to i změnu procesů v HR, spoustu nových směrnic a opatření, stovky hodin školení našich kolegů – a mnoho stavebních úprav v našich kancelářích,“ říká.
Programátor musí každý den vyřešit několik problémů, vymyslet, jak aplikaci napsat tak, aby dělala, co má. Střípky aplikace musí zapadnout do skládačky, na které se podílejí ostatní členové vývojářského týmu.