Tenant isolation in the database
- Every organization is separated by PostgreSQL row level security, forced on every table that holds customer data.
- The application connects as a role that is never a superuser, never bypasses row level security and never owns the tables. The service verifies this each time it starts and refuses to run otherwise.
- Work across organizations, such as scheduled retention, runs in a separate system scope that each use must name, never under a customer’s identity.