Narnet: Podaci iza sedam brava

Multi-tenant nabava s Row Level Security i kriptografskom izolacijom. Čak i da netko probije app, baza ne da podatke krive firme.

Izazov

Više konkurentskih firmi na istom sustavu. Strah od curenja podataka bio je ogroman. "Logička" izolacija (samo WHERE tenant_id = X) nije bila dovoljna — jedan bug u kodu ili zlonamjerni upit i podaci druge tvrtke mogu iscuriti. Klijent je trebao garanciju na razini baze.

Rješenje

Implementirali smo Row Level Security (RLS) na razini PostgreSQL baze. Čak i da netko probije aplikaciju ili pokrene raw SQL, baza ne da podatke krive firme. Politike RLS-a provjeravaju kontekst sesije; nema "samo dodaj tenant_id u WHERE". Uz to — kriptografija na razini polja za najosjetljivije podatke, tako da čak i DBA vidi samo šifrirane vrijednosti.

Što smo napravili

  • Paranoična sigurnost (RLS) — svi upiti prolaze kroz RLS politike. Nema bypassa u aplikaciji.
  • Queue Workeri koji žvaču tisuće zahtjeva dok vi pijete kavu — teška obrada (izvještaji, masovni import) ide u red; korisnik dobiva rezultat kad je gotovo, bez blokiranja sučelja.
  • Audit i compliance — tko je što promijenio i kada; nemjenjivi log za reviziju.