Enmascaramiento de datos dinámicos (Dynamic Data Masking)

[youtube https://www.youtube.com/watch?v=Yu5_B6g4TvI]

SQL Server 2016 introduce una nueva característica de seguridad llamada Dynamic Data Masking (DDM) que no está destinada a ser una súper medida de
seguridad infalible, como lo es el cifrado, pero se puede considerar como una
ofuscación o bloqueo de información a los usuarios con menos privilegios, y
puede ser fácil de aplicar con restricciones de enmascaramiento.

Para mostrar cómo funciona la característica, vamos a crear una base de
datos con una tabla simple a la que insertaremos 10 filas.

CREATE database TestDataMasking
go

Use TestDataMasking
go

–Creacion de tabla

Create table dbo.Cliente
(Cliente_Codigo int,
Cliente_Nombre varchar(100),
Cliente_FechaInicio datetime,
Cliente_EMail varchar(100),
Cliente_TarjetaCredito Varchar(100)
)
go

 — ingreso de datos de ejemplo

Insert into dbo.Cliente values(101,‘Visoalgt’,‘2016-08-11 00:34:51:090’,‘YoshiTannamuri@visoalgt.com’,‘9135-5555-8798’)

Insert into dbo.Cliente  values(102,‘Cardenas Corp’,‘2016-01-08 19:44:51:090’,‘DanielTonini@cardenas.com’,‘1555-9857-8709’)

Insert into dbo.Cliente values(103,‘Alfreds Futterkiste’,‘2015-08-19 19:44:51:090’,‘PhilipCramer@futterkiste.com’,‘7675-3425-3433’)

Insert into dbo.Cliente values(104,‘Antonio Moreno Taquería’,‘2014-08-19 19:44:51:090’,‘PatriciaMcKenna@tqueria.com’,‘5535-0297-6523’)

Insert into dbo.Cliente values(105,‘Around the Horn’,‘2014-08-04 19:44:51:090’,‘YoshiLatimer@araound.com’,‘1354-2534-4534’)

Insert into dbo.Cliente values(106,‘Berglunds snabbköp’,‘2015-08-10 19:44:51:090’,‘chbrancar@beglunds.com’,‘5203-4560-5455’)

Insert into dbo.Cliente  values(107,‘Bs Beverages’,‘2015-04-17 19:44:51:090’,‘SimonCrowther@beverages’,‘555-9482-3587’)

Insert into dbo.Cliente values(108,‘Bólido  Comidas preparadasCable VGA’,‘2015-08-21 19:44:51:090’,‘FelipeIzquierdo@bolido.com’,‘555-7555-4545’)

Insert into dbo.Cliente  values(109,‘X enterprice’,‘2015-08-06 19:44:51:090’,‘CarlosGonzalez@xenterprice.com’,‘2833-2951-4544’)

Insert into dbo.Cliente  values(110,‘Chop-suey Chinese’,‘2015-08-26 19:44:51:090’,‘JohnSteel@chop.com’,‘5535-1340-3453’)

go

—Consultar la tabla solo para revisión.
 Select * from Cliente

 

Ahora, vamos a añadir algunas máscaras para algunas de estas columnas para
proteger la privacidad de los datos de los usuarios normales. Hay cuatro tipos de máscaras soportados
actualmente:

 

  • Default()
    • para cadenas de texto, muestra x para cada carácter (hasta 4)
    • para los tipos numéricos, muestra 0
    • para las fechas, muestra el 1900-01-01
  • email()
    • revela el primer carácter, a continuación, reemplaza el resto con XXX@XXXX.com
  • partial()
    • se puede definir una cadena personalizada para representar la máscara, incluyendo
      cuántos caracteres iniciales y finales se van a mostrar de la cadena original.
  • Random()
    • Una función de enmascaramiento aleatorio que se puede usar con cualquier tipo
      numérico a fin de enmascarar el valor original con uno aleatorio dentro de un intervalo especificado.

 

Ejemplo:

— Se mostraran los dos primeros caracteres y el ultimo carácter del nombre
 ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_Nombre ADD MASKED WITH (FUNCTION = ‘partial(2,»XXXXXXXX», 1)’);

— Todas las direcciones de correo se mostraran nXXX@XXXX.com
ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_Email ADD MASKED WITH (FUNCTION = ‘email()’);

— Se mostrará el dato de la siguiente manera nXXX-XXXX-XXXXn 
ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_TarjetaCredito ADD MASKED WITH (FUNCTION = ‘partial(1,»XXXX-XXXX-XXXXX»,1)’);

— Todas las fechas las mostrara como 1900-01-01
 ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_FechaInicio ADD MASKED WITH (FUNCTION = ‘default()’);

Para un administrador de sistemas o db_owner, no hay enmascaramiento
aplicado en absoluto, pero para un usuario con los privilegios más básicos al
momento de efectuar la consulta a la tabla los datos se enmascararán, a menos
que conceda el permiso de
UNMASK al usuario.

–creación de usuarios para prueba

Create user VICTOR without login;

–asignación de permisos a los usuarios de prueba

GRANT SELECT ON dbo.Cliente to VICTOR;

–Ejecución de una consulta en nombre del usuario recién creado

Execute (‘SELECT * FROM DBO.Cliente’) as user=‘VICTOR’;
go

 

 

Limitaciones y restricciones

No se puede definir una regla de enmascaramiento para los siguientes tipos de columnas:

·        Columnas cifradas (siempre cifradas)

·        FILESTREAM

·        COLUMN_SET o una columna dispersa que forme parte de
un conjunto de columnas.

·        No se puede configurar una máscara en una columna
calculada, pero si esta última depende de otra con una máscara, entonces la
columna calculada devolverá datos enmascarados.

·        Una columna con enmascaramiento de datos no puede ser
una clave para un índice FULLTEXT.

Modificar o eliminar un enmascaramiento.

–Modificar una mascara

ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_TarjetaCredito ADD MASKED WITH (FUNCTION = ‘partial(0,»XXXX-XXXX-XXXXX»,4)’);

–Consultar
Select * from dbo.Cliente

 
 

–Eliminar una Mascara
ALTER TABLE dbo.Cliente ALTER COLUMN Cliente_TarjetaCredito DROP MASKED;

 
 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.