Cómo usar la extensión Borrar datos del usuario

Con la extensión Borrar datos del usuario (delete-user-data), puedes borrar los datos de un usuario cuando se borre de tu proyecto de Firebase. Puedes configurar esta extensión para borrar datos del usuario de Cloud Firestore, Realtime Database o Cloud Storage. Cada activador de la extensión para borrar datos está vinculado al UserId del usuario.

Esta extensión es útil para respetar la privacidad del usuario y satisfacer los requisitos de cumplimiento. Sin embargo, su uso no garantiza que cumplas con las reglamentaciones gubernamentales o del sector.

Requisitos previos

Instala la extensión

Para instalar la extensión, sigue los pasos que se indican en la página Cómo instalar una Extensión de Firebase. En resumen, realiza una de las siguientes acciones:

Durante la instalación de la extensión, se te solicitará que especifiques una serie de parámetros de configuración:

  • Ubicación de Cloud Functions:

    Selecciona la ubicación en la que deseas implementar las funciones creadas para esta extensión. Por lo general, es recomendable usar una ubicación cercana a tu base de datos. Si necesitas ayuda para elegir una, consulta la guía de selección de ubicaciones.

  • Rutas de acceso de Cloud Firestore:

    ¿Qué rutas de acceso de tu instancia de Cloud Firestore contienen datos de los usuarios? Deja el campo en blanco si no usas Cloud Firestore. Ingresa las rutas completas separadas por comas. Puedes representar el ID del usuario borrado con {UID}. Por ejemplo, si tienes las colecciones users y admins, y cada colección tiene documentos con el ID del usuario como ID de los documentos, puedes ingresar users/{UID},admins/{UID}.

  • Modo de eliminación de Cloud Firestore

    (Solo corresponde si usas el parámetro Cloud Firestore paths). Determina cómo se borran los documentos de Cloud Firestore. Si quieres que también se borren los documentos de las subcolecciones, configura este parámetro como recursive.

  • Instancia de Realtime Database:

    ¿Desde qué instancia de Realtime Database quieres borrar los datos del usuario?

  • Ubicación de Realtime Database:

    (Solo corresponde si proporcionaste el parámetro Realtime Database instance). ¿Desde qué ubicación de Realtime Database quieres borrar los datos del usuario?

  • Rutas de acceso de Realtime Database:

    ¿Qué rutas de acceso de la instancia de Realtime Database contienen datos de los usuarios? Deja el campo en blanco si no usas Realtime Database. Ingresa las rutas completas separadas por comas. Puedes representar el ID del usuario borrado con {UID}. Por ejemplo: users/{UID},admins/{UID}.

  • Rutas de acceso de Cloud Storage:

    ¿Dónde se almacenan los datos del usuario en Google Cloud Storage? Deja el campo en blanco si no usas Cloud Storage. Ingresa las rutas de acceso completas y separadas por comas a los archivos o directorios de los buckets de Storage. Usa {UID} para representar el ID del usuario que se borró y {DEFAULT} para representar el bucket de Storage predeterminado.

    Estos son algunos ejemplos:

    • Para borrar todos los archivos del bucket predeterminado con el esquema de denominación de archivos {UID}-pic.png, ingresa {DEFAULT}/{UID}-pic.png.
    • Para borrar también todos los archivos de otro bucket llamado my-app-logs con el esquema de denominación de archivos {UID}-logs.txt, ingresa {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt.
    • Para también borrar un directorio etiquetado por ID del usuario y todos sus archivos (como media/{UID}), ingresa {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}.

Cómo descubrir datos para la eliminación

Hay algunos mecanismos que esta extensión utiliza para descubrir datos y borrarlos. Estos mecanismos deben configurarse de manera explícita para que la extensión borre los datos. La extensión solo borrará los datos que estén configurados para borrarse de manera explícita, según los mecanismos proporcionados.

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

  • Cloud Firestore: el comportamiento predeterminado es borrar un documento de forma superficial (no se borrarán las subcolecciones). Para borrar de forma recursiva todas las subcolecciones de un documento, establece la opción "Modo de eliminación de Cloud Firestore" en "Recursiva".
  • Realtime Database: se borrarán todos los datos del nodo especificado.
  • Almacenamiento: si se especifica una ruta de acceso del directorio, se borrarán todos los archivos y subdirectorios.

Por ruta

Cuando configuras las rutas de Cloud Firestore, las de Realtime Database y las de Cloud Storage, puedes definir una variable de UID en las rutas de acceso que se reemplazará por el UID del usuario autenticado. Cuando se borra un usuario, la extensión borra todos los datos que contiene ese UID en las rutas de acceso proporcionadas, por ejemplo:

  • Las rutas de acceso de Cloud Firestore: users/{UID},admins/{UID}
  • Las rutas de acceso de Realtime Database: likes/{UID}
  • Las rutas de acceso de Cloud Storage: {DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

Descubrimiento automático (Cloud Firestore)

Si deseas habilitar la extensión a fin de que descubra automáticamente los documentos de Firestore para borrarlos, establece el parámetro de configuración "Habilitar descubrimiento automático" en "Sí".

El descubrimiento automático recorre la base de datos de forma automática para encontrar colecciones y documentos que se deban borrar de acuerdo con la configuración. La extensión identifica esas colecciones y documentos con la siguiente metodología:

  1. En primer lugar, la extensión busca todas las colecciones raíz en la base de datos. Si el ID de una colección coincide con el del UID del usuario, se borra toda la colección (la eliminación es recursiva o superficial, según la configuración de la extensión para "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 borrar un documento si el ID del documento coincide con el UID del usuario.
  3. Por último, para cada documento: a. Si el promedio de páginas vistas por búsqueda actual (ver a continuación) es menor o igual que el promedio de páginas vistas por búsqueda configurado, el proceso se repetirá para todas las subcolecciones actuales del documento. b. Si se configuraron los campos de búsqueda, la extensión verificará si los campos proporcionados coinciden con el UID del usuario. Si se encuentra una coincidencia, se borrará el documento.

Promedio de vistas de página por búsqueda

La extensión ofrece un valor de promedio de páginas vistas por búsqueda configurable (la configuración predeterminada es 3). El recorrido solo se ejecutará si el promedio de páginas vistas por búsqueda es inferior o igual al promedio de páginas vistas por búsqueda configurado. El promedio de páginas vistas por búsqueda actual se basa en la profundidad de la colección actual o 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 borrará de forma automática los UID almacenados en arrays o mapas, y no buscará datos protegidos por el ID del usuario almacenados en subcolecciones anidadas de forma profunda que superen el promedio especificado anteriormente.