Implementación del enmascaramiento dinámico de datos

Completado

El enmascaramiento dinámico de datos funciona ofuscando datos para limitar su exposición. Los usuarios que no necesitan ver datos confidenciales pueden ver la columna que contiene los datos, pero no los datos mismos. Tenga en cuenta que el enmascaramiento dinámico de datos funciona en la capa de presentación y que los usuarios con privilegios elevados siempre verán los datos sin enmascarar.

El enmascaramiento dinámico de datos tiene la ventaja de que no requiere muchas modificaciones en la aplicación o la base de datos. Puede configurarlo a través de Azure Portal o mediante T-SQL, tal como se muestra a continuación:

Screenshot of the dynamic data masking T-SQL commands.

En el ejemplo anterior, las columnas PhoneNumber y EmailAddress están ocultas para el usuario DDMDemo que solo tiene el permiso SELECT en la tabla. El usuario puede ver los cuatro últimos dígitos del número de teléfono, ya que se enmascara mediante una función parcial que reemplaza todo, excepto los últimos cuatro dígitos de la columna. Este enmascaramiento se considera una función personalizada. Además de T-SQL, si usa Azure SQL Database, puede crear reglas de enmascaramiento dinámico en Azure Portal:

Screenshot of how to add masking rule in Azure portal.

Si desea llegar a la pantalla para agregar una regla de enmascaramiento, vaya a la base de datos en Azure Portal y seleccione Enmascaramiento dinámico de datos en la sección Seguridad del panel principal de la base de datos.

El enmascaramiento dinámico de datos admite los patrones de enmascaramiento siguientes que se pueden utilizar:

Función de enmascaramiento Definición Ejemplo de T-SQL
Valor predeterminado Enmascara los datos de la columna sin exponer ninguna parte de los valores al usuario. El usuario verá XXXX para los valores de cadena, 0 para los números y 01.01.1900 para los valores de fecha. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()')
Tarjeta de crédito Enmascara todos los caracteres excepto los cuatro finales, lo que permite a los usuarios ver los cuatro últimos dígitos. Este enmascaramiento puede ser útil para los agentes de servicio de atención al cliente que necesiten ver los cuatro últimos dígitos de un número de tarjeta de crédito, pero que no necesitan ver el número entero. Los datos se muestran en el formato habitual de un número de tarjeta de crédito, XXXX-XXXX-XXXX-1234. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)')
Correo electrónico Solo la primera letra y el sufijo final del dominio no están enmascarados; por ejemplo, "aXXX@XXXXXXX.com". ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Number Este formato de enmascaramiento debe usarse en columnas numéricas. Muestra un número aleatorio como el valor enmascarado en lugar del valor real. Con cada consulta, se muestra un número diferente. ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Cadena personalizada Esta opción permite enmascarar el texto con cualquier valor y mostrar un número personalizado de caracteres en cualquier extremo del valor enmascarado. Si la longitud del valor que se va a enmascarar es igual o menor que el número de caracteres que especifica la máscara, se mostrarán solo los caracteres enmascarados. ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

A fin de permitir que los usuarios recuperen datos no enmascarados de las columnas para las que se define el enmascaramiento, debe conceder el permiso UNMASK de manera explícita.

Nota

Es posible identificar datos enmascarados mediante la inferencia en función de los resultados. Si usa el enmascaramiento de datos, también debe limitar la capacidad del usuario de ejecutar consultas ad hoc.

Por ese motivo, se recomienda usar el enmascaramiento dinámico de datos junto con otras características de seguridad, como la auditoría, el cifrado y la seguridad de nivel de fila, a fin de proteger mejor los datos confidenciales.

Caso de uso

El enmascaramiento de datos es una característica sencilla y ligera que resulta ideal para una serie de escenarios, entre los que se incluyen los siguientes:

  • Enmascarar los datos de los usuarios de la aplicación que no tienen acceso directo a la base de datos.

  • Restringir la información privada de un grupo de usuarios.

  • Proporcionar datos enmascarados a proveedores externos, donde es necesario proteger la información confidencial mientras se conservan las relaciones entre los elementos de los datos.

  • Exportar una copia de la base de datos de producción a un entorno inferior para fines de desarrollo con un usuario que no cuenta con el permiso UNMASK. La exportación de los datos tendrá un formato enmascarado.

Importar y exportar datos

Si se utiliza SELECT INTO o INSERT INTO para copiar datos de una columna enmascarada en otra tabla, se generarán datos enmascarados en la tabla de destino.

Cuando un usuario sin el privilegio UNMASK ejecuta la importación y exportación de SQL Server, el archivo de datos exportado contendrá datos enmascarados y la base de datos importada contendrá datos enmascarados de manera inactiva.

Para más información sobre el funcionamiento del enmascaramiento dinámico de datos, consulte Enmascaramiento dinámico de datos.