Platform
Security Model
The guarantees OneComply makes about authentication, authorization, encryption, and audit — and the mechanisms behind each.
Authentication
- Provider: Supabase Auth — battle-tested, OWASP-aligned.
- Session: HttpOnly, Secure, SameSite=Lax cookies. 8-hour inactivity timeout.
- Lockout: Progressive — 1m → 5m → 15m → 60m after repeated failed sign-ins.
- MFA & SSO: Roadmap. Enterprise SAML / OIDC and TOTP MFA planned.
Authorization (RBAC)
Nine roles form a strict hierarchy: Viewer, Auditor, External Vendor, Member, Control Owner, Risk Manager, Compliance Officer, Admin, Owner. Each API handler declares its required action and entity; the RBAC layer denies by default.
Deny-by-default
requirePermission() denies every request because the default path returns 403. New entity types must be added to the permission matrix before any route can reference them.Encryption
- In transit: TLS 1.3 enforced. HSTS preload (
max-age=63072000). - At rest: AES-256 on Postgres and Supabase Storage.
- Secrets: Stored in Vercel encrypted env vars; never logged.
File Access Control
Evidence and SBOM uploads are stored in private buckets. Downloads use short-lived signed URLs (1-hour TTL) issued only after the API re-verifies that the requester'sorgId matches the file path prefix.
Audit Trail
Every mutation is recorded via logAudit() with before/after snapshots, actor, entity type, entity id, and timestamp. Audit entries are immutable and queryable via /dashboard/audit-logs.
HTTP Security Headers
- Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- Content-Security-Policy: default-src 'self'; frame-ancestors 'none'
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- Referrer-Policy: strict-origin-when-cross-origin
- Permissions-Policy: camera=(), microphone=(), geolocation=()
Threat Model Summary
- T1 — Cross-tenant read: mitigated by
orgIdscoping + code review. - T2 — Privilege escalation: mitigated by deny-by-default RBAC + audit trail.
- T3 — Credential stuffing: mitigated by progressive lockout + rate limiting.
- T4 — Evidence leakage: mitigated by signed URLs + path verification.
- T5 — Supply-chain compromise: mitigated by dependency pinning and automated scanning.
Continue reading