Ogni notte il FASAS fa un backup cifrato, lo verifica, ne copia una versione fuori sede che nessuno può cancellare per 30 giorni e conserva i punti di controllo dell’audit. Ogni tre mesi riapre l’ultimo backup in un database separato e ne lascia il verbale.
| Ora | Job | Cosa fa |
|---|---|---|
| 02:00 | audit_verify |
verifica tutta la catena dell’audit e salva un punto di controllo (con marca temporale se c’è una TSA) |
| 02:30 | backup |
backup cifrato AES-256-GCM (database, file, punti di controllo), verifica, copia fuori sede, pulizia |
| 1° gennaio, aprile, luglio, ottobre, 04:15 | restore_test |
prova di ripristino con verbale |
Con cron al posto di Celery: python manage.py fasas_jobs audit_verify backup ogni notte e
python manage.py backup_prova_ripristino ogni tre mesi.
Un SSD esterno sempre collegato al server riceve ogni 5 minuti una copia del database nello stesso formato
cifrato dei backup (solo database) e i file nuovi o cambiati (già cifrati). Si attiva con
scripts/disco_continuita.sh --prepara, che formatta il disco, lo monta a ogni avvio, scrive il file marcatore
.fasas-continuita e imposta FASAS_CONTINUITY_DIR nel .env.
FASAS_CONTINUITY_KEEP_HOURS,
FASAS_CONTINUITY_KEEP_DAYS)./salute/ segnala «copia_continua».manage.py fasas_ripristina_continuita --elenca mostra le copie; --confirm ripristina l’ultima
(o quella indicata con --file) e i file..env:FASAS_OFFSITE_ENDPOINT=https://s3.<regione>.<fornitore>
FASAS_OFFSITE_REGION=<regione>
FASAS_OFFSITE_BUCKET=<nome del bucket>
FASAS_OFFSITE_ACCESS_KEY=<chiave d'accesso>
FASAS_OFFSITE_SECRET_KEY_FILE=/etc/fasas/offsite-secret # oppure FASAS_OFFSITE_SECRET_KEY=...
FASAS_OFFSITE_LOCK_DAYS=30
FASAS_OFFSITE_KEEP_DAILY=30
FASAS_OFFSITE_KEEP_MONTHLY=12
Il blocco in modalità COMPLIANCE impedisce a chiunque, anche a chi ha le credenziali o a un ransomware, di cancellare
o sovrascrivere la copia prima della scadenza. Le copie oltre la conservazione (30 giornaliere + 12 mensili) si
cancellano da sole quando il blocco è scaduto.
Dalla pagina Backup › «Prova di ripristino», oppure python manage.py backup_prova_ripristino:
FASAS_RESTORE_TEST_DATABASE_URL (database vuoto) per i backup PostgreSQL; senza, la prova è «parziale»;Il docker compose crea già il database fasas_prova_ripristino per la prova.
Con l’applicazione ferma: python manage.py backup_restore <file.fbk> --confirm, poi python manage.py audit_verify.
Servono la chiave FASAS_BACKUP_KEY (busta di custodia: python manage.py fasas_chiavi apri <busta>) e, per i
documenti, FASAS_ENCRYPTION_KEYS. Il ripristino funziona anche verso un PostgreSQL di versione precedente a quella
del pg_dump (es. Supabase su PostgreSQL 15).