Supabase Row Level Security (RLS)
Supabase RLS érthetően: grants, policies, auth.uid(), anon/authenticated role és miért kell a kliensből elérhető táblákat adatbázis-szinten védeni?
Röviden
A PostgreSQL Row Level Security soronkénti hozzáférési policyt enged. Supabase esetén ez különösen fontos, mert a Data API-n keresztül a kliens közvetlenül is elérhet adatbázis-erőforrásokat a neki adott publikus credential kontextusában.
Mit jelent a supabase row level security (rls)?
A PostgreSQL Row Level Security soronkénti hozzáférési policyt enged. Supabase esetén ez különösen fontos, mert a Data API-n keresztül a kliens közvetlenül is elérhet adatbázis-erőforrásokat a neki adott publikus credential kontextusában.
Két hozzáférési kapu
01
Client role
02
GRANT
03
RLS policy
04
row
05
allow/deny
Hogyan működik a gyakorlatban?
A hozzáférést több réteg együtt határozza meg: PostgreSQL grants szabja meg, milyen művelet érhető el az adott role-nak, RLS policy pedig azt, hogy a művelet mely sorokra engedélyezett. Auth információ policyből használható tulajdonosi vagy tagsági szabályhoz.
- RLS-t explicit engedélyezni kell a védett táblán.
- SELECT, INSERT, UPDATE és DELETE eltérő policyt igényelhet.
- USING és WITH CHECK más szerepet tölthet be olvasás/módosítás kontrollban.
- service_role privilegizált és szerveroldali secretként kezelendő.
Gyakorlati fejlesztői szemlélet
Írj allow és deny teszteket minden fontos szerepkörre és műveletre. Ne csak azt teszteld, hogy a tulajdonos látja a saját rekordját; azt is, hogy másik user biztosan nem látja vagy módosítja.
Gyakori hibák és félreértések
- RLS bekapcsolását önmagában kész policynek tekinteni.
- Kliensből service role kulcsot használni.
- Csak SELECT policyt tesztelni, miközben UPDATE vagy INSERT más szabályt kap.
Gyakori kérdések
Az RLS helyettesíti az összes backend jogosultságot?
Nem feltétlenül. Erős adatbázis-szintű kontroll, de üzleti workflow, rate limiting, külső integrációk és egyéb alkalmazáslogika továbbra is igényelhet szerveroldali réteget.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy