Logs e LGPD: responsabilidades do desenvolvedor
A LGPD regulamenta o tratamento de dados pessoais, que são informações por meio das quais seja possível identificar um indivíduo. Ainda existe a categoria de dados sensíveis, relacionados à saúde, genética, origem racial, orientação sexual, religião e posicionamento político de determinada pessoa.
O titular dos dados, respaldado pela LGPD, pode solicitar que as informações relacionadas a ele sejam eliminadas das bases de dados de determinada instituição.
Durante a codificação de soluções de software, é prática comum utilizar logs para acompanhar o fluxo de execução de uma aplicação, além de identificar possíveis erros.
Ter um rastreio do funcionamento do sistema é muito importante
Por exemplo, um cliente relatar que obteve erro ao executar determinada operação, seja possível identificar rapidamente o ponto de falha.
Em uma aplicação utilizada por centenas ou milhares de pessoas, pode ser difícil associar os registros a um usuário sem utilizar algum tipo de identificador, e é nessa associação que o desenvolvedor precisa ser cauteloso.
Além de preocupar-se em registrar apenas as informações essenciais para o debug do sistema, evitando logar dados desnecessários, é importante que o programador utilize mecanismo de Pseudononimização através de mascaramento parcial de dados, o que definimos na etapa de Privacy By Design do projeto os dados que possam levar a uma identificação pessoal. Dessa forma, além de poder rastrear mais facilmente as ações dos usuários do sistema, o mascaramento de dados pessoais garante que a LGPD está sendo respeitada.
Exemplo prático
Imagine um sistema de uma universidade, que permite que os alunos façam sua matrícula e registrem presença nas aulas. Um dos alunos relata que ao tentar fazer autenticação na aplicação, obteve um erro genérico.
Prevendo cenários de falha, o desenvolvedor adicionou um log no sistema, que registra qual o CPF foi utilizado na tentativa de autenticação e qual foi o retorno da base de dados. Com isso, identificou rapidamente pelos registros que o aluno em questão (identificado pelo CPF) estava bloqueado e corrigiu seu acesso.
Dependendo da volumetria de acessos, sem o CPF do aluno atrelado ao log, teria sido muito difícil saber qual foi o problema encontrado por aquele usuário em específico. Porém, nos casos em quem a guarda destes dados não esteja garantida por lei ou não tenha uma hipótese legal segundo o Artigo 7 da LGPD , esse registro precisa ser eliminado caso o titular ou Agência Nacional de Proteção de Dados solicite.
Em larga escala, essa operação de exclusão seria custosa, além de resultar em possível perda de histórico relevante para a finalidade do software.
Uma solução simples seria adotar a máscara de dados, de forma que eles sejam parcialmente ocultos. No caso do CPF, poderiam ser exibidos somente alguns dígitos, por exemplo 123.***.***-01.
Dessa forma, o dado pessoal está protegido, e em caso de erro do sistema continuaria sendo possível associar o log a determinado usuário.
Para quem utiliza soluções de log como o LogBack, é possível adicionar no próprio arquivo de configuração a máscara dos dados utilizando expressões regulares, conforme detalhado neste artigo https://bootcamptoprod.com/how-to-mask-sensitive-data-in-logs/
É importante ressaltar que mesmo utilizando o mecanismo de mascaramento, é fundamental que seja feito o controle de acesso aos logs e que eles também sejam criptografados para armazenamento. Dessa forma os registros ficam disponíveis apenas para quem necessite dessas informações para desempenhar suas funções, garantindo a segurança e privacidade dos dados e evitando o uso indevido.
Portanto, os desenvolvedores devem estar atentos para que os dados pessoais dos usuários estejam protegidos em todas as etapas da codificação, inclusive nos logs da aplicação, de forma que os registros nos auxiliem a identificar de forma eficaz possíveis problemas no software, mas que também estejam de acordo com as regulamentações vigentes.