Security

Control who can release a model and what its code can access.

Workbook code runs apart from the API and the components that hold data or credentials. Separate roles govern who can change a model and approve its release. Data policies determine which calculation records are retained. Assess these boundaries alongside the identity, isolation and release controls below.

Customer-hosted security boundary

Keep models and calculation data in your installation.

The application, model publishing, calculations and persistent records can run on infrastructure your team operates. Publishing and running a model do not require transferring the workbook or calculation request to an XSheet-operated service.

  • Infrastructure under your control

    Your team manages networking, identity configuration, secrets, data location, backups and recovery. It controls log access and connections to monitoring or SIEM tools. Support access and diagnostic sharing are agreed with you.

  • Explicit network requirements

    Local execution and full network isolation are different requirements. Review configured identity providers, signed software delivery and operational services before accepting a no-internet requirement.

Customer-hosted deployment does not transfer responsibility for the software to your infrastructure team. XSheet maintains the isolation, application security controls, dependencies and signed release process. Agree vulnerability handling, security-update delivery and advisory procedures during the vendor review.

Access

Enterprise sign-in, with an explicit account boundary.

Every account starts from an invitation, whichever way its owner signs in. Systems call the API with keys that work in one environment only.

  • Single sign-on over OpenID Connect

    People sign in through configured Okta, Google Workspace or Microsoft Entra ID, using OpenID Connect with the authorization code flow and PKCE. Entra is restricted to your tenant and Google to the domains you allow. With Okta and Entra, configured groups or app roles determine the role of an existing account.

  • Accounts by invitation only

    There is no public sign-up, and single sign-on will never create an account by itself: an account exists only once someone accepts an invitation. Local accounts need a password and a code from an authenticator app at every sign-in, and repeated failed attempts lead to a lockout. Approvals, break-glass and role changes ask for the identity check again.

  • Roles and approvals

    Roles separate viewers, developers, releasers, administrators and auditors. Auditors can review models, call records, the audit log and evidence without changing them. Payload visibility follows the environment’s data policy and the auditor’s permissions. An account created or given a higher role in the last 72 hours does not count toward the approvals a promotion needs without a second administrator.

  • Scoped API keys

    API keys are shown once, stored only as a keyed hash and checked in constant time. Each key belongs to one environment and carries its own scopes, services, rate limit, daily quota, allowed networks and expiry, and the application shows the expiry status of each key. A key can be rotated with a grace period or revoked at once. A network that keeps sending refused requests is turned away before any key is read.

Standards

Built around published standards.

XSheet uses published standards and maintained libraries wherever they exist. Your security team can review the design against references it already knows.

Standards and algorithms the design of XSheet follows
AreaWhat XSheet follows
Single sign-onOpenID Connect Core and the authorization code flow with PKCE (RFC 7636)
Second factorTime-based one-time passwords (RFC 6238)
Application securityOWASP ASVS level 2, the OWASP Top 10 and the OWASP API Security Top 10
API contractOpenAPI 3.1 with JSON Schema 2020-12, and HTTP semantics (RFC 9110)
ErrorsProblem details for HTTP APIs (RFC 9457)
Request tracingW3C Trace Context (the traceparent header)
CryptographyArgon2id for passwords, HMAC-SHA-256 for API keys, AES-256-GCM for authenticator secrets and SHA-256 for the audit chain
Software supply chainPlanned for tagged releases: SLSA build provenance and a CycloneDX software bill of materials
AccessibilityWCAG 2.2 AA and the WAI-ARIA Authoring Practices

These are design references and technical controls. They do not constitute a certification, an attestation or a completed security audit.

Execution

Safe code, isolated calculations.

A workbook is untrusted input. XSheet processes and runs it apart from everything that holds data or secrets.

  • Built not to crash

    Every input has a numeric limit, memory use is bounded and every input and output operation has a timeout. Going over a limit returns a clear error, and the platform keeps running.

  • Isolated execution

    Workbook calculations never run inside the API. Each version runs isolated, with no network or file access and strict limits on memory and time. A failure becomes a clear error for the caller, and every other service keeps running.

  • Isolated builds

    An uploaded workbook is processed apart from the platform’s data and secrets, without network access. The platform never relies on that processing’s own report of what it produced.

Releases

Signed releases from a pinned supply chain.

Each release is built once, tested, signed and verified before it is installed.

  • Signed releases

    Every release is signed only after its tests passed, and runs on XSheet’s own installation first. A customer installation accepts only releases XSheet signs after their exact images ran there. Before installing anything, the updater verifies the signature, and it rolls back automatically when an update fails.

  • Supply-chain checks

    Dependencies are pinned and checked against a license allowlist and known vulnerabilities, and every change is scanned for secrets before it is merged.

Data protection

Call data protected in every environment.

Inputs can hold personal data, so each environment decides what its call history keeps. Development environments never see production data.

  • Masked, encrypted call history

    Each environment keeps full inputs and outputs, masked ones or metadata only. In production, inputs and outputs are kept for 30 days by default, encrypted and masked in display and export, while request IDs, metadata and receipts are kept for ten years by default.

  • Erasure and legal hold

    Planned: on request, erase a data subject’s call inputs and outputs so the running service can no longer read them, while request IDs, metadata and receipts stay for their retention period; and legal holds that block the deletion of the records they cover, approved through maker-checker.

  • An audit chain without personal data

    The tamper-evident audit log’s hash chain holds no personal data. Names, email and IP addresses are kept apart from it and anonymized when their retention ends, without breaking its proof of integrity.

This website

No cookies, no scripts, nothing loaded from other sites.

This website sets no cookies, runs no scripts and loads nothing from other sites. It is delivered with a strict Content Security Policy.

Reporting

Reporting a vulnerability.

Security contact: contact@xsheet.io.

Describe the issue and how to reproduce it. Do not include real secrets or personal data in a report.

XSheet

See how your model would work as an API.

Discuss the workbook your team maintains and the applications that need its results. Explore integration and deployment in your environment.