Protegiendo Datos Confidenciales en SQL Server

En el anterior post aprendimos todo sobre la clasificación de datos en SQL Server. Sin embargo esto no es suficiente. Vamos a aprender que hacer ahora que ya tenemos nuestros datos clasificados.

Estos últimos días hemos estado viendo cómo cifrar y enmascarar datos confidenciales en SQL Server y cómo clasificar los datos en función de su tipología y confidencialidad. Hemos tenido mucha teoría sobre el tema así que hoy vamos con unas aplicaciones prácticas algo distintas que no se suelen ver pero que me parecen muy interesantes. En concreto vamos a tratar de combinar los conceptos de DDM con el resultado de nuestra clasificación de datos.

Clasificación de los datos.

Data Classification es una herramienta que nos permite etiquetar los datos sensibles o confidenciales de nuestras tablas y columnas, asignándoles un nivel de sensibilidad y un tipo de información. De esta forma, podemos identificar fácilmente qué datos requieren una mayor protección y cómo gestionarlos adecuadamente.

Como ejemplo vamos a usar la base de datos AdventureWorks2022, El asistente de clasificación de datos nos ha revelado que la base de datos tiene 32 columnas confidenciales según el RGPD así que las clasificamos como tal.

Enmascarando datos confidenciales

Ya tenemos los datos clasificados, pero eso no es suficiente. También tenemos que asegurarnos de que solo las personas autorizadas puedan acceder a ello. Para ello, podemos usar dos funcionalidades muy potentes de SQL Server: Always Encrypted y el enmascaramiento dinámico de datos (DDM). DDM es una función de SQL Server que te permite ocultar o enmascarar los datos sensibles cuando los consultas, sin modificar los datos reales en la base de datos. De esta forma, puedes limitar la exposición de tus datos a usuarios no autorizados o aplicaciones externas. Vamos a usar esta para el ejemplo.

Localizando las columnas afectadas

Nuestra idea es construir una consulta SQL que genere el enmascaramiento DDM para las consultas confidenciales. Lo primero que necesitaremos será localizar las columnas que tenemos que enmascarar con una consulta SQL. Por suerte para nosotros esta consulta está directamente disponible en la documentación

Enmascarando las consultas con DDM

Con la consulta anterior, ya podremos crear una consulta dinámica para aplicar reglas de enmascaramiento a todas las columnas en función de su tipo:

Resultado

Ahora toda persona que carezca del permiso unmask no podrá ver los datos confidenciales y verá las máscaras que hemos asignado. Os dejo un ejemplo:

Auditar lecturas de datos confidenciales

Es probable que, por temas regulatorios, se nos pida llevar un control sobre los accesos a datos confidenciales. Para ello podemos combinar la auditoría de SQL Server con las columnas que hemos clasificado con el asistente de clasificación de datos. 

La auditoría nos permite crear un registro detallado de todas las operaciones que se realizan sobre los datos clasificados, incluyendo el usuario, la aplicación, la fecha, la hora, el tipo de acción y los datos afectados. Así, podemos monitorizar el uso de los datos sensibles y detectar posibles amenazas o fugas de información.

Para crear una auditoría de lecturas sobre los datos clasificados, tenemos que seguir estos pasos:

  1. Crear un grupo de auditoría en el nivel del servidor, especificando el destino donde se almacenarán los registros (un archivo, una tabla o el registro de eventos de Windows).
  2. Crear una especificación de auditoría en el nivel de la base de datos, asociándola al grupo de auditoría creado y seleccionando las tablas o columnas que queremos auditar (por ejemplo, las que tienen datos clasificados).
  3. Habilitar el grupo de auditoría y las especificaciones de auditoría creadas.

Como habrás podido notar los pasos son los mismos que para una auditoría normal, no tienes que hacer nada más. SQL Server reconocerá las columnas clasificadas como confidenciales y mostrará en la auditoría el tipo de información a la que se ha accedido de esta manera:

Conclusión

Hemos visto un par de formas de ir más allá en la protección de nuestros datos confidenciales pero no son las únicas. Podemos combinar el uso de las vistas del catálogo de datos clasificados con nuestras propias consultas para hacer todo lo que nos podamos imaginar. Podríamos crear una consulta que cree automáticamente Always Encrypted para una mayor seguridad por ejemplo. A partir de aquí el límite lo ponéis vosotros. Como siempre os digo para cualquier duda os dejo a vuestra disposición los comentarios, mi Twitter o mi mail.

Logo SoyDBA

Únete a la newsletter de SoyDBA

Regístrate gratis para no perderte ninguna novedad. Te avisaré de noticias y eventos importantes

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Publicado por Roberto Carrancio

Mi nombre es Roberto Carrancio y soy un DBA de SQL server con más de 10 años de experiencia en el sector. Soy el creador del blog soydba.es donde intento publicar varios artículos a la semana (de lunes a viernes que los fines de semana me gusta estar con mi gente y disfrutar de mi moto) Espero que disfrutes leyendo este blog tanto como yo disfruto escribiendo y que te sea de utilidad. Si tienes alguna sugerencia, pregunta o comentario, puedes dejarlo al final de cada entrada o enviarme un correo electrónico. Estaré encantado de leerte y responderte. ¡Gracias por tu visita! Mi principal interés es compartir mi conocimiento sobre bases de datos con todo el que quiera aprenderlo. Me parece un mundo tan apasionante como desconocido. Fuera de lo profesional me encanta la cocina, la moto y disfrutar de tomar una cervecita con amigos.

Deja una respuesta