CrossTenant

Security at CrossTenant

Last updated: 1 September 2026

CrossTenant holds privileged administrative access to your customers’ Google Workspace organisations. That is a serious thing to hand to a vendor, and this page exists so your security team can evaluate it properly rather than on trust. It describes the actual mechanisms, names what we do not claim, and is written to be quotable directly into a security questionnaire.

The one-paragraph version. CrossTenant stores no Google Workspace content in its server-side content stores — every page is a live fetch that is rendered and discarded, so there is no database of your customers’ directory, mail, Drive, or calendar data to breach. A scheduled report can be generated in process memory and written directly to a Managed Organisation’s selected Shared Drive, with no server-side PDF copy retained. Operators sign in through Google or Microsoft only; there are no passwords to steal. Authorisation is granular to (customer organisation, functional area) and fails closed. Every immediate change and every standing schedule instruction is confirmed, and elevated changes can be held until a second operator approves them. Everything that changes anything is written to a per-customer, hash-chained audit log that detects tampering. The customer administrator can revoke all of it, instantly, without us.

Trust documents

Privacy policy · Terms of Service · Data Processing Agreement (Annex II is the full controls list) · Sub-processors · Support, incident reporting & vulnerability disclosure · security.txt

1. What we store — and what we don’t

This is the control that matters most, because it removes the risk rather than managing it.

No Google Workspace content is retained in CrossTenant’s server-side stores. There is no content database and no cache of directory, mail, Drive, calendar, or device data. Each console page issues live API calls, renders the result for the operator, and discards it. API responses are marked non-cacheable, so they are not written to the operator’s browser disk either, and content caching is disabled at the network edge for API paths. The console reads mailbox and file settings and metadata; it never reads the contents of messages, files, or calendar entries. A scheduled report is generated from the live data in process memory and can be written directly to the root of the Shared Drive selected for that Managed Organisation; CrossTenant retains no server-side copy of that PDF.

What is kept on disk, in full:

StoreContentsRetention
Authorisation credentials The OAuth client, token, and service-account configuration for each customer organisation, in a separate directory per organisation, plus that organisation’s primary domain and its administrator’s contact address. While the organisation is onboarded; ordinarily deleted on offboarding. An unresolved Shared Drive create pauses local credential/configuration deletion until exact reconciliation. The customer can still revoke Google-side access instantly in its own Google Admin Console.
Operator accounts and access policy MSP engineers’ sign-in identities, roles, permission assignments, and a short sign-in history (time, provider, IP address, user agent). While the operator relationship is active. Sign-in history is capped by both age (24 months) and entry count.
Write-audit log One append-only file per customer organisation. See section 5 for exactly what a record contains. 24 months maximum, enforced by an automated pruner.
Operator-authored configuration Report templates, schedules, alert rules, notification recipient addresses and webhook URLs, policy baselines, report notes, branding, and saved joiner role templates. A Drive-delivery schedule stores only the Managed Organisation identifier (tenantId) and selected Shared Drive identifier (driveId), never the Drive name, path, URL or report content. A joiner template stores selected onboarding steps and role settings and may include a delegate mailbox or signature HTML. Dedicated template fields for the joiner’s name, aliases, and password are refused, but an operator can type personal data into the delegate or signature fields. While the relationship is active.
Pending approval requests The requesting operator, the intended action, the target customer organisation and the specific record the action targets (for example the user account being suspended). A pending top-level Shared Drive create includes the exact requested Drive name and a one-way tenant-authority binding. No dry-run preview and no sensitive values — passwords, message bodies and signature text are never held while a request waits. Until approved, rejected, or expired; resolution records kept 30 days. Tenant offboarding expires every still-pending request that targets it before local authority is removed.
Derived health metrics Six numeric scores, one A–F grade and a timestamp per customer organisation. There is no free-text field, so no names, addresses or content. Sealed with AES-256-GCM, with no plaintext mode. Only the most recent computation is kept — each recomputation replaces the last. Served for at most 24 hours before recomputation; deleted automatically once not refreshed for 90 days; removed on offboarding.
Provider-effect custody evidence Bounded schedule, delivery-window, attempt and outcome markers used to stop an interrupted provider effect from being repeated automatically. If a Google upload response is ambiguous, delivery custody can include the exact reserved Google file identifier needed for reconciliation; delivery custody contains no Drive name, path, URL or PDF content. Root-folder create custody can retain one opaque reserved Google item ID, attempt ID, one-way tenant binding, state and timestamps; it excludes folder and Drive names, raw tenant and Drive IDs, actors, links and file content. One unresolved top-level Shared Drive creation per Managed Organisation can temporarily retain the exact operator-entered Drive name, Google request identifier, authority digests, optional candidate Drive identifier, state and timestamps. It remains only until the confirmed outcome is acknowledged or the exact attempt is resolved. None of these custody classes contains file content. Normal completed delivery outcomes form bounded operational history. An ambiguous delivery identifier remains until an authorised operator reconciles the Google-side file and re-arms the schedule. Root-folder create custody clears after deterministic refusal or acknowledgement of a confirmed exact-ID result; an ambiguous result has no fixed maximum and remains held until exact reserved-ID reconciliation or an audited super-administrator absence resolution, never an automatic age-based release. Top-level provisioning custody remains only until the confirmed outcome is acknowledged or the exact attempt is resolved: candidate-bearing review can use authenticated exact-ID readback, while a request-only review without a candidate requires ticketed stopped-host recovery. While a Shared Drive create is unresolved, local tenant offboarding and credential/configuration deletion pause; Google-side access can still be revoked immediately.

