Ir para conteúdo
Fórum Script Brasil
  • 0

Postgresql Anonymizer


DaniDBA

Pergunta

Olá! Preciso fazer uma rotina para mascaramento de dados no Postgresql a fim de cumprir a lei de proteção aos dados e estou tentando utilizar o recurso Postgresql Anonymizer. Porém, a função que faz o mascaramento está demorando muuuuito a executar, a ponto de cair a conexão e não concluir, como se houvesse bloqueio no banco (mas não há) . Já executei Vaccum e rebuild de índices para garantir mas não adiantou nada. Queria saber se estou fazendo algo errado ou se alguém pode me dar alguma orientação. Essa é a função:

create or replace function mascaramento() returns void as $$
declare
    tables cursor for
        select nome_tabela,nome_coluna,funcao_mascaramento,mascarar
        from control_anonymizer
        order by nome_tabela;
begin

--create extension if not exists anon cascade;
--select anon.mask_init();

    for table_record in tables loop
    
    if (table_record.mascarar = '1') then  
       execute ' COMMENT ON COLUMN ' || table_record.nome_tabela  || '.' ||table_record.nome_coluna ||' IS '' MASKED WITH FUNCTION ' || table_record.funcao_mascaramento  || '''' ;
      else
       execute ' COMMENT ON COLUMN  ' || table_record.nome_tabela  || '.' ||table_record.nome_coluna ||' IS '''''  ;
    end if;

    end loop;
end;
$$ language 'plpgsql';

 

Essa é a tabela onde preencho como quero mascarar:

create table public.control_anonymizer
(
    oid_anon integer not null,
    nome_tabela character varying(100) ,
    nome_coluna character varying(100) ,
    funcao_mascaramento character varying(100) ,
    mascarar bit ,
    data_cadastro timestamp without time zone,
    constraint control_anonymizer_pkey primary key (oid_anon)
 )
with (
    oids = false
)

Exemplo de preenchimento da tabela:

insert into control_anonymizer values (1 ,'clientes','nome','anon.random_last_name()','1','20210314');
insert into control_anonymizer values (2 ,'funcionarios','nome','anon.random_last_name()','1','20210314');
insert into control_anonymizer values (3 ,'fornecedores','email','anon.fake_email()','1','20210314');
insert into control_anonymizer values (4 ,'clientes','telefone','anon.partial(telefone,2,$$******$$,2)','1','20210314');

Quando eu executo a função conforme abaixo demora o dia inteiro e não funciona.

select mascaramento();

 

 

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...