Sicurezza · doc pubblica

Perché un DPO la legga di venerdì.

Non una casella di marketing. Ogni livello è documentato, testato e progettato partendo dal presupposto che un regolatore, un cliente o un auditor porrà la domanda.

CH
sovranità di default
modalità strict verificabile
10 anni
audit append-only
modifica rifiutata nel database · trigger
0
query senza isolamento
RLS PostgreSQL per tenant
4
lingue dell’interfaccia
FR · DE · IT · EN

06 livelli

Ogni anello documentato. Ogni chiave girata.

Non vendiamo un lucchetto. Vendiamo un cockpit auditabile da un capo all’altro.

01 · livello

Isolamento tenant imposto dal database.

PostgreSQL Row-Level Security è attiva su ogni tabella. Il codice applicativo non scrive mai un WHERE tenantId — Prisma imposta una GUC di sessione letta dalla policy. Un bug che dimentica di applicare lo scope restituisce zero righe, mai i dati di un altro tenant.

  • RLS Postgres forzata · policy per tenant su ogni tabella tenantizzata
  • UUID v7 ovunque · nessun incremento sequenziale
  • Ruolo applicativo non-superuser — il database rifiuta il bypass anche in caso di bug
  • Test di isolamento a due tenant, eseguiti su un database reale con il ruolo applicativo
livello 01

illustrazione del principio

02 · livello

Sovranità svizzera, verificabile nel codice.

Infrastruttura principale presso Infomaniak — data center in Svizzera. La modalità sovranità svizzera stretta disattiva ogni funzionalità che richiede un trattamento fuori dalla Svizzera — una regola applicata dal backend, non un’impostazione dell’interfaccia. I flussi che restano sono divulgati: fatturazione Stripe (Irlanda), notifiche push minimizzate. Il registro dei sub-responsabili è pubblico.

  • Postgres, Redis, S3 (MinIO) · infrastruttura principale svizzera (Infomaniak)
  • Modalità strict: ogni trattamento fuori dalla Svizzera disattivato, verificato dal backend
  • AI Gateway sovrano di default (Llama 3.3 via Infomaniak)
  • LLM di frontiera (Anthropic — inferenza possibile fuori da UE/CH, disciplinata dalle clausole contrattuali tipo e dal Data Privacy Framework), solo con opt-in esplicito
livello 02

illustrazione del principio

03 · livello

Secret fuori dal codice, mai nel repository.

I secret non vivono nel codice: le chiavi provengono dall’ambiente del server, accessibile al solo amministratore di sistema. I secret sensibili archiviati nel database (TOTP, firma dei webhook) sono cifrati con envelope encryption. La rotazione automatizzata e la scansione automatizzata dei secret arriveranno con un gestore di secret dedicato.

  • Secret in variabili d’ambiente del server · fuori dal repository
  • HTTPS ovunque (Let’s Encrypt, HSTS)
  • Autenticazione interna · Argon2id, MFA TOTP disponibile
  • Webhook Stripe · verifica HMAC sul raw body
livello 03

illustrazione del principio

04 · livello

Conformità nativa: nLPD, GDPR.

Non una casella cosmetica. Ogni decisione IA è tracciata (modello, input, output, score, alternative). Il registro di audit è append-only — imposto da un trigger PostgreSQL — conservato 10 anni, consultabile nell’applicazione ed esportabile (JSON) su richiesta del DPO o dell’ispettorato.

  • Diritto all’oblio GDPR in self-service per il tenant (DELETE a cascata)
  • Decisioni IA registrate: modello, input, output, alternative
  • Pseudonimizzazione dei PII in tutti i log Pino
  • CSP strict + header helmet sull’API NestJS
livello 04

illustrazione del principio

05 · livello

Registro di audit append-only, 10 anni.

Ogni modifica business è registrata: chi, cosa, quando, da quale IP, con quale esito. Il database rifiuta qualsiasi modifica di una voce (trigger PostgreSQL). La cancellazione è aperta solo tramite due percorsi dichiarati: la purga di conservazione legale e la cancellazione completa di un tenant su sua richiesta.

  • Modifica (UPDATE) sempre rifiutata da un trigger PostgreSQL
  • Consultabile in-app · esportabile via API (JSON)
  • Conservazione 10 anni · allineata alla conservazione dei libri (CO)
  • Schema versionato — nessun breaking change sulle righe storiche
livello 05

illustrazione del principio

06 · livello

Backup e ripristino, senza promesse eccessive.

Le procedure di ripristino sono documentate in runbook versionati con il codice. Il programma di backup off-site e gli impegni quantificati (RPO/RTO) sono in fase di implementazione — li presentiamo come un cantiere in corso, non come un risultato acquisito.

  • Runbook di ripristino versionati con il codice
  • Dati su infrastruttura svizzera Infomaniak
  • RPO/RTO contrattuali: introdotti con i piani Moyenne e Grande
  • Lo stato reale del dispositivo è comunicato su richiesta — senza abbellimenti
livello 06

illustrazione del principio

Roadmap conformità

Ciò che è in atto. Ciò che arriva.

In produzione

Pratiche nLPD · GDPR

Obiettivo Q4 2026

Dossier di sicurezza completo, condiviso su richiesta

Obiettivo 2027

Backup cifrati fuori dalla macchina di produzione

Obiettivo 2027

Export del registro di audit in self-service

Fai le tue domande.

Dossier di sicurezza, architettura, registro dei sub-responsabili, DPIA — condivisi su richiesta, fin dal primo colloquio.

Sécurité — SwissPlanif · SwissPlanif