Enterprise edition
La Enterprise edition è pensata per le amministrazioni che hanno adottato Claude Team: un server nella rete interna, l'estensione installata e configurata dalle policy di Chrome, chiavi con custodi e un'osservabilità minima, documentata.
Architettura
Lo stack gira con Docker Compose su una VM della rete interna. Solo il reverse proxy è esposto; Rizzo-PII non ha accesso a Internet.
| Servizio | Ruolo |
|---|---|
| Caddy | TLS con il certificato dell'ente, unico punto esposto; distribuisce anche il pacchetto dell'estensione |
| API Pseudomania (FastAPI) | Pseudonimizzazione di testi e file, dizionario cifrato, registro minimo |
| Rizzo-PII | Riconoscimento dei dati personali, senza rete esterna |
| PostgreSQL | Database applicativo: voci cifrate, registro minimo, registri tecnici |
| PostgreSQL (key store) | Database separato delle copie di custodia, con volume, rete e backup propri |
| OpenBao | Solo la chiave HMAC che assegna lo stesso segnaposto allo stesso valore, e i segreti |
| Langfuse (facoltativo) | Osservabilità; con ClickHouse, Valkey e SeaweedFS, oppure un Langfuse già presente nell'ente |
Requisiti
- Abbonamento Claude Team per gli utenti.
- VM Ubuntu Server 24.04 o Debian 12 con Docker Engine (o Podman) e Compose. Stima per il pilota (6 utenti): 8 vCPU, 16 GB di RAM (24 consigliati), 100 GB SSD, nessuna GPU.
- Nome DNS interno e certificato TLS dell'ente (es.
pseudogate.ente.local). - Identity provider OIDC (es. Microsoft Entra ID, Keycloak) e accesso condizionato.
- Chrome gestito centralmente (Google Admin, criteri di gruppo, Intune).
- Almeno tre custodi designati e una postazione offline per le loro operazioni.
Installazione
- Prepara la VM, DNS e certificati; scarica il codice e costruisci le immagini (anche offline).
- Genera la coppia di custodia offline con
tools/custodi/e distribuisci le quote ai custodi; pubblica la chiave pubblica nella configurazione. - Configura i segreti in
.env, avvia i servizi nell'ordine indicato e inizializza OpenBao. - Configura Claude Team, l'identity provider e le policy di Chrome.
- Supera le prove della verifica del pilota prima di abilitare gli utenti.
Guide: installazione · configurazione · indice della documentazione.
Estensione gestita da policy
L'estensione è installata in modo forzato (ExtensionInstallForcelist o ExtensionSettings) e riceve la configurazione dalla policy: serverUrl, oidcIssuer, oidcClientId, failClosed (predefinito: sì), allowDisable (predefinito: no). Questi due valori si leggono solo dalla policy: il server non può indebolirli. L'utente non può rimuovere né disattivare l'estensione: la protezione è attiva in ogni conversazione e il pulsante nella barra degli strumenti è bloccato su acceso; se il server non risponde o la pagina di claude.ai non è riconosciuta, l'invio si blocca.
SSO e accesso condizionato
L'estensione ottiene un token dall'identity provider dell'ente (flusso authorization code con PKCE); il server lo verifica e ricava uno pseudonimo dell'utente con una chiave HMAC, senza salvare l'identità. Per claude.ai si usa l'SSO di Claude Team con accesso condizionato, e il proxy aziendale consente claude.ai solo dal Chrome gestito.
Chiavi e custodi
- Ogni utente ha una chiave AES-GCM-256 generata nel browser, non estraibile; i valori del dizionario sono cifrati lì.
- Una copia di custodia della chiave è cifrata con la chiave pubblica RSA-4096 dei custodi e conservata nel key store separato.
- La chiave privata dei custodi è divisa in quote (Shamir 2 di 3) e non è mai sul server.
- Rotazione automatica ogni 90 giorni; rotazione forzata in caso di sospetta esposizione.
- Cambio PC: chat non recuperabili; progetti recuperabili su richiesta motivata tramite due custodi.
Le ragioni di ogni scelta: Cifratura e chiavi.
Osservabilità con Langfuse
Per ogni invio una traccia con il testo pseudonimizzato, i conteggi delle entità e la latenza, associata allo pseudonimo dell'utente: serve a misurare il rilevamento (falsi negativi e positivi segnalati, segnaposto alterati). Può essere un progetto dedicato su un Langfuse già usato dall'ente. Le tracce sono cancellate dopo 30 giorni durante il pilota e 7 giorni dopo, con un job di Pseudomania (la conservazione automatica di Langfuse self-hosted è a pagamento). Langfuse è facoltativo.
Conservazione
Ogni dato ha una durata motivata con fonti (Garante, EDPB, NIST, ACN): dizionari delle chat 30 giorni dall'ultimo uso, registro minimo 90 giorni e poi solo aggregati anonimi, backup al massimo 35 giorni, key store 14 giorni, registri degli amministratori 24 mesi. La tabella completa è nelle scelte di progetto; la cancellazione dai backup avviene distruggendo le chiavi (crypto-shredding).
Verifica prima del go-live
Prima di abilitare gli utenti: prove tecniche (docs/verifica-pilota.md), test di rilevamento su un corpus di documenti dell'ente (il repository include un corpus sintetico in collaudo/) e chiusura della checklist degli adempimenti.