A forgotten query filter is all it takes to leak a tenant
In a shared deployment, tenant separation is only as strong as the weakest query. Row-level filters depend on every developer remembering to scope every read and write — and the day someone forgets, one company's processing records, vendor agreements, or risk assessments can surface in another's view.
That failure mode is hard to rule out and harder to prove gone. When a security team or auditor asks "how do you guarantee Client A cannot see Client B's data?", a filter-based answer invites a line-by-line code review you cannot win on confidence alone.
Managing each entity as a separate configuration and data store, without native isolation, only multiplies the surface where a boundary can quietly break.
What you can do with multi-tenant isolation
- Isolate each company at the data-store level — every collection is prefixed with the tenant identifier automatically.
- Scope every query to the active tenant — company context resolves per request, with no manual filter to add.
- Inherit isolation across all 100+ domain models — separation comes from the base model, not per-feature code.
- Route cross-company access through one sanctioned path — only explicit super-admin scope can read across tenants.
- Render and route per company — display name, identifier, and metadata drive the UI and navigation.
What it delivers to your program
- Tell auditors separation is structural, not procedural — boundaries are enforced by collection scoping, so you defend an architecture rather than a code-review promise.
- Remove a class of cross-tenant leakage — a query cannot reach another company's store without explicit scope, so the "someone forgot the filter" incident has nowhere to occur.
- Onboard a new entity or client without rebuilding isolation — each gets its own scoped data store under the same governed model.
- Give security teams one control to verify — a single scoping mechanism replaces the per-query tenant logic you would otherwise audit everywhere.
Built for compliance
This maps the feature to ISO 27001 and SOC 2 control intent; Priverion supports your evidence here and does not assert certification on your behalf.
| What DPMS does | Maps to | How |
|---|---|---|
| Separates tenant data at the store level | ISO 27001 — segregation in environments | Per-company collection prefixing applied to every model |
| Confines access to the active tenant by default | SOC 2 — logical access controls | Per-request company context scopes all reads and writes |
| Restricts cross-company access to one path | SOC 2 — least-privilege access | Cross-tenant queries require explicit super-admin scope |
Why Priverion
Unlike general-purpose GRC tools that bolt tenant separation onto a shared schema with row-level filters, DPMS makes isolation structural: a single CompanyHandler prefixes every collection with the company identifier, and all 100+ domain models inherit that scoping from one base class. There is no per-query tenant logic to forget. ROPA, DPIA, risk, and vendor data each stay within their company boundary through the same governed mechanism — the isolation is part of the platform, not bolted on per feature.


