WHERE tenant_id = ?.
The difference matters because of what happens when someone tests it. A filter
is code, and code has bugs. A separate trust anchor has no code path that could
accidentally accept the wrong tenant — there is nothing shared to misconfigure.
What “shared root” looks like, and why it is not enough
A common arrangement gives every tenant a path prefix inside one trust domain:What Hexr does instead
Each tenant gets its own trust domain and its own root:Both roots are issued and operated by Hexr’s control plane, so a tenant still
does no SPIRE work. The separation is in the PKI, not in the customer’s
operational burden.
Verify it yourself
Do not take this on trust — that would rather defeat the point. Mint an SVID in each trust domain and cross-verify.1
Get each tenant's trust bundle
2
Mint one SVID per trust domain
3
Cross-verify — two must pass, two must fail
It is re-checked on a schedule
A property proven once and never re-checked is not a property, it is a memory. The control plane runs this cross-verification hourly as a Kubernetes CronJob and fails loudly if it ever stops holding. The check also validates its own preconditions before forming a verdict — that its tooling is present, that artefacts are non-empty, and that every SVID verifies against its own root — and reports “isolation NOT assessed” separately from “isolation failed”. A check that cannot tell “the answer is no” from “I could not ask” is worse than no check, because it burns the one signal you were relying on.What this does and does not give you
Isolation you can test
Cross-tenant verification fails cryptographically, in a way a reviewer can
reproduce on their own laptop in two minutes.
Independent compromise blast radius
A compromised root affects one tenant. There is no shared key whose loss
affects everyone.
Not data isolation on its own
Separate trust domains isolate identity. Database and storage separation are
distinct controls; see Threat model.
Not free of operational cost
Each tenant is a real root CA with a real lifecycle. Hexr carries that, which
is the service — but it is work being done, not work eliminated.
Related
- Per-process identity — what happens inside a tenant
- SPIFFE identity — the identity format itself
- Threat model — what this defends and what it does not