Enmascaramiento dinámico de datos en Fabric Data Warehouse

Se aplica a:✅ punto de conexión de análisis SQL y Almacenamiento de datos en Microsoft Fabric

El enmascaramiento dinámico de datos es una característica de protección de datos que limita la exposición de datos confidenciales al enmascararlo a usuarios sin privilegios. Simplifica el diseño y la codificación de la seguridad en la aplicación.

El enmascaramiento dinámico de datos ayuda a evitar la visualización no autorizada de datos confidenciales. Los administradores especifican la cantidad de datos confidenciales que se van a revelar, con un efecto mínimo en la capa de aplicación. Puede configurar el enmascaramiento dinámico de datos en campos de base de datos designados para ocultar datos confidenciales en los conjuntos de resultados de las consultas. Los datos de la base de datos no cambian, por lo que las aplicaciones existentes pueden seguir funcionando sin modificaciones porque las reglas de enmascaramiento se aplican a los resultados de la consulta. Muchas aplicaciones pueden enmascarar información confidencial sin modificar las consultas existentes.

El enmascaramiento dinámico de datos proporciona estas funcionalidades:

  • Una directiva de enmascaramiento de datos central actúa directamente en los campos confidenciales de la base de datos.
  • Los usuarios o roles con privilegios se pueden designar para acceder a los datos confidenciales.
  • Tiene opciones de enmascaramiento entre las que elegir: funciones de enmascaramiento completo y enmascaramiento parcial, y una máscara aleatoria para los datos numéricos.
  • Los comandos Transact-SQL simples definen y administran las máscaras.

El enmascaramiento dinámico de datos no impide que los usuarios de la base de datos se conecten directamente a la base de datos y ejecuten consultas exhaustivas que expongan partes de la información confidencial. Use el enmascaramiento dinámico de datos junto con otras características de seguridad de Fabric, como la seguridad de nivel de columna y la seguridad de nivel de fila para proteger los datos confidenciales de la base de datos.

Funciones de enmascaramiento dinámico de datos

Defina una regla de enmascaramiento en una columna de una tabla para ofuscar los datos de esa columna. Hay cuatro tipos de máscaras disponibles.

Función Descripción Ejemplos
Valor predeterminado Enmascaramiento completo de acuerdo con los tipos de datos de los campos designados.

Para los tipos de datos de cadena, use XXXX (o menos) si el tamaño del campo es inferior a 4 caracteres (char, nchar, varchar, nvarchar, text, ntext).

Para los tipos de datos numéricos, use un valor cero (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Para los tipos de datos de fecha y hora, use 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

En lo que respecta a los tipos de datos binarios, use un solo byte de valor 0 de ASCII (binary, varbinary, image).
Ejemplo de sintaxis de definición de columna: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Sintaxis modificada de ejemplo: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
Correo electrónico Método de enmascaramiento que expone la primera letra de una dirección de correo electrónico y el sufijo constante ".com", en el formato de una dirección de correo electrónico. aXXX@XXXX.com. Ejemplo de sintaxis de definición: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Sintaxis modificada de ejemplo: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Aleatorio 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 de sintaxis de definición: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Sintaxis modificada de ejemplo: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Cadena personalizada Método de enmascaramiento que expone la primera y última letra y agrega una cadena de relleno personalizada en el medio. prefix,[padding],suffix

Si el valor original es demasiado corto para completar toda la máscara, parte del prefijo o sufijo no se expone.
Ejemplo de sintaxis de definición: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Sintaxis modificada de ejemplo: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Esto convierte un número de teléfono como 555.123.1234 en 5XXXXXXX.

Ejemplo adicional:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Esto convierte un número de teléfono como 555.123.1234 en 555.1XXXXXXX.

Para obtener más ejemplos, consulta Procedimientos para implementar el enmascaramiento dinámico de datos en Fabric Data Warehouse.

Permisos para enmascaramiento dinámico de datos

En Fabric Data Warehouse, los usuarios ven datos enmascarados cuando consultan columnas enmascaradas si no son miembros de los roles de administrador, miembro o colaborador del área de trabajo o no tienen permisos elevados en el almacén.

En la tabla siguiente se enumeran los permisos necesarios para cada operación dinámica de enmascaramiento de datos:

Operation Permiso necesario
Creación de una tabla que tenga columnas enmascaradas CREATE TABLE y ALTER en el esquema
Agregar, reemplazar o quitar una máscara en una columna ALTER ANY MASK y ALTER en la tabla
Visualización de datos enmascarados SELECT sobre la mesa
Visualización de datos sin máscara UNMASK en la columna o CONTROL en la base de datos

Otorgue ALTER ANY MASK a un agente de seguridad. Otorgue UNMASK a un usuario para que ese usuario pueda recuperar datos no enmascarados de columnas enmascaradas.

El permiso CONTROL en la base de datos incluye tanto ALTER ANY MASK como UNMASK, por lo que los usuarios que tienen CONTROL pueden ver datos no enmascarados. Los usuarios o roles administrativos, como Administrador, Miembro o Colaborador, tienen CONTROL permiso en la base de datos por diseño y pueden ver los datos sin máscara de forma predeterminada. Los permisos elevados de Warehouse incluyen el permiso CONTROL.

Consideración de seguridad: omitir el enmascaramiento mediante técnicas de inferencia o fuerza bruta

El enmascaramiento dinámico de datos simplifica el desarrollo de aplicaciones limitando la exposición de datos en un conjunto de consultas predefinidas que usa la aplicación. Aunque el enmascaramiento dinámico de datos también puede ayudar a evitar la exposición accidental de datos confidenciales al acceder a los datos directamente, los usuarios sin privilegios con permisos de consulta pueden usar técnicas para deducir los datos reales.

Por ejemplo, un usuario que tiene permiso para ejecutar consultas en el almacenamiento puede adivinar los valores para deducir los datos enmascarados. Supongamos que defina una máscara en la columna [Employee].[Salary]. El usuario se conecta directamente a la base de datos y comienza a adivinar los valores, lo que finalmente deduce el [Salary] valor de la Employees tabla. Ejecutan una consulta por rango en la tabla Employees:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

La consulta devuelve:

id Nombre Salario
62543 Jane Doe 0
91245 John Smith 0

Aunque la Salary columna está enmascarada (los valores se muestran como 0), la WHERE cláusula confirma que ambos empleados tienen un salario entre $99,999 y $100,001. No use únicamente el enmascaramiento dinámico de datos para proteger por completo los datos confidenciales frente a usuarios con acceso de consulta al Warehouse o al punto de conexión de análisis de SQL. El enmascaramiento dinámico de datos es adecuado para evitar la exposición accidental de datos confidenciales, pero no protege contra la intención malintencionada de deducir los datos subyacentes.

Administre correctamente la seguridad de nivel de objeto con permisos granulares de SQL y siga siempre el principio de privilegios mínimos.

Paso siguiente