¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Proteger datos personales y anonimizar

Después de esta lección: Puedo tratar datos personales de forma legal y proteger los de una tabla.

Lección de 50 min5 comandosLaboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Para qué quiere mi fecha de nacimiento?

Un dato personal es cualquier dato que identifica a una persona, sola o junto con otros datos. La ley europea de protección de datos (RGPD) dice cómo hay que tratarlos.

Una app para reservar una pista de fútbol te pide nombre, dirección, teléfono y fecha de nacimiento. Para reservar una pista no hace falta casi nada de eso.

Al terminar esta lección

Nota

Puedo tratar datos personales de forma legal y proteger los de una tabla.

Palabras clave

PalabraQué significaEjemplo
Dato personalun dato que identifica a una personaun correo
Consentimientoel permiso libre y claro de la persona
Minimizaciónpedir y guardar solo los datos necesarios
Enmascararocultar una parte de un datoin***@example.com
Anonimizarquitar lo que permite reconocer a la persona
Derecho de accesopoder pedir una copia de tus propios datos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Qué cuenta como dato personal

Un nombre es un dato personal. También lo son un correo, un teléfono, una foto, una dirección IP o un número de cliente que lleva a una persona.

Hay datos que parecen inofensivos solos y no lo son juntos. Una ciudad, una edad y un instituto pueden señalar a una sola persona.

Ejemplo resuelto: ¿es un dato personal?

Dato¿Personal?Por qué
Ines WalkerSíEs un nombre y apellido
[email protected]SíLleva a una persona concreta
La media de pedidos de la tiendaNoNo habla de nadie en concreto
Ciudad, edad e instituto de un alumnoSíJuntos pueden señalar a una sola persona

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Aceptar el certificado del servidor

Comando
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un nombre corto para la tienda

Comando
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mirar tres clientes inventados

Comando
sql "SELECT first_name, email, phone FROM customers ORDER BY id LIMIT 3"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cinco reglas para tratar datos personales

Primero, necesitas una razón legal, como el permiso de la persona o un contrato. Segundo, pides solo lo necesario. Tercero, usas los datos solo para lo que dijiste.

Cuarto, los guardas el menor tiempo posible y bien protegidos. Quinto, la persona puede pedir ver, corregir o borrar sus datos.

Ejemplo resuelto: la app de reservas

ReglaQué hace bien la appQué haría mal
Razón legalPide permiso claro para mandar avisosMarca la casilla por defecto
Solo lo necesarioPide nombre, correo y horaPide también la fecha de nacimiento
Para lo que dijoUsa el correo para confirmar la reservaVende el correo a otra empresa
Poco tiempo y seguroBorra la reserva a los dos añosGuarda todo para siempre sin clave
Derechos de la personaDeja descargar o borrar la cuentaNo contesta a quien lo pide

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que basta quitar el nombre para anonimizar una tabla. No basta: una ciudad, una edad y un correo pueden señalar a una sola persona. Anonimizar es que nadie pueda reconocer a la persona, ni siquiera juntando otros datos.

La minimización empieza en la consulta

Cuando haces un informe, pide solo las columnas que necesitas. Un informe de clientes por país no necesita nombres ni correos.

Con GROUP BY y COUNT sacas el número de clientes de cada país, y no sale ninguna persona.

Clientes por país, sin ningún nombre

Comando
sql "SELECT country, COUNT(*) AS customers FROM customers GROUP BY country ORDER BY country"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Enmascarar oculta la parte que identifica

Si un informe necesita enseñar un dato, oculta una parte. De un correo dejas las dos primeras letras y el dominio.

LEFT(email, 2) toma las dos primeras letras y CONCAT junta textos. Otra técnica es generalizar: cambiar 34 años por «30-39».

Tres correos con la parte oculta

Comando
sql "SELECT CONCAT(LEFT(email, 2), '***@example.com') AS masked FROM customers ORDER BY id LIMIT 3"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pruébalo: ocultar un correo en Python

Código: python
# Oculta la parte de un correo que identifica a la persona.
email = "[email protected]"
at = email.find("@")
print(email[:2] + "***" + email[at:])
# Cambia el correo por otro de tu invención y vuelve a ejecutarlo.

Para ir más lejos

Tu función deja la ciudad, el tramo de edad y el correo oculto. En un pueblo pequeño, ¿podría alguien reconocer a una persona con esos tres datos? Explica por qué.

Después propón un cambio que lo haga más difícil, como agrupar las ciudades por provincia.

Sobre este laboratorio y su código: Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.