Multi-Tenancy bez RLS je teatar
Multi-tenancy nije funkcionalnost.
Multi-tenancy je zahtev za izolacijom.
Bez Row-Level Security, multi-tenancy je teatar.
I. Obećanje multi-tenancy-ja
Multi-tenancy obećava:
- troškovnu efikasnost kroz deljenu infrastrukturu
- pojednostavljene operacije
- brže skaliranje
Ove prednosti su realne.
One su takođe opasne bez pravilne izolacije.
II. Uobičajena implementacija
Većina multi-tenant sistema implementira izolaciju kroz tenant ID-jeve.
Svaka tabela ima tenant_id kolonu.
Svaki upit uključuje WHERE tenant_id = ?.
Ovo nije izolacija.
Ovo je konvencija.
III. Konvencija nije bezbednost
Konvencija se oslanja na:
- programere koji se sećaju da dodaju filter
- code review koji hvata propuste
- testiranje koje pokriva sve putanje
- nikog ko pravi grešku
Konvencija zakazuje na skali.
Konvencija zakazuje pod pritiskom.
Konvencija zakazuje eventualno.
Kada konvencija zakaže, podaci prelaze granice tenant-a.
IV. Scenario propusta
Jedna nedostajuća WHERE klauzula.
Jedna debugging sesija sa povišenim pristupom.
Jedna migraciona skripta bez filtera.
Jedan tenant vidi podatke drugog tenant-a.
Propust može biti:
- slučajan
- neotkriven
- neprijavljen
Ali se desio.
Obećanje izolacije je prekršeno.
V. Row-Level Security
Row-Level Security (RLS) sprovodi izolaciju na nivou baze podataka.
Sa RLS:
- baza podataka sprovodi granice tenant-a
- aplikacioni kod ne može zaobići izolaciju
- nedostajući filteri ne mogu eksponirati podatke
- povišenje zahteva eksplicitnu akciju
RLS nije opciono.
To je minimalni zahtev za pravu izolaciju.
VI. Izvan RLS
Prava izolacija može zahtevati:
- Razdvajanje šema: svaki tenant u sopstvenoj šemi
- Razdvajanje baza podataka: svaki tenant u sopstvenoj bazi
- Fizičko razdvajanje: svaki tenant na sopstvenoj infrastrukturi
Izbor zavisi od:
- regulatornih zahteva
- osetljivosti podataka
- posledica propusta
Više razdvajanja znači više izolacije.
Više izolacije znači više poverenja.
VII. Konačni zaključak
Multi-tenancy bez RLS je teatar.
Stvara privid izolacije.
Ne stvara izolaciju.
Kada izolacija zakaže:
- poverenje kolabira
- nastaje odgovornost
- oporavak je nemoguć
Cena pravilne izolacije je poznata i budžetabilna.
Cena propusta je nepoznata i neograničena.
Izaberite izolaciju.
Ne konvenciju.
SHA-256: 7f9d7b0169d137e8c16c70095ea367827e27d0021ae4cced8e2c634175b0a37e