Fintech · GRC
Platforma GRC do zgodności z DORA
Platforma SaaS, w której instytucje finansowe prowadzą ryzyka, dostawców ICT i rejestr informacji wymagany przez DORA. Odpowiadałem za nią end-to-end.
- Branża
- Instytucje finansowe (compliance)
- Okres
- 11.2024 – 08.2026
- Rola
- Fullstack Engineer, odpowiedzialny end-to-end
- Stack
- TypeScript · React Router (SSR) · Mantine · Hasura/GraphQL · PostgreSQL · CASL · react-i18next · Vitest
- 10modułów sprzedawanych w pakietach
- 50+ekranów
- 200+tabel w bazie
- 70+słowników konfiguracyjnych
Kontekst
DORA to unijne rozporządzenie o odporności cyfrowej sektora finansowego. Od 2025 roku banki, ubezpieczyciele i firmy inwestycyjne muszą wiedzieć, od jakich dostawców ICT zależą, jak krytyczne są ich procesy i co się stanie, gdy któryś dostawca padnie. Muszą też raportować to nadzorcy w ściśle określonym formacie.
Platforma, przy której pracowałem, to SaaS dla takich instytucji. Ma 10 modułów sprzedawanych w pakietach: podmioty, procesy, aktywa, ryzyka, incydenty, umowy, dokumenty i oceny. Obsługuje też RODO.
Problem
Trzy rzeczy były trudne naraz:
- Rejestr informacji. Nadzorca chce dane w konkretnym formacie: EBA w CSV, KNF w XLSX. Rejestr zmienia się w czasie, a klient musi umieć pokazać, co i kiedy się zmieniło.
- Uprawnienia. Każda instytucja ma inny podział odpowiedzialności. Sztywne role nie wystarczały: ktoś może edytować ryzyka, ale tylko te, których jest właścicielem.
- Krytyczność. To, jak krytyczny jest dostawca, wynika z łańcucha zależności: proces korzysta z aktywa, aktywo z usługi, usługa z dostawcy. Ręczne przeliczanie tego po każdej zmianie nie wchodziło w grę.
- proces
- aktywo
- usługa
- dostawca
Co zrobiłem
Generator rejestru informacji DORA
Zbudowałem generator, który składa rejestr z danych prowadzonych w platformie i eksportuje go do formatów EBA (CSV) i KNF (XLSX). Rejestr ma wersje. Można porównać dwie wersje i zobaczyć różnice. Snapshoty robią się automatycznie.
Uprawnienia, które wyklikuje klient
Zaprojektowałem kontrolę dostępu, która łączy RBAC z uprawnieniami na poziomie rekordu (CASL). Uprawnienie to akcja × obszar × zakres, np. „edycja ryzyk, tylko własne rekordy”. Właściciel projektu nadaje je każdemu użytkownikowi osobno albo z gotowych szablonów. Dostęp do modułów zależy od wykupionego pakietu. Interfejs sam dostosowuje się do tego, co użytkownik może zrobić.
Nowy klient przy rejestracji dostaje domyślną konfigurację: 74 tabele kopiowane w jednej transakcji.
Automat krytyczności w bazie
Przeniosłem obliczanie krytyczności i wag zależności do SQL. Klient konfiguruje własne matryce. Po każdej zmianie danych przeliczenie odpala się samo: trigger w bazie → webhook Hasury → funkcja SQL. Takich triggerów jest ponad 20.
- trigger w bazie
- webhook Hasury
- funkcja SQL
Oceny i raporty
Zbudowałem kreator szablonów formularzy ocen: sekcje i pytania przeciągane myszką, wersjonowanie, edytor formuł. Z oceny generuje się PDF (Cloudflare Browser Rendering). Do tego dashboardy z heatmapą ryzyka i interaktywne drzewo powiązań między podmiotami.
Efekt
Rejestr informacji DORA powstaje z danych, które instytucja i tak prowadzi w platformie. Nie trzeba go składać ręcznie w arkuszach. Krytyczność zawsze odpowiada aktualnym zależnościom, a klient sam decyduje, kto co widzi i edytuje, bez angażowania zespołu deweloperskiego. Interfejs działa po polsku i angielsku, z glosariuszem terminów DORA/RODO.