A PDF successfully written to a Managed Organisation’s Shared Drive is stored by Google in that Managed Organisation’s environment, not in a CrossTenant server-side store. Its Google ACLs, retention and deletion controls continue to govern it, and it remains there when its CrossTenant schedule is deleted or the Managed Organisation is offboarded unless it is deleted under those Google controls.

Two further things exist on the server that are not data stores but do hold personal data, and we would rather name them than let you find them. The console writes ordinary operational logs — requests, warnings, errors — and where a call to Google fails, the error text Google returns is recorded; that text can contain a domain, a user’s email address, or a project identifier. And the audit key-rotation tool writes a backup copy of a log before re-chaining it, kept for short-term recovery while the new key is verified; the rotation procedure includes deleting it once verification succeeds, and either way its entries are subject to the same automated 24-month retention sweep as the log itself, so the backup can never outlive the data it copies.

Adding a new store is not a casual decision. Every proposal to persist a new class of data must answer a fixed set of questions in writing — exact fields, location, encryption, retention and the mechanism that enforces it, read path, custody, and the effect on our published disclosures — and receive an explicit decision before it is built. Classes that would hold observations about your customers’ people have been refused under that rule, with a no-storage alternative recorded instead.

2. How operators authenticate

3. How access is authorised

What we do not claim here

Three known weaknesses in this area, stated because you would find them in a thorough review and we would rather you heard them from us:

4. How privileged changes are controlled

5. How actions are made accountable

