Sicurezza Crubby

Come proteggiamo i tuoi dati.

Crittografia in transito e a riposo, audit log append-only, PCI-DSS via Stripe, GDPR by design. Trasparenza per chi deve approvare l’acquisto dal compliance officer.

Crittografia

Tutto il traffico è cifrato in transito (TLS 1.3) e a riposo (AES-256). Nessun dato sensibile viaggia in chiaro.

  • TLS 1.3 con cipher suite moderne (ChaCha20-Poly1305, AES-256-GCM) per tutto il traffico browser ↔ server.
  • HSTS attivo con max-age 31.536.000 (1 anno) per prevenire downgrade attack.
  • Database criptato at-rest con AES-256 gestito da Supabase EU (region eu-central-1, Francoforte).
  • Backup criptati anch’essi at-rest con chiave separata, rotation periodica.
  • Token di sessione hashati prima della persistenza; revocabili da admin in caso di compromissione.
  • Password hashate con bcrypt cost factor 12 (~250ms per hash). No reversibile, no rainbow-attackable.

Controllo accessi

Multi-tenant by design: ogni query passa per requireStaff/requireAdmin che applica il filtro restaurantId. Niente data leak cross-tenant.

  • Server actions Next.js: ogni mutation passa per requireStaff() / requireAdmin() che verifica auth Supabase + restaurantId.
  • Row Level Security su Postgres come secondo strato (defense-in-depth) per tabelle multi-tenant critiche.
  • Ruoli SaRole granulari (SUPPORT, FINANCE, OPS, ADMIN) per il team Crubby cross-customer.
  • Audit log append-only di tutte le azioni cross-tenant amministrative (impersonate, plan change, refund, invite member, note).
  • Impersonation richiede consenso esplicito o motivazione registrata.

Audit log e tracciabilità

Ogni azione amministrativa è loggata con attore, target, timestamp, ruolo, payload. Append-only, retention illimitata.

  • Tabella SaAuditEntry indicizzata per attore + timestamp, azione + timestamp.
  • Loggate: impersonate, change_plan, refund, invite_member, remove_member, add_note.
  • Meta JSON con before/after per cambio piano, motivazione testuale per impersonate.
  • Viewer in /admin-internal/audit con filtri attore/azione/target/range date e KPI strip.
  • Su richiesta cliente possiamo fornire export del log relativo al suo restaurantId.

Pagamenti e PCI-DSS

Crubby non vede mai numeri di carta. Stripe gestisce tutto il flusso PCI-DSS Level 1.

  • Tutti i pagamenti passano per Stripe Elements / Stripe Connect (PCI-DSS Level 1 certified).
  • I numeri di carta non transitano dal nostro server in nessun momento; solo token PaymentIntent ID.
  • Webhook Stripe firmati con HMAC-SHA256 + signature validation rigorosa.
  • Idempotency su WebhookEvent.id per evitare doppi ledger entry su retry Stripe (3 giorni di retry).
  • Refund e dispute gestiti via dashboard Stripe; Crubby logga l’azione su SaAuditEntry.

Backup e disaster recovery

Backup giornalieri con point-in-time recovery di 7 giorni; backup settimanali conservati 90 giorni. RPO < 1 ora, RTO < 4 ore.

  • Point-in-time recovery (PITR) attivo sul Postgres Supabase: ripristino a qualunque secondo nelle ultime 7 giornate.
  • Backup logici settimanali conservati 90 giorni su storage indipendente.
  • RPO (Recovery Point Objective) target: < 1 ora.
  • RTO (Recovery Time Objective) target: < 4 ore per disaster regionale.
  • Test di restore semestrale documentato.

Incident response

Alert automatico su errori critici via Sentry. SLA notifica data breach: 72 ore come da GDPR art. 33.

  • Sentry monitora errori applicativi 24/7 con alerting su Slack del team Crubby.
  • Vercel Speed Insights + edge monitoring per problemi di disponibilità.
  • Health check endpoint /api/health esposto per uptime monitoring esterno.
  • Notifica clienti via email entro 72 ore in caso di data breach rilevante (GDPR art. 33).
  • Post-mortem pubblico in /changelog per incident sostanziali (sezione “Reliability”).

GDPR e data residency

Dati personali ospitati in EU (Francoforte). DPA disponibile su richiesta. Trasferimenti USA solo con SCC 2021/914.

  • Database principale Supabase region eu-central-1 (Francoforte, Germania).
  • Cloudinary primary EU, fallback US (immagini non personali — foto piatti).
  • Sub-processori USA (Vercel, Stripe, Resend, Sentry) coperti da Standard Contractual Clauses 2021/914.
  • DPA (Data Processing Agreement) disponibile su richiesta a privacy@crubby.com.
  • Diritti GDPR esercitabili scrivendo a privacy@crubby.com — risposta entro 30 giorni.
  • Reclamo al Garante Privacy possibile via garanteprivacy.it.

Hai trovato una vulnerabilità?

Apprezziamo il responsible disclosure. Se hai identificato un bug di sicurezza, scrivici a security@crubby.com con i dettagli tecnici (PoC, steps to reproduce, impact). Cosa ti promettiamo:

  • Risposta entro 48 ore lavorative dalla segnalazione.
  • Aggiornamento sullo stato di remediation entro 7 giorni dalla prima conferma.
  • Credit pubblico (con tuo consenso) nella sezione Reliability del changelog quando la patch è in produzione.
  • Niente azione legale contro ricercatori che agiscono in buona fede e seguono il responsible disclosure.

Domande dal tuo compliance officer?

DPA, security questionnaire, ISO/SOC2 roadmap. Rispondiamo per iscritto a tutti i requisiti enterprise.

Scrivi al team sicurezza