A medida que las regulaciones de privacidad de datos como el GDPR se vuelven más estrictas, es crucial que las empresas se aseguren de que la información personal esté adecuadamente protegida. Una forma de lograr esto es a través de la limpieza de datos, que implica reemplazar datos sensibles con valores aleatorios en bases de datos de entornos inferiores. En este artículo, exploraremos el concepto de limpieza de datos y discutiremos cómo implementarlo en SQL Server.
Comprendiendo la limpieza de datos
La limpieza de datos implica reemplazar información personal sensible con valores aleatorios. Tradicionalmente, la información personal sensible incluye números de tarjetas de crédito, números de identificación de salud y otra información personal identificable. Sin embargo, con el GDPR, las empresas ahora están obligadas a proteger toda la información personal, incluyendo nombres, direcciones físicas y direcciones de correo electrónico.
La sustitución aleatoria es una técnica comúnmente utilizada en la limpieza de datos. Sin embargo, es importante encontrar un equilibrio entre seguridad y usabilidad. Si bien las cadenas completamente aleatorias pueden dificultar las pruebas, el uso de palabras reales puede hacer que los datos de prueba sean más utilizables tanto para las pruebas de código como para las pruebas de rendimiento. Las palabras reales también se distribuyen en un índice de manera similar a los nombres, lo que proporciona un mejor punto de referencia de rendimiento.
Implementando la aleatorización en SQL Server
Para implementar la aleatorización en SQL Server, podemos crear una pequeña base de datos llamada “Words” que contenga una tabla poblada con palabras de un diccionario de código abierto. Luego podemos usar funciones definidas por el usuario (UDFs) para generar palabras y números aleatorios.
Aquí hay un ejemplo de cómo crear la tabla “Words”:
CREATE TABLE [dbo].[wordsEn]( [TheWord] [varchar](50) NOT NULL, [WordID] [int] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_wordsEn] PRIMARY KEY CLUSTERED ( [TheWord] ASC ) WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] ) ON [PRIMARY]
Luego podemos crear UDFs para generar palabras y números aleatorios. Aquí hay un ejemplo de la UDF para generar una palabra aleatoria:
CREATE Function [dbo].[RANDWORD]()
returns VARCHAR(255)
as
BEGIN
return
(
select
top 1
UPPER(LEFT(TheWord,1)) +
LOWER(SUBSTRING(TheWord,2,LEN(TheWord))) as TheWord
from [wordsEn]
where WordId = dbo.RANDBETWEEN(1,(select max(wordid) from WordsEn))
)
END;
Con estas UDFs en su lugar, ahora podemos usarlas para aleatorizar datos en nuestras bases de datos de entornos inferiores. Por ejemplo, podemos actualizar la tabla “CUSTOMER” para reemplazar información sensible con valores aleatorios:
Update CUSTOMER
SET
[First Name] = Words.dbo.RANDWORD()
,[Last Name] = Words.dbo.RANDWORD()
, [Email Address] = Words.dbo.RANDWORD() + Words.dbo.RANDWORD() + '@' + Words.dbo.RANDWORD() + '.nothing';
Aleatorización de fechas
Además de aleatorizar nombres y direcciones de correo electrónico, es posible que también necesitemos aleatorizar fechas, como fechas de nacimiento o fechas de tratamiento. En SQL Server, podemos usar la función DATEADD junto con las funciones CHECKSUM y NEWID para generar fechas aleatorias dentro de un rango especificado. Aquí hay un ejemplo:
DATEADD(DAY, ABS(CHECKSUM(NEWID()) % 21440), '1949-01-01')
Esto producirá un campo de fecha y hora que contiene una fecha aleatoria entre el 1 de enero de 1949 y 21,440 días después de ese día.
Conclusión
La limpieza de datos es una práctica esencial para proteger la información personal en bases de datos de entornos inferiores. Al reemplazar datos sensibles con valores aleatorios, las empresas pueden garantizar el cumplimiento de las regulaciones de privacidad de datos como el GDPR. En SQL Server, podemos usar UDFs y técnicas de aleatorización para lograr esto. Sin embargo, es importante encontrar un equilibrio entre seguridad y usabilidad al generar valores aleatorios.
Recuerda, es crucial probar a fondo el proceso de limpieza de datos antes de implementarlo en un entorno de producción. Siguiendo las mejores prácticas y utilizando las técnicas discutidas en este artículo, puedes anonimizar eficazmente la información personal y proteger la privacidad de tus clientes.
Autor: John F. Tamburo
Twitter: @SQLBlimp
Blog: www.sqlblimp.com