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.