Enmascaramiento Dinámico de Datos en SQL Server
Enmascaramiento Dinámico de Datos en SQL Server
Enmascaramiento Dinámico de Datos en SQL Server
El enmascaramiento dinámico de datos no modifica los datos reales almacenados en una tabla; aplica las
funciones de enmascaramiento en la columna de la tabla en el momento de devolver los datos como
resultado de una consulta (por eso hace referencia a enmascaramiento dinámico).
2. Tipos de enmascaramiento
El enmascaramiento dinámico de datos admite cuatro funciones de enmascaramiento de datos, como se
indica a continuación, con las que puede enmascarar los datos en el nivel de base de datos:
Enmascaramiento predeterminado
Enmascaramiento de correo electrónico
Enmascaramiento aleatorio
Enmascaramiento parcial
Si el tipo de datos es fecha y hora, a continuación, muestra los datos en 1900-01-01 00:00:00.000
formatos.
Si el tipo de datos es numérico, entonces muestra un 0.
Si el tipo de datos es cadena, a continuación, muestra los datos agregando XS en la cadena.
Se aplica únicamente a los tipos de datos numéricos. Muestra un valor aleatorio para el rango
especificado.
Mostrará el primer carácter de una dirección de correo electrónico, enmascarando el resto de los
caracteres con XXX @ XXXX hasta el sufijo”. com". Por ejemplo, si aplicamos la función de correo
electrónico para una dirección de correo electrónico como [email protected], a continuación, esta dirección
de correo electrónico aparecerá como "[email protected] ".
Mostrará la primera y la última letra y agrega una cadena de relleno en el medio (prefijo, [relleno], sufijo).
3. Ejemplo ilustrativo
Crear la siguiente base de datos:
USE [MASTER]
GO
DROP DATABASE IF EXISTS [BD_MASK]
GO
CREATE DATABASE [BD_MASK]
GO
USE [BD_MASK]
GO
CREATE TABLE Membership
(
MemberID int IDENTITY PRIMARY KEY,
AnotherID int MASKED WITH (FUNCTION ='Random(1,4)') NULL, -- ALETAROIO ENTRE 1 Y 4
FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') NULL, -- PARCIAL
(mostrara la primera letra,"RELLENO = XXXXXXX", no mostrara la última letra)'
LastName varchar(100) NOT NULL,
Phone varchar(12) MASKED WITH (FUNCTION = 'default()') NULL, -- PREDETERMINADO
Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL); -- EMAIL
GO
INSERT Membership (AnotherID, FirstName, LastName, Phone, Email) VALUES
(454545, 'Roberto', 'Tamburello', '555.123.4567', '[email protected]'),
(124545, 'Janice', 'Galvin', '555.123.4568', '[email protected]'),
(254545, 'Zheng', 'Mu', '555.123.4569', '[email protected]');
Ahora proceda a crear un usuario de prueba y a realizar una consulta de prueba sobre la tabla Membership
con el siguiente script:
USE [BD_MASK]
GO
CREATE USER TestUser WITHOUT LOGIN;
GRANT SELECT ON Membership TO TestUser;
USE [BD_MASK]
GO
EXECUTE AS USER = 'TestUser';
SELECT * FROM Membership;
REVERT;
Resultado
3.1 Agregar o editar una máscara en una columna existente
Utilice la instrucción ALTER TABLE para agregar una máscara a una columna existente de la tabla o para editar la máscara en esa
columna.
La concesión del permiso UNMASK permite a TestUser ver los datos desenmascarados.
4. Ejercicio propuesto
Crea una base de datos llamada BD_MASK2 con la siguiente tabla y aplicar todo lo anterior:
5. Ejercicio propuesto
Aplicar enmascaramiento dinámico a por lo menos 3 tablas de la base de datos del proyecto (3 tablas que usted considere
apropiadas para aplicar enmascaramiento dinámico).
6. Referencias bibliográficas
Microsoft. (2019, January 5). Dynamic Data Masking. Retrieved May 2, 2019, from https://docs.microsoft.com/en-
us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-2017
Medium. (2018, August 30). Dynamic Data Masking in SQL Server. Retrieved May 9, 2019, from
https://medium.com/geopits/dynamic-data-masking-in-sql-server-ffe823f3ad99