Security

How your data is protected.

Last updated 2026-04-24 · v2.0

The measures below are Annex II to our DPA: the technical and organisational controls we commit to, contractually, for every customer. Our public posture against specific frameworks (SOC 2, ISO 27001, IEC 62443, NIS2) is tracked at /legal/trust.

In transit

TLS 1.3 from Cloudflare edge → Firebase Hosting → Firestore/Cloud Storage. HSTS preloaded on sutrace.io. Public-key pinning via Cloudflare managed-certs with automatic renewal.

At rest

Firestore + Cloud Storage use Google-managed keys by default (AES-256, FIPS 140-2 validated KMS). Customer-managed keys (CMEK) available on Scale plan via Google Cloud KMS — bring your own key material.

Access

  • Customer access: per-user Firestore security rules (every read + write is authorised against the signed-in user + workspace membership).
  • Admin access: hard-coded 4-email allowlist in lib/admin.ts, synchronised into Firestore rules via CI-enforced marker blocks; no path to admin without being on the allowlist.
  • Internal engineering access: SSO + MFA + just-in-time approval; production access is not granted by default.
  • Session: 60-minute rolling auth tokens; inactivity logout after 120 min on dashboard.

Anti-abuse

Google reCAPTCHA Enterprise via Firebase App Check attests every Firestore / Auth / Storage call from the browser. Cloudflare provides L3/L4 DDoS mitigation + WAF. Sanctions screening (OFAC, EU, UK) runs at signup; matches are blocked.

Network + isolation

  • No SSH into production. No VPN into production.
  • All compute is serverless (Firebase Hosting for static export; Firestore + Cloud Functions as needed).
  • No public ingress to internal services. Admin surface isolated on admin.sutrace.io with independent auth guard.
  • Per-workspace logical isolation enforced by Firestore security rules + App Check; no shared mutable state between tenants.

Data redaction + data-minimisation

Every protocol adapter runs an on-host filter chain before egress: protocol-specific parser → field-level redaction rules → prompt/payload tokenisation (for AI agents) → sampling → batch + compress + mTLS. By default we never exfiltrate raw PLC register values, LLM prompts / completions, HTTP request/response bodies > 1 KB, user-identifying log fields (email, IP, session), or camera frames. See the product doc at /admin/strategy/03-protocols-and-detection for the full chain.

Logging + detection

  • Authentication events (sign-in, sign-out, MFA challenge, password reset) logged 30 days.
  • Admin-plane events logged indefinitely (every config change, every allowlist mutation).
  • Firestore read/write count per workspace logged for rate-limit enforcement + anomaly alerting.
  • Cloudflare edge logs (request path, status, IP) 30 days rolling.

Vulnerability management

  • Dependabot / pnpm audit on every PR; high + critical CVEs blocked in CI.
  • Security patches applied within 7 days (critical), 30 days (high), 90 days (medium).
  • Annual third-party penetration test; findings fixed before report is shared externally.
  • Private responsible-disclosure channel: security@sutrace.io. 24h acknowledgement.

Secure development

  • Every change lands via PR with type-check + smoke test in CI.
  • Secret scanning on every commit; no .env.local in git (CI blocks).
  • Firestore rules are generated from source-of-truth code (lib/admin.ts → firestore.rules between BEGIN/END markers); drift fails CI.
  • Admin allowlist is version-controlled and auditable via git log.

Incident response

24/7 on-call rotation with a severity-tiered runbook. P1 = service-affecting for >10% of customers: initial update in 15 min, hourly thereafter, RCA within 5 business days. Personal-data breaches: customer notification within 72 hours of confirmation per our DPA. Industrial-customer incidents involving NIS2-designated entities: we support your 24h significant-incident notification.

Business continuity + recovery

Firestore daily export to a separate project; semi-annual restore drill. Regional failure RTO 4 h / RPO 24 h. The status page is hosted off our primary infrastructure so it stays visible when we don’t.

Reporting an issue

Email security@sutrace.io with technical detail + proof-of-concept. We acknowledge within 24 hours, target 30-day fix for confirmed vulnerabilities. Authorised testing against your own workspace is welcome; testing against other tenants is not. We do not pursue legal action against good-faith researchers.