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 in modo da eliminare i dati utente da una o più delle seguenti opzioni: Cloud Firestore, Realtime Database o Cloud Storage. Ogni attivatore dell'estensione per l'eliminazione dei dati è associato 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
Per gestire gli utenti, devi utilizzare Firebase Authentication.
Questa estensione elimina i dati solo da Cloud Firestore, Realtime Database e Cloud Storage. Se memorizzi i dati utente altrove, devi eliminare anche i dati utente da queste origini quando elimini gli utenti.
Installa l'estensione
Per installare l'estensione, segui i passaggi nella pagina Installa estensione Firebase. In sintesi, esegui una delle seguenti operazioni:
Console Firebase: fai clic sul seguente pulsante:
CLI: esegui il seguente comando:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
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 lo User-ID dell'utente eliminato con
{UID}
. Ad esempio, se hai le raccolteusers
eadmins
e ogni raccolta contiene documenti con l'ID utente come ID documento, puoi inserireusers/{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 sottocollezioni, imposta questo parametro surecursive
.Instanza 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 posizione di Realtime Database vuoi eliminare i dati utente?Percorsi di Realtime Database:
Quali percorsi nell'istanza di Realtime Database contengono i dati utente? Lascia vuoto se non utilizzi Realtime Database. Inserisci i percorsi completi, separati da virgole. Puoi rappresentare lo User-ID dell'utente eliminato con
{UID}
. Ad esempio:users/{UID},admins/{UID}
.Percorsi di Cloud Storage:
Dove vengono archiviati 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 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 di 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}
.
- Per eliminare tutti i file nel bucket predefinito con lo schema di denominazione dei file
Rilevamento dei dati da eliminare
Questa estensione utilizza alcuni meccanismi per rilevare i dati da eliminare. Questi meccanismi devono essere configurati esplicitamente 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 ciascun servizio:
- Cloud Firestore: il comportamento predefinito è eliminare un documento in modo superficiale (le sottocollezioni non verranno eliminate). Per eliminare in modo ricorsivo tutte le sottocollezioni di un documento, imposta l'opzione "Modalità di eliminazione di Cloud Firestore" su "Ricorsiva".
- Realtime Database: tutti i dati nel nodo specificato verranno eliminati.
- Spazio di archiviazione: se viene specificato un percorso della directory, tutti i file e le sottodirectory verranno eliminati.
Per percorso
Quando configuri i percorsi di 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 elimina tutti i dati memorizzati nell'UID in questione nei percorsi specificati, ad esempio:
- Percorsi Cloud Firestore:
users/{UID},admins/{UID}
- Percorsi di Realtime Database:
likes/{UID}
- Percorsi 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 il rilevamento automatico" su "Sì".
Il rilevamento automatico funziona esaminando automaticamente il database per trovare raccolte e documenti da eliminare in base alla configurazione. L'estensione identifica queste raccolte e questi documenti con la seguente metodologia:
- 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").
- In secondo luogo, se l'ID raccolta non corrisponde, l'estensione tenterà di identificare ed eliminare un documento se il relativo ID corrisponde a quello dell'UID dell'utente.
- Infine, per ogni documento: a. Se la profondità di ricerca corrente (vedi di seguito) è inferiore o uguale a quella configurata, la procedura verrà ripetuta per tutte le sottocollezioni del documento corrente. b. Se sono stati configurati i campi di ricerca, l'estensione verificherà 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 (il valore predefinito è 3). L'esplorazione verrà eseguita solo se la profondità di ricerca corrente è inferiore o uguale a quella configurata. La profondità di ricerca corrente 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 eliminerà automaticamente gli UID archiviati in array o mappe e non cercherà i dati basati su ID utente archiviati in sottocollezioni nidificate oltre la profondità specificata sopra.