Utilizzare l'estensione Elimina dati utente

L'estensione Elimina dati utente (delete-user-data) ti consente di eliminare i dati di un utente quando l'utente viene eliminato dal tuo progetto Firebase. Puoi configurare questa estensione per eliminare i dati utente da uno o tutti i seguenti servizi: Cloud Firestore, Realtime Database o Cloud Storage. Ogni attivazione dell'estensione per eliminare i dati è associata al UserId dell'utente.

Questa estensione è utile per rispettare la privacy degli utenti e soddisfare i requisiti di conformità. Tuttavia, l'utilizzo di questa estensione non garantisce la conformità alle normative governative e di settore.

Prerequisiti

Installare l'estensione

Per installare l'estensione, segui i passaggi nella pagina Installa l'estensione Firebase. In sintesi, esegui una delle seguenti operazioni:

Durante l'installazione dell'estensione, ti verrà chiesto di specificare una serie di parametri di configurazione:

  • Località di Cloud Functions:

    Seleziona la posizione in cui vuoi eseguire il deployment delle funzioni create per questa estensione. In genere, è preferibile una località vicina al database. Per assistenza nella selezione di una località, consulta la guida alla selezione della località.

  • Percorsi Cloud Firestore:

    Quali percorsi nell'istanza Cloud Firestore contengono dati utente? Lascia vuoto se non utilizzi Cloud Firestore. Inserisci i percorsi completi, separati da virgole. Puoi rappresentare l'ID utente dell'utente eliminato con {UID}. Ad esempio, se hai le raccolte users e admins e ogni raccolta contiene documenti con l'ID utente come ID documento, puoi inserire users/{UID},admins/{UID}.

  • Modalità di eliminazione di Cloud Firestore:

    (Applicabile solo se utilizzi il parametro Cloud Firestore paths.) Come vuoi eliminare i documenti Cloud Firestore? Per eliminare anche i documenti nelle raccolte secondarie, imposta questo parametro su recursive.

  • Istanza di Realtime Database:

    Da quale istanza di Realtime Database vuoi eliminare i dati utente?

  • Località di Realtime Database:

    (Applicabile solo se hai fornito il parametro Realtime Database instance.) Da quale località Realtime Database vuoi eliminare i dati utente?

  • Percorsi Realtime Database:

    Quali percorsi nell'istanza di Realtime Database contengono dati utente? Lascia vuoto se non utilizzi Realtime Database. Inserisci i percorsi completi, separati da virgole. Puoi rappresentare l'ID utente dell'utente eliminato con {UID}. Ad esempio: users/{UID},admins/{UID}.

  • Percorsi Cloud Storage:

    In quale posizione di Google Cloud Storage vengono archiviati i dati utente? Lascia il campo vuoto se non utilizzi Cloud Storage. Inserisci i percorsi completi di file o directory nei bucket Storage, separati da virgole. Utilizza {UID} per rappresentare l'ID utente dell'utente eliminato e {DEFAULT} per rappresentare il bucket di archiviazione predefinito.

    Ecco una serie di esempi:

    • Per eliminare tutti i file nel bucket predefinito con lo schema di denominazione dei file {UID}-pic.png, inserisci {DEFAULT}/{UID}-pic.png.
    • Per eliminare anche tutti i file in un altro bucket denominato my-app-logs con lo schema di denominazione dei file {UID}-logs.txt, inserisci {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt.
    • Per eliminare anche una directory con etichetta ID utente e tutti i relativi file (ad esempio media/{UID}), inserisci {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

Rilevamento dei dati da eliminare

Questa estensione utilizza alcuni meccanismi per rilevare i dati da eliminare. Questi meccanismi devono essere configurati in modo esplicito affinché l'estensione possa eliminare i dati. L'estensione eliminerà solo i dati configurati esplicitamente per l'eliminazione in base ai meccanismi forniti.

Tieni presente le seguenti differenze di comportamento tra i due servizi:

  • Cloud Firestore: il comportamento predefinito è l'eliminazione superficiale di un documento (le raccolte secondarie non verranno eliminate). Per eliminare in modo ricorsivo tutte le raccolte secondarie di un documento, imposta l'opzione "Modalità di eliminazione di Cloud Firestore" su "Ricorsiva".
  • Realtime Database: tutti i dati nel nodo specificato verranno eliminati.
  • Archiviazione: se viene specificato un percorso di directory, verranno eliminati tutti i file e le sottodirectory.

Per percorso

Quando configuri i percorsi Cloud Firestore, Realtime Database e Cloud Storage, puoi definire una variabile UID nei percorsi che verrà sostituita con l'UID dell'utente autenticato. Quando un utente viene eliminato, l'estensione elimina tutti i dati associati a quell'UID nei percorsi specificati, ad esempio:

  • Percorso o percorsi Cloud Firestore: users/{UID},admins/{UID}
  • Percorso/i Realtime Database: likes/{UID}
  • Percorso o percorsi Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Individuazione automatica (Cloud Firestore)

Per consentire all'estensione di rilevare automaticamente i documenti Firestore da eliminare, imposta il parametro di configurazione "Enable auto discovery" (Attiva rilevamento automatico) su "Yes" (Sì).

Il rilevamento automatico funziona attraversando automaticamente il database per trovare raccolte e documenti che devono essere eliminati in base alla configurazione. L'estensione identifica queste raccolte e questi documenti con la seguente metodologia:

  1. Innanzitutto, l'estensione trova tutte le raccolte principali nel database. Se l'ID di una raccolta corrisponde a quello dell'UID dell'utente, l'intera raccolta viene eliminata (l'eliminazione è ricorsiva o superficiale, a seconda della configurazione delle estensioni per la "Modalità di eliminazione di Cloud Firestore").
  2. In secondo luogo, se l'ID raccolta non corrisponde, l'estensione tenterà di identificare ed eliminare un documento se il suo ID documento corrisponde a quello dell'UID dell'utente.
  3. Infine, per ogni documento: a. Se la profondità di ricerca attuale (vedi sotto) è inferiore o uguale alla profondità di ricerca configurata, il processo verrà ripetuto per tutte le sottoraccolte del documento corrente. b. Se sono stati configurati campi di ricerca, l'estensione verifica se i campi forniti corrispondono all'UID dell'utente. Se viene trovata una corrispondenza, il documento verrà eliminato.

Profondità della ricerca

L'estensione offre un valore di profondità di ricerca configurabile (impostato su 3 per impostazione predefinita). L'attraversamento verrà eseguito solo se la profondità di ricerca attuale è inferiore o uguale alla profondità di ricerca configurata. La profondità di ricerca attuale si basa sulla profondità della raccolta corrente o della raccolta principale dei documenti, ad esempio

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

Questa estensione NON elimina automaticamente gli UID archiviati in array o mappe e non cerca dati indicizzati per ID utente archiviati in sottoraccolte nidificate in profondità oltre il livello specificato sopra.