Skip to main content

Security Posture — v1.0

Layered Defence Summary

Browser │ CSP · HSTS preload · SRI on third-party ▼ Netlify edge (Deno) │ auth-gate · nim-proxy · ws-proxy · per-IP token bucket ▼ AWS Lambda Function URL │ ZeroTrustShield: mTLS-or-JWT · Redis rate limit · security headers ▼ FastAPI app │ Pydantic strict schemas · RLS-aware Supabase client · structlog audit ▼ Supabase (Postgres) │ RLS deny-by-default · append-only triggers · pgaudit ▼ Polygon PoS immutable hash anchors Copy

Key Rotation

AssetRotation cadenceTooling
JWT signing key90 daysJWKS endpoint + cache TTL 1 h
NIM API key30 daysDoppler → Netlify env injection
Polygon hot-wallet180 dayshardware-backed signer migration
Supabase service role90 daysrotated via Doppler with zero-downtime overlap
mTLS device certs365 daysper-node CSR through ACME-compatible CA

Incident Severity Matrix

SevExamplesFirst responsePublic disclosure
SEV-1Audit chain break · live data tampering · key compromisePage on-call within 5 min · disable affected component · CAP Cancel if forecast affectedWithin 24 h
SEV-2Sustained 5xx > 10 min · auth bypassPage on-call within 15 minWithin 72 h
SEV-3Degraded performance · single-source outageInvestigate next business dayIn monthly status
SEV-4Cosmetic / non-impactingBacklogNone

Pen-Test Cadence

  • External red-team: annually, contracted to a CERT-In empanelled firm.
  • Internal grey-box: quarterly, executed by SRE rotation.
  • Continuous: Bandit + Safety + Trivy + ZAP baseline (weekly cron).
  • Bug-bounty: scoped to staging origin (snow-ir-staging.netlify.app) with reward tiers aligned to severity matrix above.