← Natrag na blog

Usklađenost kao dio sustava, a ne kontrolna točka

Propisi su zapisani, rijetko se mijenjaju i jednako vrijede za svakog konkurenta. Dok smo KYB platformu dovodili do SOC 2 Type 1 spremnosti, pokazalo se da su bolja specifikacija od većine onih koje inače dobijemo.

U reguliranim industrijama usklađenost s propisima standardni je razlog zašto se ništa ne modernizira. Svaki prijedlog zapne kod pravnika, softver ostane star, a oko njega se gomilaju zaobilazna rješenja.

Kad smo za fintech startup radili KYB platformu — provjeru poslovnih kupaca prije odobrenja odgode plaćanja — naučili smo suprotno. UK GDPR, britanski propisi o sprječavanju pranja novca (MLR) i PSD2 traže puno, ali sve što traže negdje piše, mijenja se sporo i jednako vrijedi za svakog konkurenta. Zahtjev koji možete pročitati zapravo je specifikacija. Ostatak ovog teksta govori o tome što se dogodi kad ga tako i tretirate.

Odluka zbog koje platforma postoji

Svaki ekran u rješenju služi jednom pitanju: smije li ovaj kupac dobiti odgodu plaćanja? Da bismo na njega odgovorili, podaci se povlače iz poslovnih registara, kreditnih agencija, lista sankcija, provjere PDV broja i Open Bankinga. Pet izvora, a nijedna se dva ne slažu ni oko formata, ni oko brzine odgovora, ni oko toga koliko su često dostupna.

  • Svaki izvor stoji iza adaptera koji vraća isti oblik podataka; kod koji računa ocjenu nikad ne vidi odgovor u formatu pojedinog pružatelja
  • Svaka provjera je idempotentan korak u trajnom workflowu: istekne li vrijeme kod kreditne agencije, ponavlja se samo taj korak, a ne cijeli postupak od registra
  • Ocjena je ponderirana, a uz rezultat se spremaju i težine, ulazni podaci i vrijeme dohvata — pa se odluka može objasniti i mjesecima kasnije, što MLR upravo i traži
  • Ispad jednog pružatelja smanjuje pouzdanost ocjene, ali ne ruši platformu
poslovni registarkreditna agencijalista sankcijaprovjera PDV-aOpen Bankingadapteri → jedan oblikponderirana ocjenaodlukatrajni workflow: prekinuta provjera nastavlja se gdje je stala
Pet izvora, jedan oblik podataka, jedna ponderirana ocjena — i workflow koji se nastavlja ondje gdje je stao.

Odluke koje su zbog propisa ispale bolje

Svaka od ovih odluka počela je kao obveza, a završila kao bolje rješenje od onoga koje bismo sami odabrali.

  • Envelope encryption s ključem po klijentu ispod upravljanog glavnog ključa: brisanje po GDPR-u svodi se na uništavanje ključa, umjesto na traženje podataka po bazi i svim njezinim sigurnosnim kopijama
  • Passkeyji i potpisane sesije bez stanja na serveru: nema lozinke koja može iscuriti, nema površine za phishing i nema tablice sesija koju treba sinkronizirati između instanci
  • STRIDE analiza prijetnji prije prve linije koda: put prijave napadaču ne odaje ništa, pa ni vremenom odgovora
  • Strog Content Security Policy od prvog dana; naknadno ga uvesti u rješenje puno inline skripti košta višestruko
glavni ključ u KMS-uključ po klijentučitljivoključ uništen → nepovratnobrisanje je operacija nad ključem, a ne prolazak kroz tablicu
Svaki klijent ima svoj ključ, a iznad njih je glavni ključ u KMS-u. Brisanje znači uništiti ključ.

Jedan klijent, jedna granica štete

Platforma je multi-tenant, a u fintechu je to prije svega pitanje usklađenosti, pa tek onda arhitekture sustava: curenje podataka između dva klijenta nije propust jednog računa, nego cijele tvrtke.

  • Ograničenje na klijenta provodi se u podatkovnom sloju, a ne u svakom handleru posebno; upit bez klijenta greška je koju kod ne može ni izraziti
  • Na svakom buildu vrti se skup testova koji namjerno pokušava čitati podatke tuđeg klijenta i mora pasti
  • Ključ po klijentu znači da kompromitirani ključ pogađa jednog klijenta, a nikad sve korisnike

Jamstva idu u pipeline

SOC 2 Type 1 spremnost postala je izvediva tek kad smo jamstva izvukli iz dokumenata i prebacili u CI: integracijski testovi vrte se nad pravim branchevima baze, arhitektonska pravila provjeravaju se na svakom buildu, a cijelo se okruženje podiže iz koda — bez ručno složene infrastrukture i bez pohranjenih tajni. Revizoru koji može pročitati pipeline treba puno manje sastanaka.

Kontrola koju build može provjeriti preživi promjene u timu, pritisak rokova i petak popodne. Ona koja postoji samo u dokumentu ne preživi ništa od toga.

committestoviarhitekturadeploypravi branchevi bazepravila, a ne sastanciprovjera koju build može odraditi je provjera koja preživi
Svako jamstvo postaje vrata kroz koja se mora proći do produkcije.

Ako vaš posao oko usklađenosti završava u PDF-u, napisali ste specifikaciju. Sad je treba i izgraditi.

Imate isti problem?

Imate projekt u planu?