Usando a extensão Excluir dados do usuário

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

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:

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ções users e admins e cada coleção tiver documentos com o ID do usuário como IDs de documento, será possível inserir users/{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 como recursive .

  • 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} .

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:

  1. 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").
  2. 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.
  3. 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.