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:
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);
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');
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);
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.
Fonte: https://www.postgresql.org/about/news/postgresql-anonymizer-10-privacy-by-design-for-postgres-2452/
Escrito por Erick Farias
Comentários