Torna al blog Data Governance

Puoi eliminare i dati quando ne hai bisogno? Una checklist di conservazione ed eliminazione per applicazioni in self-hosting

Prima di adottare un'applicazione in self-hosting, verifica più delle sole esportazioni e dei backup. Usa questa checklist per mappare dove risiedono i dati, definire gli eventi di conservazione, verificare cosa comporta davvero l'eliminazione e distinguere la rimozione dei dati attivi da backup, log e servizi connessi.

Team operativo che esamina una checklist di conservazione ed eliminazione dei dati di un'applicazione in self-hosting

Perché la cancellazione è un requisito di selezione dell'applicazione, non solo un compito di privacy policy

Un'applicazione può essere facile da distribuire, esportare e sottoporre a backup, ma restare difficile da governare quando le informazioni devono essere rimosse. La domanda pratica non è semplicemente se l'interfaccia dispone di un pulsante Elimina. È se il tuo team può individuare i dati pertinenti, applicare la corretta regola di conservazione, preservare eccezioni giustificate e produrre prove di ciò che è accaduto.

Questo aspetto è rilevante per i dati personali, ma anche dal punto di vista operativo per le anagrafiche dei clienti, i dati dei dipendenti, i file caricati, i commenti, le credenziali, il materiale di progetto e le informazioni diagnostiche. Le [linee guida della Commissione europea sul GDPR](https://commission.europa.eu/law/law-topic/data-protection/information-business-and-organisations/principles-gdpr_en) descrivono la limitazione della conservazione come il mantenimento dei dati personali non oltre il tempo necessario e la definizione di limiti temporali per cancellarli o riesaminarli. È un principio operativo utile anche quando il GDPR non è l'unico quadro applicabile alla tua organizzazione.

Considera la capacità di cancellazione come un criterio di adozione. Valutala durante una prova o un proof of concept, quando puoi ancora scegliere un'applicazione diversa o progettare controlli compensativi. Non presumere che l'hosting autonomo renda semplice l'eliminazione: i dati possono essere distribuiti tra il database dell'applicazione, lo storage persistente, i backup, i log e i servizi connessi.

  • Rendi la conservazione e l'eliminazione un criterio di accettazione documentato insieme al controllo degli accessi, alle esportazioni, al backup e al ripristino.
  • Valuta i componenti dell'effettiva distribuzione, non solo la documentazione del prodotto o le etichette dell'interfaccia.
  • Richiedi un test ripetibile con dati di esempio prima di inserire informazioni di produzione nel sistema.
  • Affida le questioni legali, contrattuali e relative alla conservazione specifica per settore agli appropriati consulenti interni o esterni.
Perché la cancellazione è un requisito di selezione dell'applicazione, non solo un compito di privacy policy

Inizia con un inventario dei dati: record, file, commenti, profili utente, eventi di audit, log, esportazioni e dati derivati

Non puoi eliminare in modo affidabile informazioni che non hai mappato. Crea un inventario basato sui tipi di dati e sulle copie, invece di fare affidamento su un'unica categoria come “dati dei clienti”. Inizia da ciò che gli utenti possono vedere, quindi segui i percorsi tecnici che elaborano, replicano o trattengono tali dati.

Per ogni categoria, registra la posizione nel sistema, il proprietario dei dati, la finalità, la regola di conservazione, il metodo di eliminazione, i ruoli di accesso, le integrazioni, il trattamento nei backup e la fonte di prova. Le [linee guida NIST sulla gestione dei log](https://nvlpubs.nist.gov/nistpubs/legacy/SP/nistspecialpublication800-92.pdf) ricordano utilmente che conservazione e smaltimento si applicano sia a livello di sistema sia di infrastruttura; i dati dell'applicazione da soli non costituiscono l'intero inventario.

Includi le copie derivate e operative. Un nome o un identificativo potrebbe comparire in un commento, nel nome di un allegato, in un foglio di calcolo esportato, in una notifica, in un indice di ricerca, in una voce della cache o nei metadati dei log. La [documentazione Docker sui driver di logging](https://docs.docker.com/engine/logging/configure/) osserva inoltre che alcuni driver possono aggiungere ai log valori delle variabili d'ambiente e delle etichette del container: esamina quindi ciò che la tua distribuzione inserisce in questi campi.

  • Record principali: contatti, transazioni, progetti, ticket, contenuti, moduli e oggetti aziendali.
  • Dati relativi agli utenti: profili, identificativi di autenticazione, ruoli, preferenze e stato dell'account.
  • Materiale generato dagli utenti: caricamenti, allegati, commenti, revisioni, immagini e documenti incorporati.
  • Dati operativi: eventi di audit, log dell'applicazione, log dei container, log del database, report di errore e metriche, ove pertinenti.
  • Copie derivate: esportazioni, report, indici di ricerca, cache, anteprime, notifiche e payload dei job in background.
  • Copie di storage e resilienza: dump del database, volumi persistenti, snapshot del file store e archivi di backup.
  • Copie esterne: provider email, provider di identità, destinatari di webhook, piattaforme di analytics, strumenti di automazione e object storage.
Inizia con un inventario dei dati: record, file, commenti, profili utente, eventi di audit, log, esportazioni e dati derivati

Definisci gli eventi che attivano conservazione, eliminazione, anonimizzazione o blocco legale

Un piano di conservazione dovrebbe essere guidato dagli eventi. “Conserva per due anni” è incompleto se non tutti comprendono quando inizia il conteggio, cosa lo interrompe, chi approva un'eccezione e come viene eseguita la regola. Gli eventi di attivazione comuni includono la chiusura dell'account, la fine del contratto, il completamento del progetto, la revoca del consenso, la conclusione del supporto e una richiesta di cancellazione approvata.

Distingui l'eliminazione dall'anonimizzazione. L'eliminazione mira a rimuovere i dati identificati nell'ambito di sistema definito. L'anonimizzazione può consentire a un record di restare utile per il reporting solo se non identifica più una persona nel contesto pertinente. Non definire anonimizzazione la semplice rimozione di un nome visualizzato senza valutare i campi residui e la possibilità di collegamento.

Definisci inoltre le procedure di blocco legale o di conservazione prima che si verifichi un caso urgente. L'[articolo 17 del GDPR](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679) stabilisce un diritto alla cancellazione in circostanze specifiche, ma tale diritto è condizionato e non assoluto. Analogamente, le [linee guida NIST](https://nvlpubs.nist.gov/nistpubs/legacy/SP/nistspecialpublication800-92.pdf) raccomandano che la policy di logging specifichi come i record di log interessati dalle richieste di conservazione siano contrassegnati, archiviati e protetti. Il tuo workflow necessita di un modo documentato per sospendere la distruzione ordinaria quando si applica un obbligo valido, limitando al contempo il blocco alle informazioni interessate e riesaminandolo periodicamente.

  • Per ogni classe di dati, definisci: evento di attivazione, periodo di conservazione o intervallo di revisione, azione, approvatore, percorso delle eccezioni e prova conservata.
  • Indica se l'azione consiste in eliminazione permanente, archiviazione, conservazione con accesso limitato, anonimizzazione o pseudonimizzazione.
  • Registra l'ambito di un blocco legale: questioni interessate, fonti dei dati, data di inizio, custode, restrizioni di accesso e data di revisione.
  • Registra il motivo quando una richiesta di cancellazione viene rifiutata, ritardata o soddisfatta solo in parte.
  • Definisci come termina un blocco e come riprende in seguito la normale gestione del ciclo di vita.

Verifica cosa significa “elimina” nell'applicazione: eliminazione logica, cancellazione permanente, archiviazione e disattivazione dell'account

I termini dell'interfaccia non sono garanzie tecniche. “Elimina”, “rimuovi”, “archivia”, “disabilita” e “disattiva” possono produrre risultati molto diversi. Un elemento eliminato può essere nascosto agli utenti normali ma restare disponibile agli amministratori; un account può non poter più accedere mentre il relativo profilo e contenuto rimangono intatti; un archivio può conservare intenzionalmente il record completo.

Esegui un test controllato utilizzando dati sintetici e identificabili in modo univoco. Crea un record, commenti correlati, un allegato e un account utente, ove l'applicazione lo consenta. Quindi esegui ogni azione disponibile e verifica i risultati previsti lato utente e lato amministrativo. Verifica i confini tra ruoli: utenti ordinari, manager, amministratori e client API riescono ancora a trovare o recuperare il contenuto?

Se l'applicazione utilizza PostgreSQL, distingui la visibilità a livello applicativo dalla rimozione fisica immediata delle vecchie versioni delle righe. [PostgreSQL spiega](https://www.postgresql.org/docs/current/routine-vacuuming.html) che, con MVCC, un DELETE o UPDATE non rimuove immediatamente la vecchia versione della riga; VACUUM recupera successivamente lo spazio per il riutilizzo. Il VACUUM standard rende in genere lo spazio riutilizzabile anziché restituirlo al sistema operativo, mentre VACUUM FULL riscrive una tabella per compattarla. Questo è un fatto relativo alla manutenzione del database, non un motivo per aggirare i controlli applicativi o formulare affermazioni non supportate sulla recuperabilità. Stabilisci lo standard di verifica appropriato per il tuo caso d'uso con stakeholder tecnici e di conformità qualificati.

  • L'elemento è assente dalle visualizzazioni ordinarie, dalle ricerche, dalle API e dalle schermate amministrative?
  • Un amministratore può ripristinarlo? In tal caso, con quale ruolo e per quanto tempo?
  • L'eliminazione si propaga ai record figli, ai commenti, agli allegati e alle revisioni?
  • L'eliminazione di un account è diversa dalla disattivazione o dalla revoca dell'accesso?
  • L'applicazione fornisce un'esportazione o un record di audit dell'azione senza conservare contenuti non necessari?
  • Sono disponibili eliminazioni di massa e azioni automatiche di conservazione, oppure l'unica modalità è l'elaborazione manuale?

Traccia i dati correlati: allegati, revisioni, indici di ricerca, notifiche, cache e dati dei job in background

Un test di eliminazione riuscito segue le relazioni, non soltanto il record principale. Parti da un marcatore noto nel record sintetico e cercalo nei contenuti correlati. Esamina le tabelle del database solo se sei autorizzato e competente a farlo; altrimenti, chiedi al responsabile dell'applicazione di spiegare il modello dati e fornire prove supportate.

Gli allegati richiedono particolare attenzione perché possono risiedere in un database, in una directory locale persistente o in object storage esterno. Le revisioni e le anteprime dei documenti possono sopravvivere alla versione corrente. Gli indici di ricerca e le cache possono restare temporaneamente non aggiornati. Le notifiche email e i job in background in coda potrebbero già contenere valori copiati. Decidi quale ritardo, se presente, sia accettabile per ogni componente e come verificherai l'eventuale rimozione.

La configurazione dell'object storage può modificare il significato di eliminazione. AWS documenta che, in un [bucket S3 con versioning abilitato](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html), una richiesta di eliminazione senza un ID versione aggiunge un delete marker anziché eliminare in modo permanente l'oggetto. L'eliminazione permanente richiede la cancellazione delle specifiche versioni conservate. Se un'applicazione utilizza object storage versionato o un servizio compatibile, verifica l'esatto comportamento dello storage e la tua capacità di identificare ogni versione pertinente.

  • Registra la posizione degli allegati e se i file vengono copiati, trasformati o sottoposti a generazione di anteprime.
  • Controlla revisioni, cronologia, cestino o funzionalità di recupero ed eventuali impostazioni di scadenza.
  • Cerca il marcatore di test prima e dopo l'eliminazione tramite la ricerca e le API supportate dall'applicazione.
  • Individua il comportamento di aggiornamento di cache e indici, inclusi eventuali job asincroni.
  • Ispeziona i modelli di notifica, i percorsi di consegna email e le code di job per rilevare contenuti copiati.
  • Per l'object storage esterno, verifica versioning, delete marker, regole di ciclo di vita e prove di eliminazione.

Controlla i sistemi connessi: provider di identità, servizi email, webhook, analytics, strumenti di automazione e storage esterno

Le integrazioni rendono più utili i dati dell'applicazione, ma ampliano il perimetro di eliminazione. Un'applicazione può rimuovere un record locale mentre un provider email conserva una notifica, un workflow di automazione memorizza il suo payload, una destinazione webhook riceve una copia o un provider di identità conserva gli attributi dell'account in base alle proprie regole di ciclo di vita.

Documenta ogni connessione in uscita e in entrata. Per i flussi in uscita, identifica quali campi vengono trasmessi, se viene inviato un payload completo o un identificativo, se tentativi ripetuti o l'elaborazione dei messaggi non recapitabili conservano dati e se il destinatario può eliminarli. Per i flussi in entrata, identifica se il sistema esterno può ricreare un record dopo l'eliminazione.

Questo è anche un punto decisionale. Se un'integrazione critica non può supportare i tuoi requisiti di conservazione e non esiste un'alternativa architetturale accettabile, non considerare sufficiente un pulsante Elimina nell'applicazione locale. Scegli una progettazione dell'integrazione o un'applicazione diversa.

  • Identità: identificativi dell'account, attributi del profilo, processo di deprovisioning e regole sulla fonte autorevole.
  • Email: contenuto dei messaggi, allegati, log di consegna, elenchi di soppressione e controlli di conservazione.
  • Webhook e automazione: contenuto dei payload, tentativi, cronologie dei workflow, log di esecuzione e destinatari a valle.
  • Analytics: campi degli eventi, identificativi, dati relativi agli indirizzi IP ove pertinenti e interfaccia di eliminazione.
  • Storage esterno: ciclo di vita degli oggetti, versioning, repliche, controlli di accesso e record di audit.
  • Documenta un contatto o un responsabile per ogni sistema connesso e per ogni percorso di eliminazione.

Distingui l'eliminazione dei dati attivi dalla conservazione dei backup e dalle procedure di ripristino

L'eliminazione dei dati attivi e la scadenza dei backup risolvono problemi diversi. Rimuovere informazioni dall'applicazione di produzione non le rimuove automaticamente dagli archivi di backup già creati. Al contrario, far scadere i backup non dimostra che l'applicazione attiva abbia eliminato un record. Documenta esplicitamente entrambi i cicli di vita.

Docker osserva che un [volume di dati persiste dopo l'eliminazione del suo container](https://docs.docker.com/engine/storage/volumes/). L'eliminazione o la ricreazione di un container non costituisce quindi una prova della rimozione dei dati dell'applicazione sottostanti. Docker documenta inoltre procedure per eseguire il backup del contenuto dei volumi e ripristinarlo nello stesso volume del container o in un altro: ecco perché i percorsi di ripristino rientrano nella valutazione.

Per un'applicazione gestita da Airbip, le istanze vengono eseguite come workload Docker sui server cloud Airbip e Airbip fornisce backup giornalieri, settimanali e mensili configurabili. I clienti dovrebbero definire la pianificazione e la configurazione di conservazione dei backup richieste, quindi verificare come tale configurazione si allinei alle proprie regole di eliminazione a livello applicativo. L'infrastruttura gestita può rendere pratiche le operazioni del ciclo di vita, ma non decide cosa la tua organizzazione debba conservare, eliminare o preservare in presenza di un blocco.

Testa il ripristino in sicurezza. Ripristina un backup in un ambiente isolato e con controllo degli accessi, ove consentito, verifica che siano presenti i dati storici previsti e conferma che non possano essere scambiati per dati di produzione correnti. Definisci chi può autorizzare un ripristino, quali controlli post-ripristino si applicano e come vengono gestiti i dati ripristinati al termine del test o dell'incidente.

  • Crea un piano di conservazione distinto per dati di produzione, backup, snapshot e archivi esportati.
  • Identifica tutte le posizioni di backup, le frequenze, le finestre di conservazione, la crittografia e le autorità di ripristino nel tuo ambiente documentato.
  • Indica se le richieste di eliminazione influenzano solo i backup futuri e per quanto tempo le copie storiche possono rimanere in base al piano di backup.
  • Testa una procedura di ripristino senza sovrascrivere i dati di produzione.
  • Stabilisci controlli per impedire che il ripristino di un backup obsoleto reintroduca silenziosamente dati in produzione.
  • Non equiparare la rimozione di un container, la rimozione di un volume, la scadenza di un backup e la [sanitizzazione dei supporti](https://csrc.nist.gov/pubs/sp/800/88/r2/final): sono controlli distinti.

Valuta le prove disponibili per gli amministratori: log di eliminazione, audit trail, report esportabili e limiti documentati

Un processo di eliminazione è più facile da difendere e gestire quando produce prove proporzionate. Come minimo, dovresti poter identificare la richiesta o l'evento di attivazione, la decisione, l'operatore o il processo automatico, la data, i sistemi inclusi nell'ambito, le eccezioni e lo stato di completamento. Evita di creare un audit trail che riproduca inutilmente i dati che stavi cercando di rimuovere.

Verifica se l'applicazione offre eventi di audit, report amministrativi o API supportate in grado di produrre tali prove. Se le prove sono incomplete, valuta se un record operativo documentato possa colmare la lacuna. Un registro manuale può essere accettabile per attività a basso volume, ma diventa fragile quando sono coinvolti molti utenti, integrazioni o posizioni di storage.

Anche il logging necessita di controlli propri. NIST consiglia alle organizzazioni di affrontare conservazione, smaltimento, preservazione e responsabilità per l'[infrastruttura di gestione dei log](https://nvlpubs.nist.gov/nistpubs/legacy/SP/nistspecialpublication800-92.pdf). Docker supporta più driver e destinazioni di logging. [Docker afferma](https://docs.docker.com/engine/logging/configure/) inoltre che la modifica della configurazione di logging predefinita si applica ai container creati successivamente, mentre i container esistenti mantengono la propria configurazione fino alla ricreazione. Verifica la configurazione distribuita anziché presumere che una modifica alla policy abbia già alterato ogni workload.

  • Puoi esportare un report di eliminazione che mostri stato e timestamp senza esporre contenuti sensibili non necessari?
  • L'audit trail distingue un'azione dell'utente, un'azione dell'amministratore e un job automatico di conservazione?
  • Puoi documentare un completamento parziale, un blocco legale o un rifiuto giustificato?
  • Dove confluiscono i log dei container, della piattaforma e dell'applicazione e chi è responsabile delle relative impostazioni di conservazione e smaltimento?
  • Le modifiche di configurazione richiedono la ricreazione dei workload prima di diventare effettive?
  • I record di prova sono protetti da controllo degli accessi e conservati solo per il tempo necessario?

Domande frequenti

Qual è la differenza tra eliminare dati da un'applicazione ed eliminarli dai backup?

L'eliminazione nell'applicazione riguarda il sistema attivo e le sue copie operative. La conservazione dei backup riguarda le copie storiche create prima dell'eliminazione. Sono necessari regole, prove e controlli di ripristino separati. Un record potrebbe non essere più visibile in produzione pur restando in un backup finché tale backup non raggiunge la fine del proprio periodo di conservazione documentato.

L'eliminazione di un container Docker elimina i dati dell'applicazione?

Non necessariamente. Docker documenta che un [volume di dati persiste dopo l'eliminazione del suo container](https://docs.docker.com/engine/storage/volumes/). Verifica dove l'applicazione archivia database e file e gestisci tali posizioni di storage persistente separatamente dal ciclo di vita del container.

Un'eliminazione logica è sufficiente per una richiesta di cancellazione?

Dipende dal requisito applicabile e dall'ambito documentato. Un'eliminazione logica può essere utile per il recupero o per brevi periodi di conservazione, ma in genere significa che i dati esistono ancora e possono essere disponibili per gli amministratori o nei workflow di ripristino. Verifica e documenta cosa fa l'azione del prodotto invece di affidarti alla sua etichetta.

Perché i log dovrebbero essere inclusi in una checklist di eliminazione?

I log possono contenere identificativi, dettagli delle richieste, errori e metadati operativi. Le [linee guida NIST](https://nvlpubs.nist.gov/nistpubs/legacy/SP/nistspecialpublication800-92.pdf) trattano la conservazione e lo smaltimento dei log come questioni di policy sia a livello di sistema sia di infrastruttura. Censisci le destinazioni di logging dell'applicazione, dei container e della piattaforma e assegna un responsabile per le relative regole di ciclo di vita.

Come dovrebbe essere testato l'object storage versionato?

Conferma se il versioning dello storage è abilitato, se un'eliminazione standard crea un delete marker e come vengono identificate e rimosse le specifiche versioni conservate. La [documentazione AWS per S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html) mostra che l'eliminazione senza un ID versione in un bucket con versioning abilitato non elimina l'oggetto in modo permanente.

Airbip può decidere i nostri periodi di conservazione o gestire ogni obbligo di eliminazione?

No. Airbip fornisce distribuzione gestita per le applicazioni del catalogo, workload applicativi basati su Docker, automazione di routing e TLS, gestione del ciclo di vita dei servizi, controlli DNS e backup giornalieri, settimanali e mensili configurabili. La tua organizzazione resta responsabile della definizione delle regole di conservazione, delle decisioni di accesso, del comportamento dell'applicazione, dei blocchi legali e dell'ambito di eliminazione richiesto. Conferma i termini di servizio attuali e le opzioni disponibili sul sito web Airbip attivo.

Fonti e approfondimenti

  1. GDPR principles: storage limitation and accountability — European Commission
  2. General Data Protection Regulation, Article 17 — EUR-Lex, Publications Office of the European Union
  3. Docker volumes: persistence, backup, restore and removal — Docker
  4. Docker logging-driver configuration — Docker
  5. Routine vacuuming — PostgreSQL Global Development Group
  6. Guide to Computer Security Log Management — National Institute of Standards and Technology
  7. SP 800-88 Rev. 2: Guidelines for Media Sanitization — National Institute of Standards and Technology
  8. Deleting object versions from versioning-enabled buckets — Amazon Web Services