Páginas filhas
  • Dados Protegidos em relatórios TReport

Avalia os acessos de um usuário e não permite que um usuário sem acesso a informações sensíveis ou pessoais os visualize ou tenha acesso pela impressão utilizando o componente TReport.


O relatório será impresso com os dados ofuscados utilizando asteriscos (*), quando o usuário que realizar a impressão não tiver os acessos para visualizar dados sensíveis ou pessoais habilitados.
A ofuscação acontece com todos os tipos de impressão como planilha, html, pdf etc.


A decisão de ofuscação dos campos é baseada nas seções e nas células que montam esta seção. É esperado que o nome que identifica internamente a célula esteja configurado na lista de campos dos Dados Protegidos, para que o campo tenha seu conteúdo ofuscado.

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

Os totalizadores que são baseados em células com conteúdos ofuscados não terão os valores destas células considerados. Desta forma um totalizador que agrupe os dados de duas células uma ofuscada e outra não, terá como resultado somente o total das células que não estão ofuscadas.
Este comportamento tem por objetivo não permitir inferência de conteúdo ou valor a partir dos dados exibidos nos totalizadores de células.
Este comportamento só acontece quando é possível associar o nome de uma célula com um campo configurado nos Dados Protegidos.

Exemplo:

CELL(A1) - Valor( 10 ) - Será ofuscada
CELL(A2) - Valor( 10 ) - Não será ofuscada

Se uma fórmula for criada somando os dois valores CELL(A1) + CELL(A2) - o resultado será 10, já que o valor da célula ofuscada será desconsiderado.
Em uma situação sem a ofuscação de nenhuma destas duas células o resultado será 20, pois os valores das duas células serão considerados.



Os casos excepcionais onde não existe relacionamento direto entre a célula e os campos nos Dados Protegidos podem ser tratados com os comandos para ofuscar ou não ofuscar de forma forçada.

Foram disponibilizados dois métodos, o primeiro na classe de seção TRSection com oSection:SetObfuscCells(aCells) que determina quais as células daquela seção devem ter seu conteúdo ofuscado independente das configurações de usuário e dados protegidos presentes no sistema, já o segundo método está presente na classe de células TRCell com oCell:SetObfuscate(.T.) ou oCell:SetObfuscate(.F.) que indica se a célula deve ser ofuscada sempre ou exibida sempre.

A última consideração envolvendo os relatórios TReport é que o ofuscamento foi adicionado como interceptação em dois métodos: TRSection():Init() e TRSection():Print(), portanto caso seu relatório não passe por estes trechos (e ainda não foi encontrado nenhum relatório nesta situação), será exigido que utilize as instruções para forçar ofuscação como mencionado neste tópico.

Exemplos

  • Quando não é exigida alteração
    oCell := TRCell():New(oSection,"US_COD" ,"SUS", "Código Suspect",/Picture/,/nTamanho/,/lPixel/,
    {|| US_COD } )
    >> A segunda posição é o nome e id da célula a ser impressa, portanto existindo configuração para o campo US_COD no cadastro de campos protegidos não será exigido qualquer outra alteração.
  • Quando é exigida alteração
    oCell1 := TRCell():New(oSection,"CELL01","SUS","Suspect",,,,{|| cSuspect })
    oCell2 := TRCell():New(oSection,"CELL02","SUS","Loja",,,,{|| cSuspLoja })
    oCell3 := TRCell():New(oSection,"CELL03","SUS","Nome",,,,{|| cSuspNome })
    >> Dessa forma não é possível fazer a relação dos campos protegidos com a célula e portanto é exigido algum dos meios de forçar a ofuscação.
  • Ofuscação pela Seção

  aAdd( aCells, "CELL01" )
  aAdd( aCells, "CELL02" )
  aAdd( aCells, "CELL02" )
  oSection:SetObfuscCells(aCells)
  oSection:Init()
  >> Utilizando o método SetObfuscCells diretamente na seção informando os nomes e identificação das células que deverão ser ofuscadas.
  Dessa maneira a ofuscação é feita de forma coletiva amarrando as células indicadas por seção. Neste caso é necessário inicializar a seção (com o método init()) ou a execução do método Print() para impressão.
  As células enviadas pelo método SetObfuscCells serão somadas com as células avaliadas automaticamente pela seção.

  • Ofuscação pela Célula
    oCell1:SetObfuscate( .T. )
    oCell2:SetObfuscate( .T. )
    >> Utilizando o método oCell:SetObfuscate( .T. )
    irá definir que a célula precisa ser ofuscada.
    É possível também forçar que a célula não seja ofuscada informando o parâmetro como falso (.F.) e portanto esta célula terá seu conteúdo exibido independente dos acesso de usuário e configurações nos campos protegidos.


  • Sem rótulos