PMFA
← Povratak na indeks
006

Multi-Tenancy bez RLS je teatar

Deljene baze podataka sa tenant ID-jevima nisu izolacija. Jedan propust ih deli od katastrofe.
Verzija 1.0.0 — Ratifikovano

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:

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:

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:

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:

RLS nije opciono.
To je minimalni zahtev za pravu izolaciju.

VI. Izvan RLS

Prava izolacija može zahtevati:

Izbor zavisi od:

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:

Cena pravilne izolacije je poznata i budžetabilna.
Cena propusta je nepoznata i neograničena.

Izaberite izolaciju.
Ne konvenciju.

Canonical text. Interpretations are invalid.
SHA-256: 7f9d7b0169d137e8c16c70095ea367827e27d0021ae4cced8e2c634175b0a37e