Tenant isolation in CDMS
How CDMS keeps customers apart: one database per tenant, where the tenant of a request comes from, how it is switched, and which rules are never broken.
Topics in this subject area
- 1.SINGLE and MULTI
The two operating modes of data storage: one database for everyone or one per tenant. What changes as a result.
- 2.Where the tenant of a request comes from
The tenant is in the token. This page explains how it is read and what happens without a tenant.
- 3.Which database? The persistence target
The decision whether an access lands in the system DB or in the tenant DB, as a complete decision table. Without a fallback to the system DB.
- 4.Tenant switch by header
How an authorized person works for another tenant with the
tenantheader, and why a switch without the role is silently ignored. - 5.User switch by header
How an authorized person works on behalf of another person, with their own roles or with those of the target person, and which checks come first.
- 6.Is the tenant served?
Before every access the filter chain asks CIAS whether the tenant is active. This page gives the CDMS view; the details are in the CIAS section.
- 7.Databases, pools, migration
Every tenant has its own database with its own connection pool. When it is created and how its schema is migrated.
- 8.Rules that are never broken
The security invariants of tenant isolation: no fallback to the system DB, separate type sets, only three places may set a tenant.