Distributed Workflow Orchestration Platform  ·  View 29 of 31  ·  Assurance

Multi-Tenant Isolation Model

Four layers of isolation, what each one costs, and the parts that are honestly shared.

Editable source SVG draw.io All views
Layer 1 — Identity and admission
Layer 1 — Identity and admission
Every request carries a tenant
Every request carries a tenant
App registration per tenant
appid → tenantId map
App registration per tenant...
APIM subscription
own key · own quota
APIM subscription...
tenantId claim required
request rejected without it
tenantId claim required...
Tenant-scoped RBAC
operator roles per tenant
Tenant-scoped RBAC...
Layer 2 — Logical data isolation on shared infrastructure
Layer 2 — Logical data isolation on shared infrastructure
Tenant is part of every key
Tenant is part of every key
tenantId in partition key
definitions · dead-letters
tenantId in partition key...
Mandatory query filter
enforced in data layer
Mandatory query filter...
Redis key prefix
t:{tenantId}:*
Redis key prefix...
Container per tenant
user-delegation SAS
Container per tenant...
tenantId message property
filterable · auditable
tenantId message property...
Layer 3 — Runtime fairness
Layer 3 — Runtime fairness
Noisy neighbours are bounded, not blocked
Noisy neighbours are bounded, not blocked
Concurrency lease
gold 500 · silver 100 · bronze 20
Concurrency lease...
Priority class
queue selection per tier
Priority class...
Per-tenant circuit
one tenant cannot trip all
Per-tenant circuit...
Per-tenant SLO view
own dashboard + alerting
Per-tenant SLO view...
Layer 4 — Physical isolation, tier-1 escape hatch
Layer 4 — Physical isolation, tier-1 escape hatch
Bought, not default
Bought, not default
Dedicated SB namespace
Dedicated SB namespace
Dedicated node pool
taint + toleration
Dedicated node pool...
Dedicated Cosmos container
own RU allocation
Dedicated Cosmos container...
Dedicated Key Vault
own CMK
Dedicated Key Vault...
Deliberately shared — the honest part of the model
Deliberately shared — the honest part of the model
A fault here is a fault for everyone
A fault here is a fault for everyone
Control plane pods
all tenants, one deployment
Control plane pods...
AKS cluster
one control plane
AKS cluster...
Cosmos RU pool
shared autoscale ceiling
Cosmos RU pool...
Monitor workspace
RBAC-filtered, not separated
Monitor workspace...
Multi-Tenancy — Four Layers of Isolation, and What Is Shared
Multi-Tenancy — Four Layers of Isolation, and What Is Shared
Security / platform
Security / platform
Interface / broker
Interface / broker
Data store
Data store
Application we own
Application we own
Queue / topic
Queue / topic
Risk / gap
Risk / gap
Isolation is bought in layers, and the last box says what a bronze tenant does not get. A tier-1 tenant that needs a blast radius of one must buy layer 4; nothing in layers 1 to 3 delivers that.
Isolation is bought in layers, and the last box says what a bronze tenant does not get. A tier-1 tenant that needs a blast radius of one must buy layer 4; nothing in layers 1 to 3 delivers that.
v 1.0 · owner Data & AI Global Practice · date 2026-08
v 1.0 · owner Data & AI Global Practice · date 2026-08
Text is not SVG - cannot display

Decisions

  • Logical isolation by default with a physical escape hatch, rather than a namespace and cluster per tenant. Forty tenants would otherwise mean forty Service Bus namespaces and forty scaling decisions, and the cost curve breaks long before the security argument does.
  • tenantId is part of every partition key, cache key, container name and message property. Isolation enforced in the data layer rather than in each query is the difference between a boundary and a code review convention.
  • Layer 4 is bought, not default. A tenant that needs a blast radius of one gets a dedicated namespace, node pool, container and Key Vault, and pays for it as a premium tier.

What each layer stops

  • Layer 1 stops a tenant acting as another: no tenant claim, no request. Layer 2 stops cross-tenant data access even given a bug in one query path. Layer 3 stops a noisy tenant starving others. Layer 4 stops a shared-infrastructure fault reaching a specific tenant.
  • Concurrency by tier — gold 500, silver 100, bronze 20 — makes fairness a commercial parameter rather than an engineering constant.
  • Per-tenant circuit breakers mean one tenant's failing downstream cannot open the circuit for everyone using that task type.

What is shared, stated plainly

  • Control plane pods, the AKS cluster, the Cosmos RU pool and the Monitor workspace are shared. A fault in any of them is a fault for every tenant, and no amount of layer 1 to 3 isolation changes that.
  • The Cosmos RU ceiling is shared, so an extreme tenant can consume autoscale headroom others expected. Per-tenant RU throttling is a V2 item; today it is monitored, not enforced.
  • The Monitor workspace is RBAC-filtered, not separated. A tenant requiring physically separated telemetry cannot be served by this model without layer 4.