Téma vývoje bezpečného SW lze chápat jako službu ve smyslu designu služeb. Design služeb se zaměřuje na plánování a organizaci služeb tak, aby byly pro uživatele či zákazníka co nejpřístupnější a nejefektivnější.
V uvedeném kontextu je uživatelem či zákazníkem organizace nebo kdokoliv zapojený v procesu vývoje bezpečného SW, kdo potřebuje zajistit jeho bezpečnost. Tento uživatel či zákazník může být například interní vývojový tým uvnitř společnosti nebo třeba externí společnost, která si najímá poskytovatele služeb pro zabezpečení svého SW vývoje – atp. Cílem designu služeb je zajistit, aby tyto služby byly pro tyto uživatele či zákazníky co nejpřístupnější a nejefektivnější.
Design služeb (Service Design) je činnost plánování a uspořádání lidí, infrastruktury, komunikačních a materiálních složek služby s cílem zlepšit její kvalitu a interakci mezi poskytovatelem služby a jejími uživateli či zákazníky. [1]
Vývoj bezpečného SW (secure software development) je přístup k tvorbě SW, který zahrnuje praktiky a techniky zajišťující ochranu před vznikem zranitelností, hrozbami, incidenty a podobně. Tento proces zahrnuje celou řadu bezpečnostních opatření, od bezpečného návrhu a kódování až po testování a nasazení SW.
OWASP SAMM (Software Assurance Maturity Model) (viz článek Proč by nás měl zajímat OWASP SAMM?) je rámec, který organizacím pomáhá definovat a realizovat strategie pro zajištění bezpečnosti SW. Poskytuje strukturovaný přístup k hodnocení a zlepšování bezpečnostních postupů během celého životního cyklu vývoje SW.
V uvedeném kontextu je službou myšleno konkrétní opatření a aktivity, které organizace implementuje za účelem podpory a zlepšení vývoje bezpečného SW (v tomto textu podle OWASP SAMM). Taková služba (či služby) je navržena tak, aby systematicky zlepšovala bezpečnostní aspekty vývoje SW (a byla v souladu s rámcem OWASP SAMM).
V praxi při aplikaci designu služeb na vývoj bezpečného SW je důležité se soustředit na:
- Potřeby uživatelů/zákazníků: Identifikace a porozumění potřebám všech zúčastněných stran, včetně samotné organizace, vývojářů, testerů, bezpečnostních analytiků a dalších osob zapojených do procesu vývoje bezpečného SW.
- Infrastruktura a nástroje: Zajištění, že infrastruktura a nástroje používané pro vývoj (a testování) SW jsou vhodné a efektivní pro zajištění bezpečnosti. To zahrnuje nasazení nástrojů pro statickou a dynamickou analýzu kódu, různá bezpečnostní testování, řízení zranitelností aj.
- Procesy a postupy: Definování jasných procesů a postupů pro vývoj bezpečného SW, včetně bezpečného návrhu, kódování, testování a nasazení. Tyto procesy by měly být dobře zdokumentované a snadno pochopitelné pro všechny členy týmu.
- Vzdělávání (i školení): Poskytování soustavného vzdělávání (a školení) pro vývojáře a další zúčastněné o nejnovějších bezpečnostních hrozbách, technikách, osvědčených postupech… To pomáhá zajistit, že celý tým je vybaven znalostmi potřebnými k tomu, aby mohl efektivně implementovat bezpečnostní opatření.
- Komunikace a spolupráce: Podpora otevřené komunikace a spolupráce mezi všemi členy týmu a zúčastněnými stranami. To zahrnuje pravidelné meetingy, zpětnou vazbu a sdílení informací o bezpečnostních otázkách a jejich řešeních.
- Monitorování a zlepšování: Zavedení mechanismů pro neustálé monitorování a zlepšování bezpečnostních opatření a procesů. To zahrnuje pravidelné audity, hodnocení a aktualizace bezpečnostních politik a postupů.
- Přístupnost a uživatelská přívětivost: Zajištění, že bezpečnostní opatření a nástroje jsou snadno použitelné a přístupné pro všechny relevantní členy týmu, aby byla minimalizována možnost chyb a maximalizována efektivita.
- Atd.
Soustředění na tyto aspekty pomáhá zajistit, že služby navržené pro podporu vývoje bezpečného SW jsou efektivní, uživatelsky přívětivé a schopné reagovat na měnící se bezpečnostní hrozby a požadavky.
Běžnou (bohužel) praxí často bývá, že pravidla pro vývoj bezpečného SW jsou direktivně diktována oddělením bezpečnosti, které nemusí být přímo zaměřeno na vývoj SW. To může být problém z několika důvodů:
- Nedostatečné porozumění vývojovým procesům: Oddělení bezpečnosti nemusí mít hluboké znalosti o specifických vývojových procesech a technikách, což může vést k implementaci neefektivních nebo nepraktických bezpečnostních opatření.
- Nízká angažovanost vývojářů: Direktiva zvenčí může být vnímána jako vnucená, což může snižovat motivaci a angažovanost vývojářů při implementaci bezpečnostních opatření. Vývojáři mohou vidět bezpečnost jako překážku – nikoliv bezpečnost jako integrální součást svého pracovního procesu.
- Komunikační bariéry: Nedostatek komunikace a spolupráce mezi bezpečnostním oddělením a vývojovými týmy může vést k nejasnostem, nedorozuměním a problémům při implementaci bezpečnostních opatření.
- Omezená flexibilita: Direktivní přístup často neumožňuje dostatečnou flexibilitu pro přizpůsobení se specifickým potřebám a kontextu jednotlivých projektů nebo týmů.
- Atd.
Proto je rozumnější perspektiva designu služeb, která nabízí několik klíčových výhod:
- Uživatelsky orientovaný přístup: Design služeb klade důraz na porozumění potřebám a zkušenostem vývojářů a ostatních zúčastněných stran. To umožňuje navrhnout bezpečnostní opatření, která jsou praktická a přizpůsobená konkrétnímu kontextu.
- Spolupráce a komunikace: Design služeb podporuje otevřenou komunikaci a spolupráci mezi bezpečnostními odborníky a vývojovými týmy. To zajišťuje, že bezpečnostní opatření jsou dobře pochopena a přijata všemi zúčastněnými stranami.
- Integrovaný přístup: Bezpečnost je integrována do všech fází vývoje SW, což umožňuje systematické a konzistentní zlepšování bezpečnostních postupů a technik.
- Flexibilita a adaptabilita: Design služeb umožňuje přizpůsobit bezpečnostní opatření specifickým potřebám jednotlivých projektů a týmů, což zvyšuje jejich efektivitu a účinnost.
- Zvýšená angažovanost: Vývojáři a ostatní členové týmu se cítí více zapojeni a odpovědní za bezpečnost, což zvyšuje jejich motivaci k dodržování bezpečnostních opatření a k aktivnímu přispívání k bezpečnosti celého systému.
- Atd.
Přístup zohledňující design služeb tedy umožňuje vytvořit efektivnější, uživatelsky přívětivější a flexibilnější bezpečnostní opatření, která jsou lépe integrována do vývojového procesu a podporují celkovou bezpečnost SW.
Nástroje designu služeb (Service Design) mohou skutečně výrazně přispět ke zlepšení procesu a výsledků vývoje bezpečného SW. Každý z uvedených nástrojů (technik, metod, …, jak chceme) nabízí jedinečné výhody, které mohou pomoci lépe pochopit potřeby různých zainteresovaných stran, identifikovat klíčové body pro zlepšení, vizualizovat procesy a usnadnit spolupráci a komunikaci.
V oblasti vývoje bezpečného SW lze uplatnit několik specifických nástrojů service designu, které mohou výrazně přispět ke zlepšení celkového procesu a výsledků. Například:
- Personas (Persony): Vytvoření person vývojářů, testerů, bezpečnostních specialistů, uživatelů SW atd. Tyto personas pomáhají pochopit potřeby, cíle a bolesti jednotlivých skupin a jednotlivců, což umožňuje navrhnout bezpečnostní opatření, která jsou přizpůsobena jejich specifickým požadavkům a způsobu práce.
- Customer Journey Mapping (Mapa zákaznické cesty): Mapování celého procesu vývoje SW z perspektivy různých rolí (např. vývojář, tester, bezpečnostní analytik). Tento nástroj umožňuje identifikovat klíčové body, kde může být bezpečnost zlepšena nebo kde mohou vznikat problémy. Pomáhá také identifikovat příležitosti pro zlepšení uživatelské zkušenosti a efektivity.
- Service Blueprinting (Blueprint služeb): Vytvoření podrobného blueprintu, který mapuje všechny kroky, procesy, nástroje a zúčastněné osoby zapojené do vývoje a údržby bezpečného SW. Tento nástroj pomáhá vizualizovat, jak jednotlivé komponenty spolupracují a kde lze zavést nebo zlepšit bezpečnostní opatření.
- Prototyping (Prototypování): Rychlé vytváření prototypů bezpečnostních funkcí a postupů, které lze testovat a iterovat na základě zpětné vazby. To umožňuje efektivní identifikaci problémů a jejich řešení před plnou implementací.
- Service Design Workshops (Workshopy service designu): Organizace workshopů, kde se zapojí různé zainteresované strany (vývojáři, bezpečnostní specialisté, uživatelé) s cílem společně identifikovat problémy a navrhnout řešení. Tyto workshopy podporují kolaboraci a kreativní přístup k řešení bezpečnostních výzev.
- Stakeholder Mapping (Mapování zainteresovaných stran): Identifikace a analýza všech relevantních zainteresovaných stran v procesu bezpečného vývoje. Pomáhá pochopit jejich vliv, zájmy a potřeby, což umožňuje efektivnější komunikaci a koordinaci bezpečnostních aktivit.
- Atd.
Uplatnění těchto nástrojů service designu v kontextu vývoje bezpečného SW přispívá k vytvoření uživatelsky přívětivějších, efektivnějších a bezpečnějších procesů a produktů.
OWASP SAMM (Software Assurance Maturity Model) může přispět ke všem výše uvedeným bodům. Tento model poskytuje strukturovaný přístup k bezpečnému vývoji SW a pomáhá organizacím identifikovat a implementovat nejlepší postupy. Jak může OWASP SAMM přispět k výše uvedenému? Například:
- Uživatelská/zákaznická perspektiva: OWASP SAMM pomáhá organizacím lépe pochopit a zohlednit potřeby různých zainteresovaných stran v procesu vývoje SW. To zahrnuje nejen technické aspekty, ale i organizační a lidské faktory, což umožňuje navrhovat bezpečnostní opatření, která jsou efektivní a přitom nekomplikují práci vývojářům ani nepohodlí uživatelům.
- Procesní integrace: SAMM poskytuje konkrétní pokyny a osvědčené postupy pro integraci bezpečnostních aktivit do celého životního cyklu vývoje SW. To zahrnuje fáze od plánování a návrhu přes implementaci až po údržbu. SAMM také pomáhá s integrací bezpečnostních kontrol do existujících procesů DevOps, CI/CD, …, což zajišťuje, že bezpečnost je nedílnou součástí vývojového procesu.
- Kvalita a konzistence: SAMM nabízí framework pro měření a zlepšování bezpečnostních postupů. Tím zajišťuje, že bezpečnostní opatření jsou aplikována konzistentně napříč různými projekty a týmy. Model zahrnuje pravidelná hodnocení a auditování, což podporuje vysokou kvalitu a konzistenci.
- Vzdělávání a podpora: SAMM zdůrazňuje důležitost vzdělávání v oblasti bezpečnosti. Obsahuje konkrétní směrnice pro vytváření školících programů a zvyšování povědomí o bezpečnosti mezi vývojáři a dalšími zainteresovanými stranami. To zahrnuje také mentoring a podporu při implementaci bezpečnostních opatření, což pomáhá zvyšovat celkovou úroveň bezpečnostní kultury v organizaci.
- Měření a zpětná vazba: SAMM zahrnuje metriky a KPI pro monitorování účinnosti bezpečnostních praktik. Poskytuje nástroje pro průběžné hodnocení bezpečnostní zralosti organizace (či projektu) a zpětnou vazbu, která umožňuje neustálé zlepšování procesů. Tento přístup pomáhá identifikovat slabá místa a optimalizovat bezpečnostní strategie.
- Atd.
OWASP SAMM je tedy komplexní nástroj, který může výrazně přispět ke zlepšení všech aspektů bezpečného vývoje SW v rámci principů designu služeb.
Aplikace principů designu služeb na vývoj bezpečného SW může výrazně zlepšit efektivitu, uživatelskou přívětivost a bezpečnost SW procesů. OWASP SAMM poskytuje strukturovaný přístup, který pomáhá organizacím integrovat bezpečnost do všech fází vývoje, zvyšovat kvalitu a konzistenci bezpečnostních opatření, podporovat vzdělávání a spolupráci, a umožňuje měření a zpětnou vazbu pro kontinuální zlepšování. Tento přístup přispívá k lepšímu pochopení potřeb uživatelů a optimalizaci bezpečnostních strategií.
Zdroje
[1] https://en.wikipedia.org/wiki/Service_design#cite_note-1, cit. 3. 7. 2024