La Retention-Policy è un parametro di controllo centrale per ogni operazione di backup: determina per quanto tempo le copie vengono conservate, quando vengono spostate e quando vengono cancellate. Non si tratta soltanto di una questione tecnica, ma anche legale e operativa: disposizioni fiscali, di diritto commerciale e specifiche di settore impongono periodi di conservazione; al contempo i backup devono rimanere praticabili, verificabili e ripristinabili. Questo articolo del magazine mostra in modo pratico come integrare una Retention-Policy nel ciclo di vita dei backup, ridurre i rischi e creare percorsi di verifica per gli auditor.
Perché una Retention-Policy è importante
La Retention-Policy (tedesco: Aufbewahrungsrichtlinie) definisce quali copie vengono conservate e per quanto tempo. Influisce sui costi, sulle opzioni di ripristino, sull’architettura di storage e sulla compliance. In assenza di una policy chiara si rischiano due errori: conservazione troppo breve (si violano requisiti legali o aziendali) o conservazione eccessiva (costi, maggiore superficie d’attacco, problematiche di protezione dei dati). Entrambi i casi comportano rischi operativi e rilievi in sede di audit.
Concetti di base spiegati brevemente
Termini che ricorrono nel contributo:
- RTO (Recovery Time Objective): tempo massimo entro il quale i sistemi devono essere ripristinati dopo un guasto.
- RPO (Recovery Point Objective): perdita massima di dati tollerabile espressa in tempo (es. 15 minuti).
- Retention-Policy: regole per la durata di conservazione e il ciclo di vita dei backup.
- Archiv: storage a lungo termine con periodi di conservazione più lunghi, spesso in sola lettura; adatto per la conservazione a norma di legge.
- WORM (Write Once Read Many): supporto di memorizzazione che non consente modifiche dopo la scrittura; importante per l’archiviazione a prova di revisione.
Conservazione legale: quali scadenze si applicano?
Leggi e regolamenti variano in base al paese e al settore. In Deutschland i termini tipici sono:
- 10 Jahre für steuerrelevante Unterlagen (z. B. Rechnungen) nach AO/HGB.
- 6 Jahre für handelsrechtliche Unterlagen in bestimmten Fällen.
- Regolamenti specifici di settore (z. B. Gesundheitswesen, Finanzdienstleister) possono differire e prevedere termini più lunghi.
Importante: i backup sono spesso copie dei dati di produzione. Determinante è se la copia ha valore di archivio ai fini legali o serve solo a scopi di ripristino. In entrambi i casi i periodi di conservazione devono essere documentati e applicati in modo verificabile.
Retention-Policy nella pratica: formulare i requisiti
Una Retention-Policy attuabile contiene almeno:
- Scadenze concrete per tipi di dati (es. dati contabili: 10 anni, log: 1 anno).
- Livelli del ciclo di vita (Hot, Cool, Archive, Delete) e tempi di migrazione.
- Responsabilità (Owner, Data Custodian, Backup-Operator).
- Meccanismi di verifica e attestazione (controlli di integrità, log di audit, test di ripristino).
- Strategia di fallback e di recupero per casi di cancellazioni errate.
Praticamente si raccomanda una matrice che metta in relazione tipi di dati, scadenze e classi di storage — questa è la base per regole tecniche nel sistema di backup.
Implementazione tecnica: mappare la policy sui sistemi di backup
Ogni sistema di backup ha meccanismi propri: l’object storage supporta lifecycle rules, i workflow su nastro offrono archiviazione offline, le appliance di backup dispongono di policy per tipi di retention. Tre vie principali di implementazione:
- S3/Object-Storage Lifecycle: trasferimento automatico verso classi di storage più economiche ed eliminazione dopo giorni definiti.
- Backup-Software-Retention: catene incrementali/full con periodi di conservazione per i punti di ripristino.
- Archivi fisici (tape, supporti offline) con meccanismi WORM/Write-Once per conservazione a prova di revisione.
Esempio: S3-Lifecycle-Rule (modello pratico)
Le regole di lifecycle per l’object storage definiscono quando gli oggetti vengono spostati in Glacier/Archive e quando vengono eliminati. Di seguito un JSON semplificato per una regola che sposta nell’archivio più economico dopo 30 giorni e elimina dopo 3650 giorni (10 anni):
{
"Rules": [
{
"ID": "archive-after-30-delete-after-3650",
"Filter": {"Prefix": "invoices/"},
"Status": "Enabled",
"Transitions": [{"Days": 30, "StorageClass": "GLACIER"}],
"Expiration": {"Days": 3650}
}
]
}
Perché funziona: i cloud provider applicano le regole di lifecycle a livello di bucket/prefix. Quando fallisce: se mancano metadati o etichette degli oggetti, gli oggetti possono essere classificati in modo errato. Per questo, definire in anticipo uno standard dei metadati e una strategia di prefissi.
Backup-Software: Ritenzione nelle catene incrementali
Molti sistemi di backup implementano la ritenzione sugli oggetti dei punti di recovery. Problematica sono le catene incrementali: cancellare uno snapshot di base può rendere inutilizzabili i punti di ripristino se il software non supporta strategie di Reverse-Delta o Synthetic-Full.
Buone pratiche:
- Usare Synthetic-Full o backup completi regolari come punti di ancoraggio.
- Configurare la policy in modo che i backup full siano conservati più a lungo dei differential.
- Verificare se il vostro software ripara automaticamente la rottura della catena o richiede un processo di reidratazione separato.
Integrazione con Datenbanken (Basi di dati): particolarità
Per i database definite la ritenzione su due livelli: immagine di backup (p. es. dump consistenti o snapshot) e log delle transazioni (WAL, binlogs). I log delle transazioni consentono il point-in-time recovery (PITR) e sono spesso necessari più a lungo. Fonti di errore tipiche sono l’archiviazione WAL incompleta o la mancata sincronizzazione tra il timing degli snapshot e gli archivi dei log.
Esempio pratico PostgreSQL: pulizia degli archivi WAL
PostgreSQL usa WAL (Write-Ahead Log) per i log delle transazioni. Se gli archivi WAL non vengono puliti con cura, possono riempire lo storage. Uno schema di script semplice mostra come i vecchi backup WAL potrebbero essere cancellati secondo la policy — usare solo in ambienti di test controllati:
#!/bin/bash
# Beispiel: WAL-Archiv löschen, das älter als 3650 Tage ist (nicht produktiv ohne Prüfung!)
find /var/lib/postgresql/wal_archive -type f -mtime +3650 -print -delete
Perché funziona: l’archiviazione basata su file permette la cancellazione in base all’età. Quando fallisce: se gli indici WAL/i metadati dell’archivio non sono coerenti o se un percorso di RESTore necessita di segmenti mancanti. Per questo motivo, prima della cancellazione eseguire sempre test di RESTore.
MySQL: conservazione dei binlog e pulizia manuale
MySQL utilizza i binlog (binary logs) per la replica e il PITR. La pulizia diretta avviene tramite il comando SQL PURGE BINARY LOGS. Una procedura tipica:
-- Liste der vorhandenen binlogs anzeigen
SHOW BINARY LOGS;
-- Alle binlogs bis zu einer bestimmten Datei löschen
PURGE BINARY LOGS TO 'mysql-bin.010';
-- Oder bis zu einem Datum
PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';
Importante: verifichi lo stato della replica e si assicuri che nessuno slave di replica necessiti ancora di log più vecchi.
Oracle RMAN: Retention-Policy konfigurieren
Oracle RMAN offre una Retention-Policy integrata. Un esempio:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
-- oder zeitbasiert
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3650 DAYS;
RMAN gestisce inoltre i cataloghi e consente la pulizia di backup orfani; testi i report RMAN prima dell’eliminazione automatica.
Auditfähigkeit und Nachvollziehbarkeit
Una Retention-Policy è efficace solo quanto le sue evidenze. Gli auditor si aspettano:
- Documentazione della policy e dei responsabili.
- Log automatizzati che attestino le azioni di cancellazione e migrazione.
- Controlli di integrità (checksum) e test di RESTore che dimostrino la recuperabilità.
Tecnicamente significa: attivi i Write-Audit-Logs nel software di backup, salvi le azioni in un log immodificabile (p.es. SIEM centrale, append-only store) e acquisisca le checksum per ogni backup.
Automatische Integritätsprüfung: Checksum-Beispiel
Un semplice workflow genera SHA256-Checksummen al termine di un backup e conserva il file delle checksum in uno storage a prova di revisione:
#!/bin/bash
backup_file=/backup/daily-2026-07-01.tar.gz
sha256sum "$backup_file" > "$backup_file.sha256"
# anschließend Checksummen-Datei in revisionssicheren Speicher verschieben
Importante: le checksum devono essere verificate al momento del RESTore; altrimenti non forniscono una traccia di verifica.
Prüfschritte und Routine-Checks
Per l’operatività giornaliera e mensile sono necessari passaggi di verifica chiari. Una routine sensata:
- Panoramica giornaliera dello stato: job di backup, errori, spazio residuo.
- Controllo di integrità settimanale: test di RESTore a campione di file e dump di database.
- Report di audit mensile: stato di conservazione, cancellazioni imminenti, stato della replica offsite.
- Revisione di compliance annuale: confronto delle scadenze legali con la policy e i costi di storage.
Checkliste für einen Löschlauf (Audit-sicher)
- Validare che gli oggetti da cancellare siano marcati con i metadati di policy.
- Creare un report di cancellazione (quali oggetti, perché, chi ha approvato).
- Conservare il report di cancellazione in un log a prova di revisione.
- Fallback: archivio di quarantena temporaneo prima della cancellazione definitiva.
Typische Stolperfallen und wie man sie vermeidet
Nei progetti emergono problemi ricorrenti:
- Metadati mancanti: oggetti privi di tipo dati/data di creazione conducono a una classificazione del ciclo di vita errata. Soluzione: richiedere la protezione dei metadati nel processo di ingest.
- Rottura delle catene incrementali: la cancellazione non intenzionale di una Base-Full può distruggere le catene. Soluzione: matrice di retention con regola Full-Anchor.
- RESTore non verificato: i backup esistono ma non sono RESTaurabili. Soluzione: test di RESTore automatizzati in ambiente isolato.
- Errata interpretazione legale: considerare i backup come semplici copie e non come archivio. Soluzione: coinvolgere l’ufficio legale e documentare definizioni formali di archivio.
- Trappole di egress e costi: test di RESTore frequenti in classi di archivio cloud possono generare spese elevate. Soluzione: pianificare una strategia di test con campionamenti mirati e test completi basati sul tempo.
Legal Hold, gestione delle chiavi e crittografia
Un Legal Hold (blocco legale) impedisce la cancellazione dei dati durante una procedura legale. Dal punto di vista tecnico un hold viene tipicamente implementato come flag o override della policy. Punti importanti:
- Il Legal Hold può bloccare i cicli di cancellazione; prevedete a tal fine un workflow di approvazione separato.
- Crittografia e gestione delle chiavi: se i backup sono crittografati lato server, la cancellazione della chiave impedisce il ripristino — questo non equivale alla cancellazione dei dati. Documentate separatamente i periodi di conservazione delle chiavi.
- Registro di audit: ogni hold, rilascio e modifica delle chiavi deve essere auditabile.
Esempio: la rotazione delle chiavi non dovrebbe mai eliminare automaticamente chiavi vecchie finché esistono obblighi legali di conservazione o di ripristino. Rimuovete le chiavi solo dopo revisione e con prova che non esistono obblighi di hold legali.
Retention-Policy in ambienti multi-tenant e multi-mandante
In scenari multi-tenant la retention policy deve essere applicata in modo specifico per ciascun mandante. Questo significa:
- Metadati a livello di oggetto con Tenant-ID e tipo di dato.
- Separazione logica delle policy per mandante (es. tramite prefissi, bucket o campi Tenant-ID).
- Reporting per fatturazione e centri di costo, in modo che i mandanti siano informati sulle loro decisioni di conservazione.
Errori tipici: una rimozione globale di regole di lifecycle che interessa tutti i mandanti. Evitate regole globali senza liste di esclusione e testate i casi di applicazione delle regole con dataset campione per tenant.
Monitoraggio, metriche e reporting
Misurare indicatori concreti aiuta a governare compliance e operazioni. Metriche importanti:
- Retention-Compliance-Rate: percentuale di oggetti conformi alla policy definita.
- Istogramma dell’età: distribuzione degli oggetti per età (es. 0–30d, 31–365d, 366–3650d).
- Numero di cancellazioni imminenti per intervallo (7 / 30 / 90 giorni).
- Tasso di successo dei ripristini e tempo medio di ripristino (MRT).
Automatizzate i report e inviate avvisi di compliance mensili ai proprietari e ai team di compliance. Esempi di cruscotti: un grafico a barre con istogramma dell’età e una lista delle top-10 oggetti che causano violazioni di policy.
Modellare i costi di storage
La pianificazione dei costi è operativa. Un modello semplice considera:
- Costi di storage per GB in ciascuna classe di storage (Hot, Cool, Archive).
- Costi di egress al momento del ripristino dalle classi Archive.
- Costi aggiuntivi per versioning e replica (es. Cross-Region).
Formula (semplificata): Costi totali = Summe(Size_i * CostClass_i * RetentionMonths_i) + stima dei costi di RESTore-egress. Usate questa stima nelle decisioni di policy: una conservazione più lunga in classi Archive può risultare più economica se il tasso di RESTore rimane basso.
Strategia di rollback e fallback
Un errore di cancellazione può costare caro. Pianificate una strategia di fallback:
- Fase di quarantena: invece di cancellare immediatamente, posticipare. La quarantena può durare 30–90 giorni.
- Versioning: attivate l’Object-Versioning, così gli oggetti cancellati per errore possono essere ripristinati.
- Copie offline: prima dei cicli di cancellazione create una copia temporanea e immutabile (es. export su nastro).
- Workflow di approvazione: cancellazione solo dopo approvazione a due fasi.
Passaggi pratici di implementazione (checklist per un progetto)
- Definizione delle policy: analizzare i tipi di dati, definire le scadenze, assegnare i responsabili.
- Mappatura tecnica: quali classi di storage, quali job di backup, quali migrazioni.
- Implementazione: configurare le lifecycle-policy e i parametri di retention nel software di backup e nell’object storage.
- Audit: automatizzare il logging, le checksum e i test di ripristino.
- Operatività: report regolari, pianificazione della capacità, revisione annuale.
Configurazione concreta: S3-Versioning + Lifecycle (consigliato)
Il versioning protegge dalle cancellazioni accidentali. In combinazione con le lifecycle-policy si ottiene un processo di eliminazione sicuro:
# Beispiel: Aktivieren von Versioning (AWS CLI)
aws s3api put-bucket-versioning --bucket my-compliance-bucket --versioning-configuration Status=Enabled
# Lifecycle-Regel via CLI/JSON wie oben hochladen
aws s3api put-bucket-lifecycle-configuration --bucket my-compliance-bucket --lifecycle-configuration file://lifecycle.json
Nota: il versioning aumenta il fabbisogno di spazio e i costi — considerarlo nella policy.
Ulteriori workflow operativi e di test
Per concludere, tre comandi operativi concreti che aiutano nella pratica a verificare l’età dei dati e le cancellazioni imminenti.
1) Mostrare l’età degli oggetti in un prefisso S3 (AWS CLI)
aws s3api list-objects-v2 --bucket my-compliance-bucket --prefix invoices/ --query 'Contents[].[Key,LastModified]' --output table
2) Trovare file locali più vecchi di X giorni (Linux)
find /backup/archive/invoices -type f -mtime +3650 -print
3) PowerShell: verificare la lista dei file con l’età (Windows)
Get-ChildItem -Path 'D:BackupsInvoices' -Recurse |
Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-3650))} |
Select-Object FullName, LastWriteTime
Emergenza: procedura in caso di esecuzioni di cancellazione errate
Se le esecuzioni di cancellazione sono state configurate in modo errato o uno script ha rimosso dati prematuramente, seguite questo piano di emergenza:
- Immediato: interrompere tutti i processi di cancellazione e attivare il versioning/Legal Hold, se possibile.
- Messa in sicurezza: creare una copia in quarantena dagli oggetti rimanenti o avviare un’esportazione su nastro.
- Analisi: verificare quali oggetti sono interessati, basandosi su log di audit e checksum.
- Ripristino: ripristinare da quarantena, versioning o nastro; prioritizzare in base all’impatto sul business (RTO/RPO).
- Lezioni apprese: adeguare il processo, migliorare il flusso di approvazione, integrare test automatizzati.
Conclusione
La retention policy è più di un campo di configurazione nel software di backup: è il risultato della classificazione legale, della fattibilità tecnica e della verifica operativa. Implementate le policy considerando i metadati, il versioning, i controlli di integrità e i processi di cancellazione documentati. Testate regolarmente i ripristini e rendete le esecuzioni di cancellazione verificabili tramite audit. In questo modo garantite che il ciclo di vita dei backup sia efficiente in termini di costi e conforme alle normative.