A extensão Excluir dados do usuário ( delete-user-data
) permite excluir os dados de um usuário quando ele é excluído do seu projeto do Firebase. Você pode configurar esta extensão para excluir dados do usuário de qualquer um ou de todos os seguintes: Cloud Firestore, Realtime Database ou Cloud Storage. Cada gatilho da extensão para excluir dados é vinculado ao UserId
do usuário.
Esta extensão é útil para respeitar a privacidade do usuário e cumprir os requisitos de conformidade. No entanto, o uso desta extensão não garante a conformidade com as regulamentações governamentais e do setor.
Pré-requisitos
Você deve usar o Firebase Authentication para gerenciar seus usuários.
Esta extensão exclui apenas dados do Cloud Firestore , Realtime Database e Cloud Storage . Se você armazenar dados do usuário em outro lugar, também deverá excluir os dados do usuário dessas fontes ao excluir usuários.
Instale a extensão
Para instalar a extensão, siga as etapas na página Instalar extensão do Firebase . Em resumo, siga um destes procedimentos:
Console do Firebase: clique no seguinte botão:
CLI: execute o seguinte comando:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Durante a instalação da extensão, você será solicitado a especificar vários parâmetros de configuração:
Localização do Cloud Functions:
Selecione o local onde deseja implantar as funções criadas para esta extensão. Geralmente você deseja um local próximo ao seu banco de dados. Para obter ajuda na seleção de um local, consulte o guia de seleção de local .
Caminhos do Cloud Firestore:
Quais caminhos na sua instância do Cloud Firestore contêm dados do usuário? Deixe em branco se você não usa o Cloud Firestore. Insira os caminhos completos, separados por vírgulas. Você pode representar o ID do usuário excluído com
{UID}
. Por exemplo, se você tiver as coleçõesusers
eadmins
e cada coleção tiver documentos com o ID do usuário como IDs de documento, será possível inserirusers/{UID},admins/{UID}
.Modo de exclusão do Cloud Firestore:
(Aplicável apenas se você usar o parâmetro
Cloud Firestore paths
.) Como você deseja excluir documentos do Cloud Firestore? Para excluir também documentos em subcoleções, defina esse parâmetro comorecursive
.Instância do Realtime Database:
De qual instância do Realtime Database você deseja excluir os dados do usuário?
Localização do banco de dados em tempo real:
(Aplicável somente se você tiver fornecido o parâmetro
Realtime Database instance
.) De qual local do Realtime Database você deseja excluir os dados do usuário?Caminhos do Realtime Database:
Quais caminhos na sua instância do Realtime Database contêm dados do usuário? Deixe em branco se você não usa o Realtime Database. Insira os caminhos completos, separados por vírgulas. Você pode representar o ID do usuário excluído com
{UID}
. Por exemplo:users/{UID},admins/{UID}
.Caminhos de armazenamento em nuvem:
Onde você armazena dados do usuário no Google Cloud Storage? Deixe em branco se você não usa o Cloud Storage. Insira os caminhos completos para arquivos ou diretórios nos buckets de armazenamento, separados por vírgulas. Use
{UID}
para representar o ID do usuário excluído e use{DEFAULT}
para representar seu bucket de armazenamento padrão.Aqui está uma série de exemplos:
- Para excluir todos os arquivos do bucket padrão com o esquema de nomenclatura de arquivo
{UID}-pic.png
, insira{DEFAULT}/{UID}-pic.png
. - Para excluir também todos os arquivos em outro bucket chamado
my-app-logs
com o esquema de nomenclatura de arquivo{UID}-logs.txt
, insira{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Para excluir também um diretório rotulado como ID do usuário e todos os seus arquivos (como
media/{UID}
), insira{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Para excluir todos os arquivos do bucket padrão com o esquema de nomenclatura de arquivo
Descobrindo dados para exclusão
Existem alguns mecanismos que esta extensão usa para descobrir dados para exclusão. Esses mecanismos devem ser configurados explicitamente para que a extensão exclua dados. A extensão excluirá apenas dados explicitamente configurados para exclusão com base nos mecanismos fornecidos.
Esteja ciente das seguintes diferenças comportamentais entre cada serviço:
- Cloud Firestore: o comportamento padrão é excluir superficialmente um documento (as subcoleções não serão excluídas). Para excluir recursivamente todas as subcoleções de um documento, defina a opção "Modo de exclusão do Cloud Firestore" como "Recursivo".
- Realtime Database: todos os dados no nó especificado serão excluídos.
- Armazenamento: se um caminho de diretório for especificado, todos os arquivos e subdiretórios serão excluídos.
Por caminho
Ao configurar os caminhos do Cloud Firestore, Realtime Database e Cloud Storage, é possível definir uma variável UID
nos caminhos que será substituída pelo UID do usuário autenticado. Quando um usuário é excluído, a extensão excluirá todos os dados digitados nesse UID nos caminhos fornecidos, por exemplo:
- Caminho(s) do Cloud Firestore:
users/{UID},admins/{UID}
- Caminho(s) do Realtime Database:
likes/{UID}
- Caminho(s) do Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Descoberta automática (Cloud Firestore)
Para permitir que a extensão descubra automaticamente documentos do Firestore para exclusão, defina o parâmetro de configuração "Ativar descoberta automática" como "Sim".
A descoberta automática funciona percorrendo automaticamente o banco de dados para encontrar coleções e documentos que devem ser excluídos de acordo com sua configuração. A extensão identifica essas coleções e documentos com a seguinte metodologia:
- Primeiro, a extensão encontra todas as coleções raiz no banco de dados. Se o ID de uma coleção corresponder ao UID do usuário, toda a coleção será excluída (a exclusão será recursiva ou superficial, dependendo da configuração das extensões para o "modo de exclusão do Cloud Firestore").
- Em segundo lugar, se o ID da coleção não corresponder, a extensão tentará identificar e excluir um documento se o ID do documento corresponder ao UID do usuário.
- Finalmente, para cada documento: a. Se a profundidade de pesquisa atual (veja abaixo) for menor ou igual à profundidade de pesquisa configurada, o processo será repetido para todas as subcoleções do documento atual. b. Se os campos de pesquisa tiverem sido configurados, a extensão verificará se os campos fornecidos correspondem ao UID do usuário. Se uma correspondência for encontrada, o documento será excluído.
Profundidade de pesquisa
A extensão oferece um valor de profundidade de pesquisa configurável (padrão 3). O percurso só será executado se a profundidade de pesquisa atual for menor ou igual à profundidade de pesquisa configurada. A profundidade da pesquisa atual é baseada na profundidade da coleção atual ou da coleção pai de documentos, por exemplo
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Esta extensão NÃO excluirá automaticamente os UIDs armazenados em matrizes ou mapas e não pesquisará dados digitados pelo ID do usuário armazenados em subcoleções profundamente aninhadas além da profundidade especificada acima.