Best Practices für Supabase-RLS
RLS zu aktivieren, ist nur die halbe Arbeit. Freizügige oder fehlerhafte Richtlinien lassen Daten exponiert, selbst wenn RLS „an“ ist. Dies sind die Praktiken, die Supabase-Row-Level-Security Ihre Daten tatsächlich schützen lassen.
Schritt für Schritt
- 1
Standardmäßig verweigern, explizit erlauben
Aktivieren Sie RLS auf jeder Tabelle, damit der Zugriff standardmäßig verweigert wird, und fügen Sie dann eng gefasste Richtlinien hinzu. Nutzen Sie niemals eine „true“-/alles-erlauben-Richtlinie auf Tabellen mit privaten Daten.
- 2
Grenzen Sie Richtlinien auf den Nutzer ein
Nutzen Sie auth.uid(), um Zeilen auf ihren Besitzer zu begrenzen, z. B. USING (auth.uid() = user_id). Schreiben Sie pro Operation (select/insert/update/delete) eine eigene Richtlinie und nutzen Sie WITH CHECK bei Schreibvorgängen.
- 3
Schützen Sie vor Rechteausweitung
Halten Sie den service_role-Schlüssel nur serverseitig – er umgeht RLS. Legen Sie keine Views oder SECURITY DEFINER-Funktionen offen, die Daten an Ihren Richtlinien vorbei leaken.
- 4
Testen Sie als anonym und als Nutzer
Verifizieren Sie, dass anonyme Anfragen nichts zurückgeben und dass ein Nutzer die Zeilen eines anderen weder lesen noch schreiben kann. Führen Sie den kostenlosen RLS-Checker erneut aus, um das zu bestätigen.
Wollen Sie es verifiziert, nicht nur behoben?
Die Behebung ist der erste Schritt. Eine ClearedToShip-Prüfung bestätigt, dass die Korrektur tatsächlich hält, und gibt Ihnen eine unterschriebene, versicherte Freigabe zum Launch. Sichern Sie sich Early Access: