Row level security on every table
Every tenant-scoped table carries a forced row-level rule. Every request runs on a connection whose tenant was set first — without it the database hands nothing back. A forgotten filter in the code cannot expose another tenant’s data.
- Rules apply to the table owner too
- The tenant is set per request
- Background work runs in its own, deliberately set mode