Skip to main content

Supabase Vault per i Segreti dei Tenant

Tutti i segreti dei tenant sono memorizzati in Supabase Vault, un’estensione di Postgres che cripta i segreti a livello di database. I segreti hanno ambito per workspace e non vengono mai memorizzati in tabelle dello schema pubblico.

Tipi di Segreto

Ogni workspace può memorizzare i seguenti tipi di segreto in Vault:

Pattern di Accesso a Vault

I segreti vengono letti da Vault solo al momento dell’utilizzo, con ambito limitato al workspace richiedente:
I segreti del workspace A sono strutturalmente inaccessibili al workspace B — la funzione di lettura del vault è parametrizzata dall’ID del workspace, che viene sempre derivato dalla sessione autenticata.

Nessun Fallback su Variabili d’Ambiente in Produzione

I fallback tramite variabili d’ambiente per i segreti sono consentiti solo in ambienti non di produzione:
Ciò garantisce che un deployment di produzione configurato in modo errato fallisca in modo evidente, piuttosto che ricadere silenziosamente su una credenziale condivisa.
In produzione, se Vault non restituisce alcun segreto per un workspace, l’operazione fallisce con un errore. Non esiste alcuna credenziale di fallback globale che potrebbe essere inavvertitamente utilizzata da più tenant.

Memorizzazione delle API Key

Le API key non vengono mai memorizzate in chiaro. Lo schema di memorizzazione:
  1. Generazione: viene generato un token crittograficamente casuale
  2. Hashing: il token viene sottoposto a hashing con SHA-256 prima della memorizzazione nel database
  3. Prefisso: i primi 8 caratteri del token in chiaro vengono memorizzati separatamente per l’identificazione visuale
  4. Visualizzazione: il token completo in chiaro viene mostrato all’utente esattamente una volta al momento della creazione

Validazione Timing-Safe

La validazione delle chiavi utilizza crypto.timingSafeEqual per prevenire attacchi timing oracle:

Header di Sicurezza

Tutte le risposte HTTP dell’applicazione Switchbord includono i seguenti header di sicurezza:

Content Security Policy

HTTP Strict Transport Security

La direttiva preload invia il dominio alle liste di preload HSTS dei browser, garantendo connessioni solo HTTPS anche alla prima visita.

Header Aggiuntivi

Politica CORS

Il CORS è limitato a una allowlist esplicita di origini note:
Le restrizioni CORS impediscono le richieste cross-origin basate su browser da domini non autorizzati. Non impediscono le chiamate API dirette (ad es. da curl o server-to-server). L’autenticazione API è il controllo di accesso primario.

Crittografia a Riposo

Supabase fornisce crittografia trasparente del disco per tutti i dati memorizzati nelle sue istanze PostgreSQL gestite. Questo copre le tabelle contacts, messages, workspace_members, audit_logs e tutte le altre. Miglioramento pianificato (BORD-171): crittografia a livello di colonna per i campi PII (numeri di telefono, nomi, corpi dei messaggi) utilizzando l’estensione pgsodium di Supabase. Questo fornirebbe una crittografia a livello applicativo in aggiunta alla crittografia a livello di disco, proteggendo contro scenari in cui le credenziali del database vengono compromesse.

TLS in Transito

Tutte le connessioni verso e da i componenti Switchbord sono crittografate utilizzando TLS:
  • Vercel (web/API): TLS 1.2+ applicato dalla rete edge di Vercel
  • Supabase: TLS richiesto per tutte le connessioni al database e all’API
  • Railway (worker): TLS applicato per tutte le chiamate HTTP in uscita
  • Meta Cloud API: tutte le chiamate all’API WhatsApp effettuate su HTTPS
  • Provider AI: tutte le chiamate API a OpenAI, Anthropic, OpenRouter effettuate su HTTPS

Protezione da Open Redirect

L’endpoint di callback dell’autenticazione valida il parametro di redirect next per prevenire attacchi di open redirect:

Validazione degli Input

Tutti i corpi delle richieste API principali vengono validati con schemi Zod prima dell’elaborazione:
Le risposte di errore sono sanificate — gli errori grezzi di Supabase o del database non vengono mai restituiti ai client.

Mappatura della Conformità

Per la mappatura completa dei controlli di conformità, vedi la Matrice di Conformità.