Utilizzando 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 UserId dell'utente.

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

Prerequisiti

Installa l'estensione

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

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

  • Posizione delle funzioni cloud:

    Seleziona la posizione in cui desideri distribuire le funzioni create per questa estensione. Di solito desideri una posizione vicino al tuo database. Per assistenza nella selezione di una posizione, fare riferimento alla guida alla selezione della posizione .

  • Percorsi di Cloud Firestore:

    Quali percorsi nella tua 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 disponi delle 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 Cloud Firestore? Per eliminare anche i documenti nelle sottoraccolte, impostare questo parametro su recursive .

  • Istanza del database in tempo reale:

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

  • Posizione del database in tempo reale:

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

  • Percorsi del database in tempo reale:

    Quali percorsi nell'istanza di Realtime Database contengono dati utente? Lascia vuoto se non usi 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 archiviazione nel cloud:

    Dove memorizzi i dati utente in Google Cloud Storage? Lascia vuoto se non utilizzi Cloud Storage. Inserisci i percorsi completi dei file o delle directory nei bucket di archiviazione, separati da virgole. Utilizza {UID} per rappresentare l'ID utente dell'utente eliminato e utilizza {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 chiamato 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 etichettata con ID utente e tutti i suoi file (come media/{UID} ), inserisci {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} .

Rilevamento dei dati per l'eliminazione

Esistono alcuni meccanismi utilizzati da questa estensione per rilevare i dati da eliminare. Questi meccanismi devono essere configurati esplicitamente affinché l'estensione elimini i dati. L'estensione eliminerà solo i dati esplicitamente configurati per l'eliminazione in base ai meccanismi forniti.

Tieni presente le seguenti differenze comportamentali tra ciascun servizio:

  • Cloud Firestore: il comportamento predefinito prevede 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 "Ricursivo".
  • Realtime Database: tutti i dati nel nodo specificato verranno eliminati.
  • Archiviazione: se viene specificato un percorso di directory, tutti i file e le sottodirectory verranno eliminati.

Per percorso

Quando si configurano i percorsi Cloud Firestore, Realtime Database e Cloud Storage, è possibile definire una variabile UID nei percorsi che verrà sostituita con l'UID dell'utente autenticato. Quando un utente viene eliminato, l'estensione eliminerà tutti i dati digitati su quell'UID nei percorsi specificati, ad esempio:

  • Percorsi Cloud Firestore: users/{UID},admins/{UID}
  • Percorso/i del database in tempo reale: likes/{UID}
  • Percorsi di 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, impostare il parametro di configurazione "Abilita rilevamento automatico" su "Sì".

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

  1. Innanzitutto, l'estensione trova tutte le raccolte root 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 della 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 ciascun documento: a. Se la profondità di ricerca corrente (vedi sotto) è inferiore o uguale alla profondità di ricerca configurata, il processo verrà ripetuto per tutte le sottoraccolte del documento corrente. B. Se i campi di ricerca sono stati configurati, l'estensione controllerà se i campi forniti corrispondono all'UID dell'utente. Se viene trovata una corrispondenza, il documento verrà eliminato.

Profondità di ricerca

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

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

Questa estensione NON eliminerà automaticamente gli UID archiviati in array o mappe e non cercherà i dati digitati dall'ID utente archiviati in sottoraccolte profondamente annidate oltre la profondità specificata sopra.