Sicurezza e dati
Come Pratikum protegge i dati dello studio
Come sono separati gli studi, dove stanno le chiavi, che cosa arriva agli agenti e che cosa vede il committente.
L’isolamento fra studi
Nel servizio condiviso molti studi lavorano sulla stessa installazione. Ogni riga che appartiene a uno studio porta l’identificativo dello studio, e a ogni lettura e a ogni scrittura il database lo confronta con lo studio di chi sta lavorando. È la row level security di Postgres, accesa e forzata sulle tabelle che appartengono a uno studio. Le interrogazioni del prodotto ripetono lo stesso filtro.
Quattro tabelle di servizio restano fuori dalla regola: sessioni, registro degli eventi, tentativi di accesso al portale ed eventi di pagamento. Ciascuna ha la sua ragione scritta nel codice, e le loro letture filtrano per studio nell’interrogazione. Le poche operazioni di sistema che devono lavorare oltre il singolo studio lo dichiarano sulla singola interrogazione.
Pratikum si collega al database con un ruolo ordinario, che quella regola la subisce come chiunque altro. All’avvio due controlli verificano che il ruolo non abbia privilegi per scavalcarla e che le tabelle con la colonna dello studio, fuori dalle quattro di servizio, abbiano la regola accesa. In produzione, se uno dei due controlli fallisce, il servizio resta fermo.
Chi chiede una risorsa di un altro studio riceve «non trovato», la stessa risposta data per una risorsa inesistente. Così la risposta tace anche il fatto che quella risorsa esista.
I file dei documenti stanno in un archivio diviso per studio, una seconda barriera accanto a quella del database.
Le chiavi delle funzioni assistite
Le funzioni assistite si attivano su richiesta dello studio. Quando sono attive, Pratikum chiama gli agenti con un indirizzo e una chiave che stanno nella configurazione del server. Nel database nessuna colonna contiene una chiave, nemmeno cifrata, e una copia del database esce senza queste chiavi.
Il browser riceve soltanto l’esito. Chiede a Pratikum, e Pratikum chiama la piattaforma degli agenti; chiave e indirizzo restano sul server.
Che cosa arriva agli agenti
Per ogni funzione assistita, quando lo studio la attiva, è scritto che cosa esce dallo studio e perché. Il criterio è la parsimonia: esce ciò che serve a quel gesto.
Per la lettura di un documento escono i byte del documento, il nome del file, il tipo di documento atteso quando l’operatore lo indica e l’identificativo dello studio. Restano nello studio i recapiti del committente, gli altri documenti della pratica, le note interne e gli importi. L’originale resta in Pratikum.
Il contenuto di un documento è materiale da leggere. Nessun campo estratto può cambiare stato, responsabile o scadenza di una pratica, e un campo proposto entra soltanto quando una persona lo accetta.
Il portale del committente
Il collegamento che lo studio manda al committente contiene un valore casuale di 256 bit, mostrato una volta sola. Nel database ne resta soltanto l’impronta, quindi una copia del database non contiene collegamenti utilizzabili.
Per entrare serve anche il codice di sei cifre che arriva all’indirizzo email del committente.
Il collegamento vale per quello studio, quella pratica e quel committente, e nessuna richiesta lo allarga. Un collegamento inventato riceve la stessa risposta di uno malformato, e i tentativi hanno un tetto di frequenza. Con 256 bit di spazio e quel tetto, i collegamenti validi non si indovinano per tentativi.
Il committente vede la sua pratica e i passi che toccano a lui; documenti e note li vede soltanto quando lo studio li condivide. Lo studio sceglie per ogni committente che cosa può fare dal portale: vedere la pratica, scaricare i documenti condivisi, mandarne di nuovi, prestare i consensi. Le note interne restano allo studio. Revocare il collegamento o togliere il committente dalla pratica chiude subito le sessioni aperte.
I documenti
- Ogni documento ha la sua impronta SHA-256, calcolata all’ingresso.
- Ogni apertura del contenuto resta registrata con operatore, momento e indirizzo.
- I collegamenti per scaricare un documento sono firmati e scadono. Pratikum non li salva nel database.
- I permessi sui documenti seguono il ruolo. Un documento che un operatore non può vedere, per lui, risulta inesistente.
Accesso e password
- Le password si salvano come hash BCrypt.
- Dopo una serie di tentativi falliti l’account si blocca.
- La pagina della password dimenticata risponde sempre allo stesso modo, che l’indirizzo esista o no.
- Lo studio si attiva soltanto dopo la conferma dell’indirizzo email di chi lo apre.
- Ruolo e permessi si leggono a ogni richiesta, e una revoca vale dalla richiesta successiva.
Domande sulla sicurezza o sul trattamento dei dati? Scrivi a privacy@ingegneriacavallo.it.