Jump to content
Fórum Script Brasil
  • 0

Postgresql Anonymizer


Question

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 to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149405
    • Total Posts
      645894
×
×
  • Create New...