Enmascaramiento dinámico de datos en el almacenamiento de datos de Fabric

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

El enmascaramiento dinámico de datos limita la exposición de datos confidenciales mediante su enmascaramiento para los usuarios sin privilegios. Se puede usar para simplificar considerablemente 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 al permitir a los administradores especificar la cantidad de datos confidenciales que se van a revelar, con un efecto mínimo en la capa de aplicación. El enmascaramiento de datos dinámico se puede configurar en los campos de la base de datos designados para ocultar información confidencial en los conjuntos de resultados de consultas. Con el enmascaramiento dinámico de datos, los datos de la base de datos no cambian, por lo que se puede usar con aplicaciones existentes, ya que las reglas de enmascaramiento se aplican a los resultados de la consulta. Muchas aplicaciones pueden enmascarar información confidencial sin modificar las consultas existentes.

  • Una directiva de enmascaramiento de datos central actúa directamente en los campos confidenciales de la base de datos.
  • Designe roles o usuarios con privilegios que tienen acceso a la información confidencial.
  • El enmascaramiento dinámico de datos incluye 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.

La finalidad del enmascaramiento dinámico de datos es limitar la exposición de la información confidencial, impidiendo que los usuarios vean datos a los que no deberían poder acceder. El enmascaramiento dinámico de datos no pretende evitar que los usuarios de la base de datos se conecten directamente a ella y ejecuten consultas exhaustivas que expongan información confidencial.

El enmascaramiento dinámico de datos es complementario a otras características de seguridad de Fabric, como la seguridad de nivel de columna y la seguridad de nivel de fila. Se recomienda encarecidamente usar estas características de protección de datos conjuntamente para proteger los datos confidenciales de la base de datos.

Definir el enmascaramiento dinámico de datos

Es posible definir una regla de enmascaramiento en una columna de una tabla, con el objetivo de ofuscar los datos de esa columna. Existen cinco tipos de máscaras.

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()')
Email 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()')
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 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, consulte Cómo implementar el enmascaramiento dinámico de datos en Synapse Data Warehouse.

Permisos

Los usuarios sin derechos de Administrador, Miembro o Colaborador en el área de trabajo y sin permisos elevados en el almacenamiento verán los datos enmascarados.

No se necesita ningún permiso especial para crear una tabla con una máscara dinámica de datos, solo los permisos estándar de esquema CREATE TABLE y ALTER.

Para agregar, reemplazar o quitar la máscara de una columna, se precisan los permisos ALTER ANY MASK y ALTER (este último, en la tabla). Se recomienda otorgar ALTER ANY MASK a un responsable de seguridad.

Los usuarios con el permiso SELECT en una tabla podrán ver los datos de esta. Las columnas que estén definidas como enmascaradas mostrarán datos enmascarados. Otorgue el permiso UNMASK a un usuario para permitirle que recupere datos sin enmascarar de las columnas para las que se ha definido una regla de enmascaramiento.

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

Consideración de seguridad: omisión del enmascaramiento con técnicas de fuerza bruta o inferencia

El enmascaramiento dinámico de datos está diseñado para simplificar el desarrollo de aplicaciones limitando la exposición de datos en un conjunto de consultas predefinidas usadas por la aplicación. A pesar de que el enmascaramiento dinámico de datos también puede ser útil para evitar la exposición accidental de información confidencial cuando se obtiene acceso directo a datos, es importante tener en cuenta que los usuarios sin privilegios y que tienen permisos de consulta pueden aplicar técnicas para obtener acceso a los datos.

Por ejemplo, considere un usuario con los privilegios suficientes para ejecutar consultas en la instancia de Warehouse y que intenta "adivinar" los datos subyacentes y, en última instancia, inferir los valores reales. Suponga que tenemos una máscara definida en la columna [Employee].[Salary], este usuario se conecta directamente a la base de datos, comienza a adivinar los valores y, a la larga, infiere el valor [Salary] en la tabla Employees:

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

El resultado es:

id Nombre Salario
62543 Jane Doe 0
91245 John Smith 0

Esto demuestra que el enmascaramiento dinámico de datos no se debe usar como de manera aislada para proteger completamente la información confidencial frente a los usuarios con acceso a consultas en la instancia de Warehouse o el punto de conexión de análisis SQL. Es adecuado para evitar la exposición de información confidencial, pero no brinda protección contra intentos malintencionados de inferir los datos subyacentes.

Es importante administrar correctamente la seguridad de nivel de objeto con permisos granulares de SQL y seguir siempre el principio de permisos mínimos requeridos.

Paso siguiente