Principi di sicurezza
betool è progettato per ambienti regolamentati. La sicurezza non è uno strato aggiunto dopo: è l'invariante che modella ogni riga di codice, ogni migrazione, ogni modulo.
1. Multi-tenancy rigorosa
Ogni organizzazione possiede i propri dati, pipeline, segreti, file e chiavi LLM. L'isolamento è garantito:
- A livello di database — ogni tabella di business contiene una colonna
org_idindicizzata, e le query lato server filtrano sempre in base all'organizzazione della sessione. - A livello di filesystem — ogni org ha la propria radice sotto
<data_root>/orgs/<org_id>/. Nessun percorso condiviso. - A livello di cache — cache per singola org; nessuna voce condivisa senza un flag esplicito
is_shared = TRUE. - A livello di segreti — ogni org ha il proprio vault, le proprie chiavi API, i propri token. Nessun fallback globale.
2. Audit obbligatorio degli accessi cross-tenant
Alcuni ruoli (tipicamente gli account operatore di piattaforma sul lato vendor) possono aver bisogno di accedere al contenuto di un'altra organizzazione per finalità di supporto. Tale accesso è:
- Subordinato a un opt-in dell'organizzazione destinataria — revocabile in qualsiasi momento dal pannello di amministrazione.
- Registrato a ogni accesso — tabella di audit dedicata, delimitata per org destinataria, esposta ai clienti tramite una route
GET /api/admin/me/*-reads. - Negato se la scrittura di audit fallisce — nessuna lettura senza traccia.
Vedi Audit RGPD.
3. Rifiuto motivato sulle operazioni distruttive
Qualsiasi operazione che distrugge o sostituisce il contenuto di un'altra organizzazione (REPLACE-IN-PLACE dei figli, DELETE) è rifiutata se l'org destinataria non ha attivato l'opt-in di lettura. Motivazione: senza visibilità, l'operatore proporrebbe un payload che potrebbe sovrascrivere ciecamente contenuti esistenti.
4. Sovranità del modello LLM
- BYOK nativo — le tue chiavi OpenAI, Anthropic e Mistral sono gestite dalla tua organizzazione. Nessuna fuga cross-org.
- Modelli privati in Enterprise — Ollama, vLLM ospitati sul tuo hardware o nel tuo cloud privato. Prompt e completamenti non lasciano mai il tuo perimetro.
- Nessun pool condiviso silenzioso — se un'org utilizza un modello condiviso, si tratta di una decisione esplicita con controllo degli accessi.
Postura di ingegneria
Il nostro standard è la precisione: massima robustezza, osservabilità totale, determinismo, anti-allucinazione, anti-regressione, test a ogni passo.
In concreto, a ogni trade-off di architettura / codice / prompt:
| Scelta | Scelta attesa | Perché |
|---|---|---|
| Latenza × 2 vs. ragionamento abbreviato | × 2 | La precisione persa si ripaga con la fiducia dell'utente |
| Osservabilità granulare vs. soli log essenziali | Granulare | Senza visibilità, il debug è cieco |
| Scorciatoia che degrada un comportamento | Rifiuto | Il rischio comportamentale si misura in incidenti dei clienti |
Mantra: "Se qualcuno trova un bug, significa che non avevamo abbastanza garanzie di sicurezza, non troppe."