Overview
Zarna implements multi-layered data protection using Row Level Security (RLS), encryption, and strict access controls.Row Level Security (RLS)
Firm-Level Isolation
Every table has RLS policies ensuring users only access their firm’s data:- Defense in depth: Even if application logic fails, RLS protects data
- Zero trust: Database enforces isolation, not application
- Audit trail: PostgreSQL logs all access attempts
Policy Examples
- Read Policy
- Write Policy
- Role-Based Policy
Encryption
At Rest
- Database: Supabase encrypts all data at rest with AES-256
- File Storage: S3-compatible storage with server-side encryption
- Secrets: Environment variables encrypted in deployment platform
In Transit
- HTTPS/TLS 1.3: All API communication encrypted
- Certificate Pinning: Mobile apps (future)
- Mutual TLS: Service-to-service communication (future)
Application-Level Encryption
For sensitive fields (SSN, credit cards):Access Control
Role-Based Access Control (RBAC)
Data Retention
Automatic Cleanup
Soft Deletes
Compliance
GDPR Compliance
Right to Access
Right to Access
Users can export all their data via
/api/users/export-dataRight to Erasure
Right to Erasure
Complete data deletion via
/api/users/delete-accountData Portability
Data Portability
Export data in JSON format for transfer to other systems
Consent Management
Consent Management
Track user consents in database with audit trail
SOC 2 Compliance
- Audit logging for all sensitive operations
- Access control reviews
- Encryption at rest and in transit
- Regular security assessments
Monitoring
Security Events
Alerts
Set up alerts for:- Multiple failed login attempts
- Unusual access patterns
- Large data exports
- Permission changes
- RLS policy violations
