Ocultar datos sensibles en SQL Database usando DDM

Las organizaciones que captan y almacenan información personal sensible, están en la obligación de ocultar y asegurar estos datos, y evitar que sea accesible y utilizada por cualquiera.

Información como la dirección, número de identificación, número de tarjeta de crédito, débito o cualquier otra información bancaria y financiera en general, así como la información médica; son datos sensibles, que si o si deben permanecer enmascarados.

Hoy, aprenderás la forma más simple de lograrlo utilizando Azure SQL Database, incluso, lo podrás aplicar a cualquier instancia de Azure Synapse Analytics (👈🏼 esta solución es todo un bombón).

Pero en sí, ¿qué es DDM o Dynamic Data Masking (enmascaramiento dinámico de datos)? es una solución que te ayuda a proteger información sensible que se encuentre en tus bases de datos, reemplazando estos datos por otros caracteres para cuando personas no autorizadas los quieran acceder. Algo más o menos así:

  • email: oscar.rojas@dataloop.dev → oxxxxxx@dataloop.dev
  • fecha de nacimiento: 01/09/2000 → xx/xx/xxxx
  • tarjeta de crédito: 1234-5678-9012-3456 → xxxx-xxxx-xxxx-3456

Incluso, podremos ocultar todo el dato por caracteres representativos o indicando su enmascaramiento:

  • Dirección: Calle falsa 123 → ●●●●●●●●
  • CCV: 234 → DDM Applied

DDM aplicará a todos los usuarios no administradores, sin embargo, podremos agregar a ciertos usuarios a la lista blanca para que, sin ser administradores, se les permita ver el dato real que se almacena.


Notas

Para este ejemplo cuento con una Azure SQL Database configurada como Serveless, en ella tengo dos usuarios

  • Oscar → dbo_owner
  • lectura → dbo_datareader

Igualmente, he creado una tabla muy simple llamada “Usuarios”

Consulta de registros en tabla de usuarios

Entorno

Estando en nuestra base de datos dentro de Azure, en la sección de “Security”, encontraremos la opción de “Dynamic Data Masking”, lo cual será una vista igual o similar a esta:

Muestra del portal de configuración de reglas de ofuscación
  • 1: Opción de administración de enmascaramiento dinámico de datos
  • 2: Menú de adición, omisión y salvado de reglas de enmascaramiento
  • 3: Listado de reglas actuales
  • 4: Lista de usuarios excluidos de las reglas, es decir, aquellos a quienes se les mostraran los datos reales
  • 5: Reglas de enmascaramiento sugeridas

A tener en cuenta: estas reglas se aplican por columna, no aplica RLS Row Level Security en DDM. Y las exclusiones de usuario aplican para todas las reglas creadas en la base de datos, es decir, tampoco aplica OLS Object Level Security para exclusión de usuarios, al menos de momento.


Creando reglas

Enmascarando una tarjeta de crédito

Para crear nuestra primera regla daremos clic en el botón “+ Add mask”

Botón para creación de nuevas reglas

Allí, seleccionaremos el ❶ esquema, ❷ tabla y ❸ columna a la que aplicaremos la máscara. Al final, seleccionaremos el ❹ formato de máscara que le aplicaremos.

Ocultar datos de tarjetas de crédito

Azure cuenta con una lista de formatos ya preparados para una aplicación rápida, entre ellos enmascaramiento de número de tarjeta de crédito. Y en este caso seleccionaremos la opción que me ofrece Azure.

Para guardar la regla, damos clic en “Add”, lo que nos regresará a la vista anterior, donde aplicaremos la regla dando clic en “Save”.

Consultando la tabla utilizando un usuario sin permisos de visualización sobre los datos enmascarados, nótese que en el resultado se aplica el formato seleccionado, y solo se nos revelan los últimos 4 número de la tarjeta.

Consulta reglas ocultar datos de TC

Sin embargo, si realizo la misma consulta con un usuario que es owner o se encuentra en la lista blanca del DDM, veremos que esta información es revelada por completo

Consulta reglas ocultar datos con privilegios

De igual manera, es de resaltar que la máscara se aplica indistintamente si este dato cumple con los requisitos para identificarse como una tarjeta, ya que, la longitud de estos varía. La regla solo revela los últimos 4 caracteres, y aplica la máscara.

Enmascarando un correo electrónico

En este ejemplo, utilizaremos también el formato que nos da Azure para email, el cual nos revelará el primer carácter y los últimos 4.

