Authorization via Row Level Security
Control the data each user can access with Postgres Policies.
Stage:
General Availability
Available on self-hosted:
Yes
Supabase's Row Level Security (RLS) feature allows you to implement granular authorization rules directly in your Postgres database, securing your data at the row level.
Key features
- Policy-based access control: Create SQL rules to determine data access for each table.
- Role-specific policies: Define different access rules for authenticated and anonymous users.
- Flexible policy types: Implement SELECT, INSERT, UPDATE, and DELETE policies.
- Integration with Supabase Auth: Use built-in helper functions like auth.uid() and auth.jwt() in policies.
- Performance optimization: Utilize indexes and optimized query patterns for efficient policy execution.
- Bypass options: Use service keys or create roles with bypassrls privilege for administrative tasks.
Benefits:
- Enhanced data security: Control access to individual rows based on user attributes or roles.
- Simplified application logic: Reduce complex authorization checks in your application code.
- Consistency across clients: Ensure uniform access control regardless of data access method.
- Centralized policy management: Define and manage access rules directly in the database.
RLS is particularly valuable for:
- Multi-tenant applications requiring data isolation
- Healthcare systems needing patient data privacy
- Financial platforms with strict data access controls
- Collaborative tools where users should only see their own or shared data
- Any application dealing with sensitive or personalized data
Supabase's RLS feature provides a powerful tool for implementing sophisticated access control patterns with minimal application code, enhancing security while simplifying development.