← Back to Field notes
WINROVE / Engineering: multi-tenancy

Designing tenant isolation with row-level security

Educational notes on tenant isolation, query scope and authorization. Verify actual deployed policies and permissions before relying on a control.

April 22, 2026 · Winrove Team

Cover illustration for Where we put the multi-tenant boundary, and why we put it in the database.

Review a proposed engineering pattern

This article is a hypothetical design exercise. It does not establish a current Winrove implementation, tenant, data-processing scope, test result or operational control. A deployed system requires review of its actual source, configuration, permissions, tests and applicable contractual records.

Check isolation with actual evidence

Identify each data owner and permitted recipient. Review the actual policies and roles, and test cross-organization access using an authorized fixture. Inspect pool reuse, administrative access and error behavior rather than inferring isolation from a sample policy.

Illustrative snippets

All tenant identifiers, actors, events and records below are synthetic examples. These snippets are preserved for technical reading; they are not proof of deployed behavior or customer history.

ALTER TABLE onboardings ENABLE ROW LEVEL SECURITY;

CREATE POLICY tenant_isolation ON onboardings
  USING (tenant_id = current_setting('app.current_tenant')::uuid);

Record what was verified

Retain the tested version, configuration, permitted scope, observed result and remaining limits. Keep proposed behavior separate from a verified production result.