Every request that changes anything — including one that is rejected — is appended to a per-customer log. A record contains the time, the customer organisation, the operator’s identity and email address, the request method and a fixed route family (for example /api/users/* — the full request URL is never persisted, because its dynamic segments and query values can carry a person’s identifier), the originating IP address, the result, and a bounded, structured summary of the submitted input — field counts, value types, and curated outcome markers such as success and failure counts. Secret-like values are replaced with a redaction marker; free-text, content-like, and identifying values are omitted entirely; long strings are truncated and structures reduced to counts.

Being precise about what that means: the log deliberately records the operator’s IP address, and it deliberately does not retain the identifier of the account or resource acted upon, the operator’s free-text reasons or notes, or the values of the settings that changed. The durable record is minimised evidence of who did what class of action, against which customer, with what outcome. Two narrow, deliberate exceptions retain more, because accountability there demands it: a break-glass execution records the acting super-administrator’s bounded written reason, and a record may carry one explicit, protected target reference where a specific accountability case requires it. (Separately, a change parked for approval holds its specific target in the approval record while that record is retained — see section 4.) What the log never contains is message content, file content, or credentials, and what the console’s own screens show of it is a stricter projection still: time, customer scope, operation class, outcome, and acting operator.

6. Least privilege against Google

7. Infrastructure

Be aware of a distinction that most vendor security pages blur. CrossTenant supports an operator-controlled deployment, where the console runs on infrastructure the MSP controls and the infrastructure controls — disk encryption, network exposure and backups — are the MSP’s, to the specification we document. All of the application controls above apply regardless. A private CrossTenant-hosted release is also running for founder dogfood; it is not yet a generally available customer service.

The private hosted release runs on Microsoft Azure in the UK West region (United Kingdom). Its persistent data sits on an Azure managed disk encrypted at rest with platform-managed keys. Application secrets are injected at run time and kept outside the persistent data root. The application has no public inbound port: operators pass an authenticated Cloudflare Access gate and traffic reaches the host over an outbound-only Cloudflare Tunnel. API responses are excluded from edge caching and query strings are excluded from edge logs.

Backups are not yet a running control. A separate Azure subscription is reserved for encrypted off-host backups, but it contains no storage account and no backup has been uploaded or restored. Before the hosted service accepts an external customer estate, the backup region and retention controls must be fixed, backup contents must be encrypted before upload, and a restore must be rehearsed. The planned storage role is published in advance; this page will describe it as current only after that evidence exists.

On disk, in either deployment, files are written atomically and restricted to the service account, with permissions swept at startup. All data in transit is encrypted with TLS.

One question worth answering before you ask it: how are the stored customer credentials encrypted at rest? By the disk, and by filesystem permissions that restrict them to the console’s own service account — not by an application-layer envelope or an external secrets manager. The derived-metrics store is the one exception, sealed with AES-256-GCM. Anyone with root on the host, or with the decrypted volume, can read a stored token. Two things bound what that is worth to an attacker: the tokens are scoped to what each customer granted, and any customer can revoke theirs unilaterally and instantly. An application-layer secrets store is on our roadmap and is not yet built.

8. Assurance — and what we do not claim

What we do not claim, stated plainly so nobody has to ask:

9. Reporting something

Security vulnerabilities and suspected compromise: security@crosstenant.com. Our disclosure policy, response targets and safe-harbour commitment are on the support page, and machine-readable contact details at /.well-known/security.txt.

In the event of a personal-data breach affecting data we process for you, we notify you without undue delay and in any event within 72 hours of becoming aware. That obligation is contractual and is set out in section 8 of the DPA.

10. Quick answers for a security questionnaire

QuestionAnswer
Do you store our data?No Google Workspace message or file content in CrossTenant’s server-side stores. We do retain the bounded configuration and accountability records in section 1; one unresolved top-level Shared Drive create can temporarily include its exact operator-entered name and idempotency/candidate identifiers. A scheduled PDF written to your selected Managed Organisation Shared Drive stays in that Google environment under its controls.
Where is data processed?United Kingdom and EEA, plus the sub-processors listed at /subprocessors with each one’s location and transfer mechanism.
Is data encrypted?In transit, always (TLS). At rest, full-disk encryption, plus AES-256-GCM sealing of the derived-metrics store. See section 7 for which deployment that applies to.
How do staff authenticate?Federated Google or Microsoft sign-in only. No passwords held. Section 2.
Is MFA enforced?MFA is enforced by your own identity provider, where you configure it. CrossTenant does not weaken it and holds no alternative credential that could bypass it.
Role-based access control?Yes, granular to (customer organisation, functional area) at three levels. Section 3, including its known limitations.
Is privileged action logged?Yes — every mutating request, in a hash-chained tamper-evident log, retained 24 months. Section 5.
Segregation of duties?Yes, optional and configurable: the approval gate, with requester-never-approver enforced. Section 4.
Sub-processors and notice period?Listed at /subprocessors; 30 days’ notice with a right to object. DPA section 5.
Do you use our data for AI training?No. AI features are optional, send only sanitised configuration and posture context through a server-side redaction guard, and no data is used to train models.
Breach notification?Without undue delay, and in any event within 72 hours of awareness. DPA section 8.
Certifications?None. Stated deliberately — section 8.
How do we terminate and get our data removed?Revoke access in the Managed Organisation’s Google Admin Console immediately. Stored credentials and configuration are ordinarily deleted within 30 days; if a Shared Drive create is unresolved, that local deletion pauses until the exact attempt is reconciled. Pending approvals for the tenant expire before local authority is removed. The audit log is retained to its 24-month cap. Report PDFs already written to a Managed Organisation’s Google Drive remain there under its own retention and deletion controls. Terms section 10 and DPA section 9.
Something isn’t covered here.Email security@crosstenant.com. We answer questionnaires in writing, ordinarily within 10 business days, at no charge.