A extensão "Excluir dados do usuário" (delete-user-data
) permite excluir os dados de um usuário quando ele é excluído do projeto do Firebase. É possível configurar essa extensão para excluir dados do usuário de um ou de todos estes serviços: Cloud Firestore, Realtime Database ou Cloud Storage. Cada gatilho da extensão usada para excluir dados tem chaves no UserId
do usuário.
Essa extensão é útil para respeitar a privacidade do usuário e atender aos requisitos de conformidade. Porém, ela não garante a conformidade com regulamentações do governo ou da indústria.
Pré-requisitos
Use o Firebase Authentication para gerenciar os usuários.
Essa extensão só exclui dados do Cloud Firestore, do Realtime Database e do Cloud Storage. Se você armazena dados de usuários em outro local, exclua também os dados dessas origens ao excluir usuários.
Instalar a extensão
Para instalar a extensão, siga as etapas na página Instalar a extensão do Firebase. Em resumo, siga um destes procedimentos:
Console do Firebase: clique neste 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ê precisará especificar vários parâmetros de configuração:
Local do Cloud Functions:
Selecione o local em que você quer implantar as funções criadas para essa extensão. Normalmente, a melhor opção é um local que esteja perto do seu banco de dados. Se você precisar de ajuda para escolher um local, consulte o guia de seleção de local.
Caminhos do Cloud Firestore:
Quais caminhos na instância do Cloud Firestore contêm dados de usuário? Deixe em branco se você não usa o Cloud Firestore. Insira os caminhos completos separados por vírgulas. Para representar o ID do usuário excluído, use
{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, insirausers/{UID},admins/{UID}
.Modo de exclusão do Cloud Firestore:
Aplicável apenas se você usar o parâmetro
Cloud Firestore paths
. Como você quer excluir documentos do Cloud Firestore? Para excluir também documentos de subcoleções, defina esse parâmetro comorecursive
.Instância do Realtime Database:
Em quais instância do Realtime Database você quer excluir os dados do usuário?
Local do Realtime Database:
Aplicável apenas se você tiver fornecido o parâmetro
Realtime Database instance
. De quais instância do Realtime Database você quer excluir os dados do usuário?Caminhos do Realtime Database:
Quais caminhos na instância do Realtime Database contêm dados de usuário? Deixe em branco se você não usa o Realtime Database. Insira os caminhos completos separados por vírgulas. Para representar o ID do usuário excluído, use
{UID}
. Por exemplo,users/{UID},admins/{UID}
.Caminhos do Cloud Storage:
Em que local do Google Cloud Storage você armazena dados de usuários? Deixe em branco se você não usa o Cloud Storage. Insira os caminhos completos para arquivos ou diretórios nos buckets do Storage, separados por vírgulas. Use
{UID}
para representar o ID do usuário excluído e use{DEFAULT}
para representar o bucket padrão do Storage.Veja alguns exemplos:
- Para excluir todos os arquivos do bucket padrão com o esquema de nomenclatura de arquivos
{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 do arquivo{UID}-logs.txt
, insira{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Para excluir também um diretório marcado com o ID do usuário e todos os arquivos dele (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 arquivos
Como descobrir dados para exclusão
Essa extensão usa alguns mecanismos para descobrir dados para exclusão. Esses mecanismos precisam ser configurados explicitamente para que a extensão exclua dados. A extensão só vai excluir dados configurados explicitamente para isso com base nos mecanismos fornecidos.
Lembre-se das seguintes diferenças comportamentais entre cada serviço:
- Cloud Firestore: o comportamento padrão é a exclusão superficial de um documento (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 do nó especificado serão excluídos.
- Storage: 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, do Realtime Database e do Cloud Storage, é possível definir uma variável UID
nos caminhos que serão substituídos pelo UID do usuário autenticado. Quando um usuário é excluído, a extensão exclui todos os dados com chaves nesse UID nos caminhos especificados. Por exemplo:
- Caminhos do Cloud Firestore:
users/{UID},admins/{UID}
- Caminhos do Realtime Database:
likes/{UID}
- Caminhos do Cloud Storage:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Descoberta automática (Cloud Firestore)
Para que a extensão descubra automaticamente os documentos do Firestore que serão excluídos, defina o parâmetro de configuração "Ativar descoberta automática" como "Sim".
A descoberta automática navega automaticamente pelo banco de dados para encontrar coleções e documentos que precisem ser excluídos de acordo com a 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 do UID do usuário, toda a coleção será excluída. A exclusão é recursiva ou superficial, dependendo da configuração das extensões do "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 do UID do usuário.
- Por fim, 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.
Média de páginas por visita
A extensão oferece um valor configurável de profundidade da pesquisa (o padrão é 3). A travessia só será executada se a profundidade de pesquisa atual for menor ou igual à profundidade de pesquisa configurada. A profundidade de pesquisa atual tem como base a profundidade da coleção atual ou da coleção mãe de documentos. Por exemplo:
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Essa extensão NÃO excluirá automaticamente UIDs armazenados em matrizes ou mapas nem procurará dados codificados por ID do usuário armazenados em subcoleções aninhadas profundamente, além da profundidade especificada acima.