heygrc
Derecho al olvido del GDPR en el código

Eliminación que debe llegar a todas partes.

El derecho al olvido, Art. 17, otorga a las personas el derecho a que sus datos personales sean eliminados en circunstancias definidas. Mientras que la limitación del almacenamiento se refiere a cuánto tiempo se conservan los datos, el olvido se refiere a si se pueden eliminar realmente a petición, y esto es una propiedad de la ruta de eliminación: solo funciona si llega a todos los lugares donde residen los datos de una persona.

How it shows up in a diff

The shapes the same control failure takes.

El olvido falla cuando una copia de los datos personales permanece en un lugar al que la ruta de eliminación no llega. Las formas recurrentes:

  • Un nuevo almacenamiento no está conectado a la eliminación

    Un cambio añade un lugar donde residen los datos personales (una caché, un índice de búsqueda, una segunda base de datos, una exportación) y la ruta de eliminación de mi cuenta no se actualiza para borrarlos, por lo que una copia sobrevive.

  • Una eliminación se convierte en una eliminación suave

    Una eliminación real se cambia por una bandera (una columna deleted_at), por lo que los datos personales siguen presentes, lo cual no cumple con el olvido.

  • La eliminación es parcial

    El registro principal se elimina, pero los datos personales relacionados en otras tablas, registros o colas de mensajes quedan atrás.

  • Un procesador nunca recibe la orden de eliminar

    Los datos se enviaron a un procesador de terceros y la eliminación no se propaga a ellos, por lo que una copia aguas abajo persiste.

  • El olvido no es realmente accesible

    No existe una ruta funcional para eliminar los datos de una persona en absoluto, solo un proceso manual o ad-hoc que no escala y es fácil de hacer mal.

Worked example

Una nueva copia sin ruta para eliminarla.

Una función de búsqueda de personas añade un índice de búsqueda de perfiles de usuario, que se escribe en cada actualización. Funciona. Pero la ruta de eliminación de la cuenta no se actualiza para borrar el índice, por lo que, tras una solicitud de olvido, la persona desaparece de la base de datos pero sigue en el índice.

users/index.ts+1 -0
async function onUserUpdated(user: User) {  await db.users.save(user)+  await searchIndex.upsert({ id: user.id, name: user.name, email: user.email })}
heygrcGDPR Art. 17

Esto añade una nueva copia del perfil del usuario (nombre, correo electrónico) a un índice de búsqueda, pero la ruta de eliminación de la cuenta no lo borra, por lo que una solicitud de olvido no llegará a él. El Art. 17 (derecho al olvido) exige que la eliminación llegue a todos los almacenamientos de los datos de la persona. Actualiza la ruta de eliminación de la cuenta para eliminar también al usuario del índice y verifica si hay otras copias nuevas.

What an auditor does with this

El olvido se prueba contra todas las copias.

Una revisión de protección de datos verifica que una solicitud de olvido elimine realmente los datos personales de una persona en todos los lugares donde se almacenan, no solo de la base de datos principal: cachés, índices de búsqueda, copias de seguridad (sujetas a su propio manejo aceptado), análisis y procesadores de terceros. La brecha suele ser un almacenamiento añadido en el código sin actualizar la ruta de eliminación, exactamente el tipo de cambio que una revisión del diff puede detectar antes de implementarse.

What this is, and is not

Una revisión, no tu DPO.

heygrc marca los cambios que afectan al derecho al olvido y cita el artículo para que la corrección se realice en la pull request. No gestiona solicitudes de sujetos de datos ni emite determinaciones legales. Detecta el momento en que se añade una nueva copia de datos personales sin una ruta para eliminarla, en el diff.