Ikony bez kompromisů
![](/upload/226-snimek-obrazovky-2021-02-24-v-12-29-49-articleImage-wide-2400x0.png)
V Heurece smýšlíme hodně produktově a naše týmy jsou postavené kolem jednotlivých produktových oblastí. Abychom se ale nehonili jen za vylepšováním nákupního procesu a leštěním „favorite“ tlačítka, zavedli jsme po vzoru Spotify modelu koncept tzv. technických skupin, nebo chcete-li guild.
Guildy jsou odpovědné za technický rozvoj celého našeho stacku. Každý vývojář má možnost být součástí jedné nebo více guild.
Máme tedy například:
Pojďme si nyní říct, čím se zabývala Security guilda první kvartál své existence.
Když začínáte s mikroslužbami, většinou je všechny zavřete do jedné společné virtuální sítě a autorizaci requestů necháte na vnějších službách. To jsou ty, které vystavují nějaké API do zbytku internetu. Ostatní služby uvnitř sítě se pak spoléhají na to, že ony „vnější“ služby odfiltrovaly cokoliv škodlivého a nezkoumají autenticitu ani autorizaci žádného požadavku.
Odsunout takhle veškerou odpovědnost na okrajové služby sice ušetří vývojářům nějaký ten kód, ale má i své nevýhody. Tou největší je, že pokud někdo překoná onu vnější vrstvu, dostane přístup k celé vnitřní infrastruktuře. A protože riziko, že se to podaří není nulové, začali jsme přemýšlet jak přidat další vrstvu zabezpečení.
Klasický přístup je navrhnout nějaký interní standard zabezpečení, který poté implementujete do všech služeb. V praxi však máme některé služby, kde by implementace takové věci nepřinesla žádné benefity a naopak služby, které by si zasloužily zabezpečit mnohem více než zbytek stacku.
Například služba, která poskytuje pouze hodnocení (počty hvězdiček a recenze) produktů, což jsou veřejně dostupné údaje, asi nepotřebuje zabetonovat tak důkladně, jako služba, která spravuje účty uživatelů.
Rozhodli jsme se, že služby klasifikujeme podle toho, jak jsou pro nás z hlediska zabezpečení citlivé.
Jak ale rozhodnout která služba je z hlediska zabezpečení citlivější a která méně?
Myšlenka je taková, že citlivé jsou pro nás především ty služby, které pracují s neveřejnými daty nebo osobními údaji. Můžeme tedy klasifikovat data, se kterými služby pracují a citlivost dané služby bude rovna nejcitlivějším datům, se kterými pracuje.
Potřebovali jsme už tedy jen metodu klasifikace citlivosti dat a když jsme se rozhlédli po internetu, narazili jsme na OWASP Risk Rating Methodology.
Vytáhli jsme si tedy entity a tabulky ze všech našich databází a začali je jednotlivě klasifikovat. Po vzoru již zmíněné OWASP Risk Rating Methodology jsme si určili sedm pro nás důležitých kritérií. Protože v jednom člověku by se všechna naše data nedala v rozumném čase ohodnotit, nastavili jsme si základní kotvy, o které se můžeme opřít:
Není velkým překvapením, že se nám jako nejcitlivější ukázaly entity jako „Uživatel“ a „Platba“, ale mezi nejcitlivější se dostaly i některé entity, o kterých by nás dříve ani nenapadlo přemýšlet jako o potencionálně citlivých.
U každé služby víme, kam a jaké má přístupy. Například pokud má nějaká služba přístup do naší „velké“ monolitické databáze, má přístup pouze k některým tabulkám a my jsme schopni pomocí privileges přesně určit ke kterým. Proto jsme mohli promítnout citlivost dat do jednotlivých služeb a určit tak citlivost samotných služeb.
Služby, které jen agregují data z jiných služeb, považujeme za tak citlivé, jako nejcitlivější ze služeb, na které jsou napojené.
Výsledkem našeho snažení je tedy prioritizovaný seznam, díky kterému víme kde začít s posilováním zabezpečení.
Nejhůře na tom jsou samozřejmě ty služby, které potřebují nejvíce zdrojů. V Heurece máme jednu deprecated, ale stále užívanou službu, která má přístup téměř všude. Nejlepší způsob, jak zajistit, aby byla služba naprosto bezpečná, je smazat ji. Čeká nás teď vymyslet plán, jak tuto službu poslat do věčných lovišť. Musíme tedy vymyslet čím ji nahradit.
Seznam kategorií