RLS coverage
Enumerate non-system tables and identify where Row Level Security is disabled or enabled with zero policies.

Supabase security
Reviewed by Sentrail · Updated August 17, 2026
Audit scope
A useful audit combines the live project's database posture with the application code that connects to it.
Enumerate non-system tables and identify where Row Level Security is disabled or enabled with zero policies.
Surface policy coverage for review. Policy presence alone does not prove that ownership and tenant expressions are correct.
Read Supabase's security and performance advisor lints, including exposed views, definer functions, unsafe function search paths, and auth configuration findings.
Search connected repositories for service-role credentials and other secrets in client-reachable files or public-prefixed environment variables.
Row Level Security
Supabase browser clients commonly use the public anon key. That key is expected to be visible; the database's RLS policies are what constrain its data access. The service-role key is different: it bypasses RLS and must stay in trusted server-side environments.
An audit should distinguish tables with RLS off, tables with RLS on and no policies, and tables whose policies need contextual review. A permissive policy can be syntactically valid and operationally dangerous.
Expected in clients
Treat exposure as part of the Supabase client model, then verify that RLS and grants limit what the resulting role can access.
Server only
Treat any client-reachable or committed service-role credential as high risk because it can bypass RLS.
Advisor evidence
Review exposed views, security-definer behavior, function search paths, and grants that can create paths around expected table policies.
Separate boundaries
Database-table coverage does not automatically validate Storage policies, custom APIs, Edge Functions, or every auth flow.
Read-only workflow
Connect Supabase through OAuth and GitHub through the GitHub App so the audit can read current project and repository evidence.
Collect RLS state, policy counts, advisor lints, auth posture, credential matches, and security-relevant migration context.
Write a proposal with its scope and diff. Nothing changes until a reviewer approves; repository changes are draft pull requests only.
Migrations
Generated migrations can change grants, policies, functions, triggers, schemas, and exposed data paths even when the UI feature looks small.
Visible audit evidence
Illustrative representation of the evidence categories Sentrail records; not a customer result.
Connect the live project and its repository, collect current RLS, advisor, secret, dependency, and deployment evidence, and keep every proposed fix under your control.