Como usar 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 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

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:

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ções users e admins, e cada coleção tiver documentos com o ID do usuário como IDs de documento, insira 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ê quer excluir documentos do Cloud Firestore? Para excluir também documentos de subcoleções, defina esse parâmetro como recursive.

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

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:

  1. 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".
  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 do UID do usuário.
  3. 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.