Funciones de enmascaramiento de datos predefinidas
La extensión pg_columnmask proporciona funciones de utilidad integradas escritas en lenguaje C (para una ejecución más rápida) que se pueden utilizar como expresión de enmascaramiento para las políticas de pg_columnmask.
mask_text
Una función para enmascarar datos de texto con opciones de visibilidad configurables.
Argumentos
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
input |
TEXT |
La cadena de texto original que se va a enmascarar |
mask_char |
CHAR (1) |
Carácter utilizado para enmascarar (predeterminado: “X”) |
visible_prefix |
INT |
Número de caracteres al principio del texto ingresado que permanecerán desenmascarados (predeterminado: 0) |
visible_suffix |
INT |
Número de caracteres al final del texto ingresado que permanecerán desenmascarados (predeterminado: 0) |
use_hash_mask |
BOOLEANO |
Si es TRUE, utiliza un enmascaramiento basado en hash en lugar de mask_char (predeterminado: FALSE) |
ejemplo de usar diferentes opciones de enmascaramiento
Enmascaramiento de toda la cadena de entrada con el carácter “X” predeterminado
postgres=> SELECT pgcolumnmask.mask_text('Hello World'); mask_text ------------- XXXXXXXXXXX
Uso del argumento mask_char para enmascarar la entrada de texto con un carácter diferente
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*'); mask_text ------------- ***********
Uso de los parámetros visible_prefix y visible_suffix para controlar el número de caracteres que permanecen desenmascarados al principio y al final del texto
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 5, 1); mask_text ------------- Hello*****d
Cuando use_hash_mask es verdadero, la cadena de entrada está enmascarada con caracteres aleatorios, el argumento mask_char se ignora pero se sigue respetando visible_prefix y visible_suffix
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 2, 2, true); mask_text ------------- Hex36dOHild
mask_timestamp
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
ts_to_mask |
TIMESTAMP |
La marca temporal original que se va a enmascarar |
mask_part |
TEXT |
Especifica qué parte de la marca temporal se debe enmascarar (predeterminado: “todas”) Valores válidos: “año”, “mes”, “día”, “hora”, “minuto”, “segundo”, “todo” |
mask_value |
TIMESTAMP |
El valor de la marca de tiempo que se va a usar para enmascarar (predeterminado: “1900-01-01 00:00:00”) |
ejemplo de cómo usar mask_timestamps
Estos ejemplos muestran el enmascaramiento completo de la marca de tiempo con un valor predeterminado, el enmascaramiento parcial de componentes específicos de la marca de tiempo (solo en el año) y el enmascaramiento con un valor de reemplazo personalizado.
Enmascaramiento completo del valor de entrada con la marca de tiempo predeterminada
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00'); mask_timestamp --------------------- 1900-01-01 00:00:00
Enmascaramiento solo de una parte de la marca de tiempo, por ejemplo, solo el año
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'year'); mask_timestamp --------------------- 1900-06-15 14:30:00
Cambio del valor enmascarado de la marca de tiempo mediante el argumento mask_value
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'all', '2012-12-12 12:12:12'); mask_timestamp --------------------- 2012-12-12 12:12:12
mask_timestamp
Una función para enmascarar las direcciones de correo electrónico y, al mismo tiempo, preservar la estructura del correo electrónico.
| Parámetro | Tipo de datos | Descripción |
|---|---|---|
input |
TEXT |
La dirección de correo electrónico original que se va a enmascarar |
mask_char |
CHAR (1) |
Carácter utilizado para enmascarar (predeterminado: “X”) |
mask_local |
BOOLEANO |
Si es TRUE, enmascara la parte local del correo electrónico (antes de @) (predeterminado: TRUE) |
mask_domain |
BOOLEANO |
Si es TRUE, enmascara la parte de dominio del correo electrónico (después de @) (predeterminado: TRUE) |
ejemplo de cómo usar mask_email
Estos ejemplos muestran el enmascaramiento completo del correo electrónico, los caracteres de máscara personalizados y el enmascaramiento selectivo de la parte local o de la parte del dominio de la dirección de correo electrónico.
Enmascaramiento completo
postgres=> SELECT pgcolumnmask.mask_email('user@example.com'); mask_email ------------------ XXXX@XXXXXXX.com
Uso de mask_char para cambiar el carácter utilizado para enmascarar
postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*'); mask_email ------------------ ****@*******.com
Uso de mask_local y mask_domain para controlar el enmascaramiento en el entorno local y en el dominio
postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', true, false); mask_email ------------------ ****@example.com postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', false, true); mask_email ------------------ user@*******.com