Przejdź do treści
Radosław Kania

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ę.
  1. proces
  2. aktywo
  3. usługa
  4. 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.

  1. trigger w bazie
  2. webhook Hasury
  3. 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.