Security & data residency

Isolation is enforced beneath the query, not inside it.

Tenant, brand, workspace and region are bound to the database client an endpoint receives. An endpoint author cannot widen the boundary by writing a different where clause, because the boundary is not expressed in their clause. That is the whole security posture in one sentence — the rest of this page is how each layer does it, and what we have not finished.

Where we actually stand

We hold no attestations. Here is what we have instead.

Plenty of vendors put a row of green “Compliant” badges on this page. A badge is a claim about paperwork, and your security team will ask for the report behind it within one email. So: no certifications, stated plainly, and the engineering underneath described precisely enough to be checked.

SOC 2 · ISO 27001 · HIPAA
Not held
BorakDesk holds no third-party attestations, and no BorakDesk material describes the platform as certified against any of them. A SOC 2 Type II audit is planned; we are not putting a date on it until an auditor is engaged, because a date that slips is worse than no date.
Third-party penetration test
Not yet commissioned
Verification to date is internal: probe suites that execute against real regional databases, source scans, and review. An external assessment has not been commissioned, and nothing here implies one.
GDPR · CCPA · TCPA
Capabilities, not a certificate
Access, deletion, portability and consent workflows; right-to-know and opt-out; consent tracking, quiet hours and a per-send audit trail for SMS. These are mechanisms we can demonstrate — they are not a certification, and we will not label them as one.
Data residency
US · EU · ASIA
Three physically separate databases with separate audit chains. Residency is enforced by the absence of a mechanism rather than the presence of a check: there is no cross-region join anywhere in the system.
Encryption
In transit and at rest
TLS in transit, AES-256 at rest with managed keys. Customer-managed encryption keys are not available today — an earlier version of this page said they were on Enterprise, and that was wrong.
AI provider access
Outside our trust boundary
Model calls leave the platform on your own credential. There is no platform key, so there is no shared-key blast radius and no path for one customer's data to reach another through our billing relationship with a model vendor.
Isolation

Four nested boundaries, four different mechanisms.

Deliberately different, so that a failure in one does not collapse the others. Each row names what would go wrong if that boundary were bypassed — which is the only honest way to describe a control.

BoundaryMechanismFailure mode if bypassed
TenantEvery query carries the tenant predicate, bound to the client before an endpoint sees it.One customer reads another customer’s data.
BrandA Prisma client extension that filters reads and stamps writes across 179 registered models.One operating company sees another’s contacts, pipeline or campaigns under the same contract.
WorkspaceThe same extension, applied additionally to the 11 models where location is a real distinction.A location sees another location’s working data.
RegionUS, EU and ASIA are separate databases with separate audit chains. No cross-region join exists anywhere in the system.A residency violation — structurally prevented, because no query can span two databases.
One precise thing about residency, because the imprecise version is misleading

Brand data lives in the region of its enclave. Identity data lives in the account’s home region. If your account is registered in the US and you operate a brand in the EU, that brand’s contacts, campaigns and analytics are in the EU database and never leave it — but the user records, sessions and access grants for the people who administer it remain in the US. An earlier version of this page said EU data “never touches US infrastructure”, which was true of the brand data and not true of the identity data. If that distinction matters to your regulator, register the account in the region you need, and talk to us before you build around it.

Access

Standing eligibility. On-demand privilege.

Access is granted as a policy over a role and a scope — account, enterprise, brand or workspace — and a person’s effective access is the union of their grants. Two separate clocks govern each one, and conflating them is the failure this design exists to prevent.

There is no expiry job. Liveness is computed when a grant is read, so an activation lapses because the clock passed, not because something ran. A scheduled job that fell over would otherwise leave elevated privilege standing — which is the exact failure this pattern removes. It cannot fail open.

expiresAt
When eligibility ends
The person was given this access until a date. Once it passes, the grant is dead and only an administrator can restore it.
activatedUntil
When the current activation ends
The person still holds the grant. Privilege lapses on its own, and the holder can activate it again themselves. A grant marked activationRequired confers nothing until they do.
SSO and SCIM 2.0 provisioning against Entra ID and Okta
Two-factor enforceable per workspace
Scheduled access reviews, with a trail for every recertification
Separation of duties — self-grant refusal at account scope, a Global Owner ceiling, and a two-Owner minimum
Break-glass access, approved and logged rather than ambient
Daily dormancy job with per-tenant thresholds and explicit safety guards
The audit trail

Chained, checkpointed, exported.

Every grant, revoke, disable and policy change writes an entry that hashes the one before it. A daily job records each region’s head hash and entry count, and a second job writes that day’s entries to storage under an immutability policy with the hash of the exported bytes — so the chain in the database can be checked against a copy neither side can quietly rewrite.

Stated honestly: chaining is asynchronous, so there is a short window in which the most recent entries are not yet chained. That is a deliberate trade — hashing must never block a business operation — and it is documented rather than papered over.

Verification

Probes against real databases.

Isolation claims are not asserted in a document — they execute against real regional databases on every change. The suite covers scope resolution and grant union, cross-brand data isolation, the full 179-model closure, analytics rollup authority, brand domain resolution, the identity gate, SCIM, and referential integrity.

179
models under brand scope
123
assertions on scope resolution
27
assertions on rollup authority
We publish our gaps too

The architecture document ends with the open items — the places raw SQL sits outside the automatic brand filter, the asynchronous audit window, where multi-factor is enforceable but not yet required, what pod isolation does and does not mean today, and the absence of an external assessment. A security document that lists only what works is a sales asset, and a technical reviewer reads it as one. Ask for it under NDA and you get the same list we work from.

Reports & documents

What we can share.

Security Reference Architecture
A 16-page document covering trust boundaries, the policy model, isolation, residency, governance, the audit chain, and a NIST SP 800-53 AC/PS control map — with a section listing the gaps we know about. Available under NDA.
Data Processing Agreement (DPA)
Available at /data-processing-agreement for self-service review and signature.
Subprocessor list
Microsoft Azure (hosting), Clerk (authentication), Stripe (billing), Twilio (SMS aggregation), Meta (WhatsApp BSP). We notify before adding one.
Security questionnaires
Send yours to security@borakdesk.com. We answer from the architecture document rather than from a marketing sheet, which means some answers are “not yet”.

Send us the hard questionnaire.

The one with the questions vendors dodge. Some of our answers will be “not yet” — you will be able to tell which, and that is the point. Email security@borakdesk.com with your form, your NDA, or a request for the architecture document.

Email the security team