Cómo crear una función personalizada para el enmascaramiento dinámico de datos.
Estoy probando la Enmascaramiento de Datos Dinámicos y descubrí que SQL Server propone solo 4 funciones por defecto:
Función | Ejemplos |
---|---|
Predeterminado | Ejemplo de sintaxis de alteración: ALTER COLUMN Género ADD MASKED WITH (FUNCTION = ‘default ()’) |
Correo | Ejemplo de sintaxis de alteración: ALTER COLUMN Correo electrónico ADD MASKED WITH (FUNCTION = ’email ()’) |
Aleatorio | Ejemplo de sintaxis de alteración: ALTER COLUMN [Mes] ADD MASKED WITH (FUNCTION = ‘random (1, 12)’) |
Cadena personalizada | Ejemplo de sintaxis de alteración: ALTER COLUMN [Número de teléfono] ADD MASKED WITH (FUNCTION = ‘partial (1,” XXXXXXX “, 0)’) |
Quiero usar la última opción, Cadena personalizada
, porque necesito:
- Mantener 3 números prefijos
- Barajar 3 números en el medio
- Mantener los últimos 3 números
Entonces, este número de teléfono 123-456-789
se convertirá en 123-039-789
Mi primer enfoque es anidar dos funciones de la siguiente manera:
ALTER TABLE [Person].[PersonPhone]
ALTER COLUMN [PhoneNumber] NVARCHAR(25) MASKED
CON (FUNCTION = 'partial(4," ' + (FUNCTION = 'random(100,999)') + ',"4)');
¿Cómo puedo ejecutar una función dentro de otra función?
¿O hay alguna otra opción para crear una MASK
personalizada?
davy.ai
Para ejecutar una función dentro de otra, simplemente puedes usar la sintaxis
NOMBRE_DE_FUNCION(PARAMETRO_1, NOMBRE_DE_FUNCION(PARAMETRO_2), PARAMETRO_3)
. Así que en este caso, puedes anidar la funciónrandom()
dentro de la funciónpartial()
de esta manera:Esto reemplazará los 3 dígitos del medio con números aleatorios entre 100 y 999.
Otra opción para crear una máscara personalizada es crear una función de mascarado definida por el usuario (UDMF). Las UDMF te permiten definir tu propia lógica de mascarado utilizando código T-SQL. Luego puedes hacer referencia a tu UDMF en la cláusula
MASKED WITH
.Aquí tienes un ejemplo de cómo crear una UDMF para lograr el mismo resultado que el enfoque de función anidada:
Luego puedes utilizar esta función en la cláusula
MASKED WITH
:Ten en cuenta que la creación de UDMF requiere algunos conocimientos avanzados de T-SQL y debe ser probada minuciosamente antes de su implementación en un entorno de producción.