Free tool

Supabase RLS generator

Enter your tables and roles. Get complete Postgres Row Level Security policies — SELECT, INSERT, UPDATE, DELETE for every role on every table — plus the user_roles table and has_role() helper that prevents privilege escalation.

0 tables × 2 roles = 0 policies

Want the full spec?

BriefKit generates RLS + schema + auth + billing + 47 test cases.

$9 at briefkit.online →

FAQ

What is Row Level Security (RLS) in Supabase?

RLS is a Postgres feature that filters which rows a user can read or write based on policies you define. Supabase uses RLS as its primary authorization layer — every client query is scoped automatically.

Why store roles in a separate table instead of on profiles?

Roles on the profile open you to privilege escalation: any policy letting users edit their profile would let them promote themselves to admin. Use a dedicated user_roles table and a SECURITY DEFINER has_role() function inside policies.

Do I need RLS if I only call Supabase from a trusted backend?

If anything other than your trusted server can reach the database, you need RLS. Even server-only setups benefit from RLS as defense-in-depth in case a key leaks.