top of page

Como mascarar dados sensíveis em tabelas do PostgreSQL

Atualizado: 24 de abr.



mascarar dados sensíveis no PostgreSQL

Como já sabem, há diversas formas de mascarar dados sensíveis no PostgreSQL utilizando-se de técnicas como:

  • Substituição: é quando trocamos um determinado valor por outro em sua totalidade, exemplo: CPF: xxx.xxx.xxx-xx

  • Substituição parcial: É quando alteramos parte do valor por outro, exemplo: CPF: xxx.456.789-xx

  • Adição de ruído: neste caso, adiciona-se um valor ao campo, incrementando-o, exemplo: Salário: 5.000,00 (valor original) - Salário: 9999.99(mascarado)

  • Remoção: considerando que o dado sensível não é chave no modelo de dados, removemos a informação, exemplo: Salário: Null

  • Randomização: Método recomendado pois utilizamos dados fictícios nas colunas que serão mascaradas.

  • Embaralhamento: Essa técnica, alterna os dados entre os registros, exemplo: João da SIlva (original) - João Paulo (embaralhado)


A comunidade PostgreSQL disponibilizou em meados de Maio/22, uma extensão que possibilita implementar mascaramento de dados sensíveis em tabelas do seu banco de dados PostgreSQL, denominada ANONYMIZER.


Esta extensão oculta ou substitui informações de dados pessoais ou comercialmente sensíveis de um banco de dados PostgreSQL.


Instalando a extensão Anonymizer


Para instalar a extensão, você deverá seguir alguns passos, conforme descritos neste link: https://postgresql-anonymizer.readthedocs.io/en/latest/INSTALL/


Após concluir todas as etapas da instalação, e ter iniciado a extensão com o comando abaixo, você poderá iniciar o processo de mascaramento de dados.


SELECT anon.init();


Utilizando a extensão Anonymizer


  • Método ADD_NOISE_ON_NUMERIC_COLUMN


Este método adiciona ou subtrai valores à uma coluna numérica


A tabela abaixo, é um exemplo de informações sensíveis que vamos mascarar com o uso da extensão anonymizer:


mascarar dados sensíveis no PostgreSQL

Agora, vamos executar uma consulta, utilizando o método ANON.ADD_NOISE_ON_NUMERIC_COLUMN, aplicando um fator ao valor numérico que será automaticamente embaralhado.


select anon.add_noise_on_numeric_column('pessoal','telefone',0.33);


mascarar dados sensíveis no PostgreSQL

Observe que os valores da coluna TELEFONE, foram apresentados embaralhados, pois foi aplicado um fator de 0,33 para cada registro.


  • Método ADD_NOISE_ON_DATETIME_COLUMN


Este método adiciona ou subtrai valores em uma coluna do tipo data


Vamos executar o comando, na coluna NASCIMENTO, utilizando o método ANON.ADD_NOISE_ON_DATETIME_COLUMN.


select anon.add_noise_on_datetime_column('pessoal','nascimento','2 years');


mascarar dados sensíveis no PostgreSQL

Observe que agora, a coluna NASCIMENTO possui valores de datas diferentes da original, pois foi aplicado o método para reduzir 2 anos do valor registrado originalmente.


  • Método ANON.PARTIAL_EMAIL

Este método mascara parte dos dados que estão sendo lidos/consultados, exemplo:


select anon.partial_email(email);


mascarar dados sensíveis no PostgreSQL

Há diversos outros métodos disponíveis nessa extensão, que certamente poderá atender a sua necessidade, conforme lista abaixo:


Faking


  • anon.fake_address()retorna um endereço completo

  • anon.fake_city()retorna uma cidade existente

  • anon.fake_country()retorna um país

  • anon.fake_company()retorna um nome de empresa genérico

  • anon.fake_email()retorna um endereço de e-mail válido

  • anon.fake_first_name()retorna um nome genérico

  • anon.fake_iban()retorna um IBAN válido

  • anon.fake_last_name()retorna um sobrenome genérico

  • anon.fake_postcode()retorna um CEP válido


Gerador "classico" Lorem Ipsum


  • anon.lorem_ipsum()retorna 5 parágrafos

  • anon.lorem_ipsum(2)retorna 2 parágrafos

  • anon.lorem_ipsum( paragraphs := 4 )retorna 4 parágrafos

  • anon.lorem_ipsum( words := 20 )retorna 20 palavras

  • anon.lorem_ipsum( characters := 7 )retorna 7 caracteres

  • anon.lorem_ipsum( characters := LENGTH(table.column) )retorna a mesma quantidade de caracteres que a string original

E além dos já existentes, você também consegue criar métodos especificos para a sua necessidade, através do uso de funções:


SECURITY LABEL FOR anon ONCOLUMN employee.salary IS'MASKED WITH FUNCTION postgresql.salary_mask_function()';


Para mais informações ou apoio consultivo especializado, consulte-nos através dos contatos: comercial@datacosmos.com.br ou via Whatsapp (11) 97099-7434.




Escrito por Erick Farias

181 visualizações0 comentário
datacosmos-botao-whats.png
bottom of page