Páginas filhas
  • Registro de acesso a programas com Dados Protegidos

01. O QUE É?

Fazer o registro dos usuários que tiveram acesso a dados pessoais ou sensíveis no cadastros.

Para esta funcionalidade é necessário habilitar a auditoria de acessos no cadastro de políticas no módulo Configurador, esta opção está com o título "auditar acesso de rotinas com campos pessoais e sensíveis".


02. COMO FUNCIONA

Quando um usuário fizer acesso a um programa e tiver o acesso para visualização de dados restritos, é feito o registro deste acesso. Isso permite posteriormente identificar os usuários que possivelmente visualizaram dados restritos.

Este registro acontece utilizando a função FWPDLogUser(cFunction,nOpc). Esta função utiliza como base as referências de programas inseridas pelo módulos ou os dados do dicionário de tabelas SX2 (campo X2_SYSOBJ ) para descobrir os programas e tabelas envolvidas.

Com este mecanismo o acesso a programas direto do menu dos módulos e o consumo de serviços rest FwModel são registrados por padrão e ficam disponíveis para consulta posteriormente no relatório de Log de Acesso de usuários (APCFGR40). Os casos que não forem registrados precisam que a pessoa desenvolvendo faça ajuste do programa e o log chamando a função FwPdLogUser.

Para criar os recursos fundamentais no sistema é necessário a aplicação da lib, atualizada com label mínimo 20200214, e atualização do sistema com upddistr.

A aplicação do UPDDISTR pode acontecer com:

    • pacote diferencial de upgrade para o Release 12.1.27;
    • pacote específico para Dados Protegidos, nos Releases 12.1.17, 12.1.23 e 12.1.25.

    Release 12.1.17 somente para clientes com garantia estendida

03. FAZENDO O REGISTRO

Para o registro de log em situações não cobertas pelo padrão é necessário deixar a chamada da função FwPdLogUser explicitamente no programa.
O primeiro parâmetro é o nome do programa sendo acessado e o segundo parâmetro é o tipo de operação sendo realizada 2-Visualizar, 3-Incluir, etc., a lista de tabelas e consequentemente os campos a serem avaliados, são conseguidos procurando pelo programa no mapeamento interno e depois no dicionário de tabelas.

O mapeamento interno utiliza a classe MpProtectedDataHash e o método GetTables(cFunction) para identificar as tabelas que um determinado programa utiliza. Caso seja necessário atualizar, sobrescrever ou inserir novos mapeamentos programa x tabelas faça algo semelhante ao código a seguir.

cOldTables := MpProtectedDataHash():GetTables('funcaoXYZ') // retorna string 'SA1|SA2|SUS|'


cNewTables := cOldTables+'ZA1|ZA2|'
oLogMapping := MpProtectedDataHash():GetHash() // recupera o objeto de hash
oLogMapping:Set('funcaoXYZ', cNewTables)

O código acima adiciona duas novas tabelas para o registro do log quando o programa funcaoXYZ for executado a partir do menu ou com a chamada da função FwPdLogUser. Um alternativa ao código acima é utilizar o ponto de entrada PDUsrLog que na inicialização da lista de mapeamento.


04. PONTO DE ENTRADA PDUSRLOG 

A alternativa a mudança explícita na lista de mapeamento é utilizar o ponto de entrada. A função será invocada somente uma vez na inicialização do mapeamento.

O ponto de entrada recebe os mapeamentos já existentes e deve devolver os mesmos mais os mapeamentos adicionais. Exemplo:

user function pdusrlog(aList)
  
  aAdd(aList,'func1', '|SA1|SUS|SU5|')
  aAdd(aList,'func2', '|SA2|')
  aAdd(aList,'func2', '|SA2|')
  
return aList


05. ASSUNTOS RELACIONADOS