Regla ocultar datos correo

Visualización desde un usuario sin permisos

consulta ocultar reglas correo

Algo que extraño en el DDM aplicado a correos electrónicos es la opción de aplicar enmascaramientos con patrones, y así poder indicar que deseo revelar todo a partir del símbolo de @, y que la mascará muestre algo así:

  • oscar.rojas@dataloop.dev → oxxxx@dataloop.dev
  • pedro.perez@gmail.com → pxxxx@gmail.com

Enmascarar utilizando números aleatorios

En ocasiones será necesario el enmascaramiento de números, tal como el código CCV de las tarjetas de crédito, o el salario de un empleado. Para ello podremos aplicar un formato que oculte el valor real reemplazándolo por símbolos que indique que el valor está protegido, o puede que queramos generar confusión reemplazando el valor real por uno generado de manera aleatoria.

  • CCV: 123 → xxx
  • CCV: 123 → 536

Para este ejercicio, lo haremos generando un valor aleatorio que reemplace el real, por lo que seleccionaremos la opción “Number (random number range)” en la opción de “Masking field format”, luego indico el rango de valores sobre los cuales se generará el random.

Regla ocultar dato CCV

Una vez guardada la regla, al hacer la consulta desde nuestro usuario sin permisos, veremos que para el registro 1 el CCV es 969.

Consulta regla ocultar dato CCV sin privilegios

Pero al consultarlo un usuario con privilegios, podremos observar que el valor real es 123

Consulta regla ocultar dato CCV con privilegios

Recuerden que este artículo se hace con la única intención de ilustrar la forma de aplicar un DDM en Azure, en ningún momento sugiere las mejores técnicas de ofuscación de datos para su organización. Esto lo menciono ya que quizá generar un random sobre el código CCV de una tarjeta puede ser riesgoso, ya que puede confundir al inmoral y termine con el bloqueo de la tarjeta después de varios intentos de robo.

Enmascarar datos sobre un campo de fecha

Siguiendo con el ejemplo de una tarjeta de crédito, en cuanto a los valores que esta tiene y que en conjunto son llave para la realización de transacciones monetarias, encontramos la fecha de vencimiento de la tarjeta; que, aunque en nuestra tabla de ejemplo no se tiene, aplicaremos la regla sobre la fecha de nacimiento.

Utilizando nuevamente las reglas que nos da Azure, podremos observar que nos enmascara todas las fechas de una columna reemplazándola por el 1900-01-01

Regla ocultar dato fecha

Consulta con usuario sin privilegios

Consulta regla ocultar dato fecha sin privilegios

Custom string para enmascarar datos

Finalmente, tenemos los “Custom string” para ofuscación de datos, estos nos permiten aplicar nuestras propias cadenas de enmascarado de datos, las cuales pueden ser de enmascaramiento total o parcial.

Revelando parcialmente el dato

El enmascarado parcial de datos es una técnica muy útil para generar una guía sobre el dato que se está protegiendo. La revelación parcial puede ubicarse al principio y al final del dato, para lo cual se utiliza el prefijo y el sufijo, que en últimas no es más que la longitud del texto que revelaremos.

En este ejemplo aplicaremos una máscara parcial sobre el nombre, para lo cual deseamos revelar los primeros 5 caracteres de la cadena, así como los últimos 3 de esta; la parte interna será reemplazada por guiones.

Regla para nombre

Una vez aplicada, estos son los resultados

Consulta para nombre sin privilegios

Enmascarado total explicito

Por último, aplicaremos un custom que indique explícitamente que el valor tiene una regla DDM aplicada. Para ello utilizaremos el custom string sobre la dirección de residencia, imprimiendo el valor “DDM Applied” en vez del dato real.

Regla para dirección

Como resultado de la consulta

Consulta para dato dirección sin privilegios

Conclusiones

La aplicación de reglas para ofuscación de datos utilizando el portal de Azure, es una forma fácil y rápida de mantener segura la información que nuestra organización almacena de terceros y propia.

Debemos saber que, si una tabla con reglas DDM aplicadas es eliminada, sus reglas desaparecerán, por lo que debemos crear nuevamente las reglas si recreamos la tabla.

La combinación de técnicas como object level security (OLS), row level security (RLS), dynamic data masking (DDM) y data discovery & classification (DDC), conforma una solución potente para la protección de datos sensibles. Pronto hablaremos más de esto.

Saludos

You May Also Like