Usando la extensión Eliminar datos de usuario

La extensión Eliminar datos de usuario ( delete-user-data ) le permite eliminar los datos de un usuario cuando el usuario se elimina de su proyecto de Firebase. Puede configurar esta extensión para eliminar datos de usuario de cualquiera o todos los siguientes: Cloud Firestore, Realtime Database o Cloud Storage. Cada activador de la extensión para eliminar datos está vinculado al UserId del usuario.

Esta extensión es útil para respetar la privacidad del usuario y cumplir con los requisitos de cumplimiento. Sin embargo, el uso de esta extensión no garantiza el cumplimiento de las regulaciones gubernamentales y de la industria.

Requisitos previos

Instalar la extensión

Para instalar la extensión, siga los pasos en la página Instalar la extensión de Firebase . En resumen, haga una de las siguientes cosas:

Durante la instalación de la extensión, se le pedirá que especifique una serie de parámetros de configuración:

  • Ubicación de funciones en la nube:

    Seleccione la ubicación donde desea implementar las funciones creadas para esta extensión. Por lo general, desea una ubicación cercana a su base de datos. Para obtener ayuda para seleccionar una ubicación, consulte la guía de selección de ubicación .

  • Rutas de Cloud Firestore:

    ¿Qué rutas de tu instancia de Cloud Firestore contienen datos de usuario? Déjalo vacío si no usas Cloud Firestore. Ingrese las rutas completas, separadas por comas. Puede representar el ID de usuario del usuario eliminado con {UID} . Por ejemplo, si tiene las colecciones users y admins , y cada colección tiene documentos con el ID de usuario como ID de documento, puede ingresar users/{UID},admins/{UID} .

  • Modo de eliminación de Cloud Firestore:

    (Solo aplicable si usa el parámetro Cloud Firestore paths ). ¿Cómo desea eliminar documentos de Cloud Firestore? Para eliminar también documentos en subcolecciones, establezca este parámetro en recursive .

  • Instancia de base de datos en tiempo real:

    ¿De qué instancia de Realtime Database desea eliminar los datos del usuario?

  • Ubicación de la base de datos en tiempo real:

    (Solo se aplica si proporcionó el parámetro Realtime Database instance ). ¿Desde qué ubicación de Realtime Database desea eliminar los datos del usuario?

  • Rutas de bases de datos en tiempo real:

    ¿Qué rutas en su instancia de Realtime Database contienen datos de usuario? Déjelo vacío si no utiliza Realtime Database. Ingrese las rutas completas, separadas por comas. Puede representar el ID de usuario del usuario eliminado con {UID} . Por ejemplo: users/{UID},admins/{UID} .

  • Rutas de almacenamiento en la nube:

    ¿En qué lugar de Google Cloud Storage se almacenan los datos de los usuarios? Déjelo vacío si no usa Cloud Storage. Ingrese las rutas completas a los archivos o directorios en sus depósitos de almacenamiento, separadas por comas. Utilice {UID} para representar el ID de usuario del usuario eliminado y utilice {DEFAULT} para representar su depósito de almacenamiento predeterminado.

    He aquí una serie de ejemplos:

    • Para eliminar todos los archivos en su depósito predeterminado con el esquema de nombres de archivos {UID}-pic.png , ingrese {DEFAULT}/{UID}-pic.png .
    • Para eliminar también todos los archivos en otro depósito llamado my-app-logs con el esquema de nombres de archivos {UID}-logs.txt , ingrese {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt .
    • Para eliminar también un directorio con la etiqueta de ID de usuario y todos sus archivos (como media/{UID} ), ingrese {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID} .

Descubriendo datos para su eliminación

Hay algunos mecanismos que utiliza esta extensión para descubrir datos para su eliminación. Estos mecanismos deben configurarse explícitamente para que la extensión elimine datos. La extensión solo eliminará los datos que estén configurados explícitamente para eliminarse según los mecanismos proporcionados.

Tenga en cuenta las siguientes diferencias de comportamiento entre cada servicio:

  • Cloud Firestore: el comportamiento predeterminado es eliminar superficialmente un documento (no se eliminarán las subcolecciones). Para eliminar de forma recursiva todas las subcolecciones de un documento, configure la opción "Modo de eliminación de Cloud Firestore" en "Recursivo".
  • Base de datos en tiempo real: se eliminarán todos los datos del nodo especificado.
  • Almacenamiento: si se especifica una ruta de directorio, se eliminarán todos los archivos y subdirectorios.

Por camino

Al configurar las rutas de Cloud Firestore, Realtime Database y Cloud Storage, es posible definir una variable UID en las rutas que se reemplazará con el UID del usuario autenticado. Cuando se elimina un usuario, la extensión eliminará todos los datos ingresados ​​en ese UID en las rutas indicadas, por ejemplo:

  • Ruta(s) de Cloud Firestore: users/{UID},admins/{UID}
  • Ruta(s) de la base de datos en tiempo real: likes/{UID}
  • Rutas de almacenamiento en la nube: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Descubrimiento automático (Cloud Firestore)

Para permitir que la extensión descubra automáticamente los documentos de Firestore para eliminar, establezca el parámetro de configuración "Habilitar descubrimiento automático" en "Sí".

El descubrimiento automático funciona recorriendo automáticamente la base de datos para encontrar colecciones y documentos que deben eliminarse según su configuración. La extensión identifica aquellas colecciones y documentos con la siguiente metodología:

  1. Primero, la extensión busca todas las colecciones raíz en la base de datos. Si el ID de una colección coincide con el UID del usuario, se elimina toda la colección (la eliminación es recursiva o superficial, según la configuración de las extensiones para el "modo de eliminación de Cloud Firestore").
  2. En segundo lugar, si el ID de la colección no coincide, la extensión intentará identificar y eliminar un documento si su ID de documento coincide con el UID del usuario.
  3. Finalmente, para cada documento: a. Si la profundidad de búsqueda actual (ver a continuación) es menor o igual a la profundidad de búsqueda configurada, el proceso se repetirá para todas las subcolecciones del documento actual. b. Si se han configurado campos de búsqueda, la extensión comprobará si los campos proporcionados coinciden con el UID del usuario. Si se encuentra una coincidencia, el documento se eliminará.

Profundidad de búsqueda

La extensión ofrece un valor de profundidad de búsqueda configurable (predeterminado en 3). El recorrido solo se ejecutará si la profundidad de búsqueda actual es menor o igual a la profundidad de búsqueda configurada. La profundidad de búsqueda actual se basa en la profundidad de la colección actual o de la colección principal de documentos, por ejemplo

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

Esta extensión NO eliminará automáticamente los UID almacenados en matrices o mapas, y no buscará datos ingresados ​​por ID de usuario almacenados en subcolecciones profundamente anidadas más allá de la profundidad especificada anteriormente.