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 elementi: Cloud Firestore, Realtime Database o Cloud Storage. Ogni trigger dell'estensione per eliminare i dati è associato all'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 statali e di settore.

Prerequisiti

Installare l'estensione

Per installare l'estensione, segui i passaggi indicati nella pagina Installare 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 località in cui vuoi eseguire il deployment delle funzioni create per questa estensione. In genere, è preferibile scegliere una località vicina al database. Per assistenza nella selezione di una località, consulta la guida alla selezione della località.

  • Percorsi di Cloud Firestore:

    Quali percorsi nell'istanza di Cloud Firestore contengono i dati utente? Lascia il campo 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 ha 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 di Cloud Firestore? Per eliminare anche i documenti nelle sottoraccolte, 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à di Realtime Database vuoi eliminare i dati utente?

  • Percorsi di Realtime Database:

    Quali percorsi nell'istanza di Realtime Database contengono i dati utente? Lascia il campo 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 di Cloud Storage:

    Dove in Google Cloud Storage memorizzi 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 Storage 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 anche eliminare 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}.

Individuare i dati da eliminare

Esistono alcuni meccanismi che questa estensione utilizza per individuare 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 in modo esplicito per l'eliminazione in base ai meccanismi forniti.

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

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

Per percorso

Quando configuri i percorsi di 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/i di Cloud Firestore: users/{UID},admins/{UID}
  • Percorso/i di Realtime Database: likes/{UID}
  • Percorso/i di Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Rilevamento automatico (Cloud Firestore)

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

Il rilevamento automatico funziona attraversando automaticamente il database per trovare le raccolte e i documenti da eliminare in base alla configurazione. L'estensione identifica queste raccolte e questi documenti con la seguente metodologia:

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

Profondità della ricerca

L'estensione offre un valore di profondità di ricerca configurabile (il valore predefinito è 3). L'attraversamento verrà eseguito solo se la profondità di ricerca corrente è minore o uguale alla profondità di ricerca configurata. La profondità di ricerca corrente si basa sulla profondità della raccolta principale della raccolta o dei documenti corrente, 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 memorizzati in array o mappe e non cerca i dati associati all'ID utente memorizzati in sottoraccolte nidificate in profondità oltre la profondità specificata sopra.