Funções de mascaramento de dados predefinidas
A extensão pg_columnmask fornece funções utilitárias integradas escritas em linguagem C (para execução mais rápida) que podem ser usadas como expressão de mascaramento para políticas pg_columnmask.
mask_text
Uma função para mascarar dados de texto com opções de visibilidade configuráveis.
Argumentos
| Parâmetro | DataType | Descrição |
|---|---|---|
input |
TEXT |
A string de texto original a ser mascarada. |
mask_char |
CHAR(1) |
Caractere usado para mascarar (padrão: “X”). |
visible_prefix |
INT |
Número de caracteres no início do texto de entrada que permanecerão sem máscara (padrão: 0). |
visible_suffix |
INT |
Número de caracteres no fim do texto de entrada que permanecerão sem máscara (padrão: 0). |
use_hash_mask |
BOOLEAN |
Se TRUE, usa um mascaramento baseado em hash em vez de mask_char (padrão: FALSE). |
exemplo de usar diferentes opções de mascaramento
Mascare toda a string de entrada com o caractere “X” padrão.
postgres=> SELECT pgcolumnmask.mask_text('Hello World'); mask_text ------------- XXXXXXXXXXX
Use o argumento mask_char para mascarar a entrada de texto usando um caractere diferente.
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*'); mask_text ------------- ***********
Use os parâmetros visible_prefix e visible_suffix para controlar quantos caracteres permanecem sem máscara no início e no final do texto.
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 5, 1); mask_text ------------- Hello*****d
Quando use_hash_mask é true, a string de entrada é mascarada usando caracteres aleatórios, o argumento mask_char é ignorado, mas visible_prefix ainda visible_suffix ainda são respeitados
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 2, 2, true); mask_text ------------- Hex36dOHild
mask_timestamp
| Parâmetro | DataType | Descrição |
|---|---|---|
ts_to_mask |
TIMESTAMP |
O carimbo de data/hora original a ser mascarado. |
mask_part |
TEXT |
Especifica qual parte do carimbo de data/hora deve ser mascarada (padrão: “tudo”). Valores válidos: “ano”, “mês”, “dia”, “hora”, “minuto”, “segundo”, “tudo”. |
mask_value |
TIMESTAMP |
O valor do carimbo de data/hora a ser usado para mascaramento (padrão: “1900-01-01 00:00:00”). |
exemplo de usar mask_timestamps
Esses exemplos demonstram o mascaramento completo do carimbo de data/hora em um valor padrão, o mascaramento parcial de componentes específicos do carimbo de data/hora (somente ano) e o mascaramento com um valor de substituição personalizado.
Mascarar completamente o valor de entrada para o carimbo de data/hora padrão
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00'); mask_timestamp --------------------- 1900-01-01 00:00:00
Como mascarar apenas uma parte do carimbo de data/hora, por exemplo, apenas o ano
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'year'); mask_timestamp --------------------- 1900-06-15 14:30:00
Para alterar o valor mascarado do carimbo de data/hora, use o 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
Uma função para mascarar endereços de e-mail, mas preservar a estrutura.
| Parâmetro | DataType | Descrição |
|---|---|---|
input |
TEXT |
O endereço de e-mail original a ser mascarado. |
mask_char |
CHAR(1) |
Caractere usado para mascarar (padrão: “X”). |
mask_local |
BOOLEAN |
Se TRUE, mascara a parte local do e-mail (antes de @) (padrão: TRUE). |
mask_domain |
BOOLEAN |
Se TRUE, mascara a parte do domínio do e-mail (após @) (padrão: TRUE). |
exemplo de usar mask_email
Esses exemplos demonstram o mascaramento de e-mail completo, os caracteres de máscara personalizados e o mascaramento seletivo da parte local ou da parte do domínio do endereço de e-mail.
Mascaramento completo
postgres=> SELECT pgcolumnmask.mask_email('user@example.com'); mask_email ------------------ XXXX@XXXXXXX.com
Usar mask_char para alterar o caractere usado para mascarar
postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*'); mask_email ------------------ ****@*******.com
Usar mask_local e mask_domain para controlar o mascaramento no local e no domínio
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