Email

Pseudonimização e você: otimizando a proteção de dados

Reduzir o risco de vazamento de dados é importante, mas não precisa ser um desafio. A pseudonimização é um excelente primeiro passo na direção certa.
Imagem para Pseudonimização e você: otimizando a proteção de dados

Todo mundo odiou o caos dos e-mails sobre política de privacidade, inclusive as empresas. Não porque alguns dos seus e-mails estavam indo direto para o spam, mas porque muitas empresas tiveram que reavaliar suas medidas de segurança. Reformular as medidas de segurança pode ser chato, mas perder uma tonelada de informações pessoais é absolutamente a pior coisa possível.

O que podemos fazer?

As empresas podem reduzir o risco de roubo de informações implementando as práticas certas de proteção de dados — e algumas são bem fáceis de adotar. Um método do qual gostamos bastante é a pseudonimização, que é um jeito chique de dizer camuflagem de dados confidenciais. A pseudonimização substitui informações de identificação em um registro de dados por identificadores falsos (pseudônimos), o que dificulta o rastreamento de qualquer dado específico. Pensando bem, é quase como aquele seu MySpace falso de 2007.

Parece complicado, por que fazer isso?

O legal da pseudonimização é que são os mesmos dados, só que com um nome fictício ou, neste caso, uma sequência de caracteres muito longa. Embora nenhuma proteção seja suficiente por si só, combiná-la com outras práticas como criptografia, hashing ou tokenização ajuda a reduzir o risco de reidentificação. Aplicar a pseudonimização aos seus dados é relativamente simples, e há mais de uma maneira de fazer isso. Neste exemplo, vamos usar o plugin de filtro Logstash Fingerprint, mas você também pode tentar um script de arquivo genérico usando um plugin de filtro Ruby caso não dê certo. Ambos os métodos mascaram os campos de nome de usuário e IP, então tenha isso em mente!

Implementando a pseudonimização

Antes de começar, pegue um Mountain Dew, porque nada faz você se sentir mais como um gênio da computação do que escolhas questionáveis de refrigerante. Depois de abrir essa lata gelada, basta baixar os arquivos do repositório para um diretório local. Aqui está uma parte do código de GitHub que facilita baixar os arquivos individualmente:

                                

                                    curl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/docker-compose.ymlrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/logstash_fingerprint.confrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/logstash_script_fingerprint.confrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/pipelines.ymlrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/pseudonymise.rbrnrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/Dockerfilernrncurl -O https://raw.githubusercontent.com/elastic/examples/master/Miscellaneous/gdpr/pseudonymization/sample_docs
                                
                            

Verifique se o diretório com os arquivos baixados está compartilhado com o docker. Em seguida, acesse o diretório e execute o seguinte comando:

                                

                                    ELASTIC_PASSWORD=changeme TAG=6.2.2 docker-compose up
                                
                            

Procure a linha de log abaixo. Isso indicará que o Logstash foi iniciado e agora pode aceitar dados.

                                

                                    logstash_1 | [2018-03-20T12:40:33,638][INFO ][logstash.agent ] Pipelines running {:count=>2, :pipelines=>["fingerprint_filter", "ruby_filter"]}
                                
                            

Agora dê um gole, galera. Estamos quase lá.

meme2

Para o plugin de filtro Fingerprint, execute o seguinte comando:

                                

                                    cat sample_docs | nc localhost 5000
                                
                            

Tcharã! Agora você pode inspecionar e usar os dados! As informações pseudonimizadas serão indexadas em um índice de eventos que você pode acessar com a seguinte consulta:

                                

                                    curl "http://localhost:9200/events/_search?pretty" -u elastic:changeme
                                
                            

Deve ficar mais ou menos assim:

                                

                                    {rnrn        "_index": "events",rnrn        "_type": "doc",rnrn        "_id": "tQOjQ2IBED8Jv9YVVDxs",rnrn        "_score": 1,rnrn        "_source": {rnrn          "host": "gateway",rnrn          "user_agent": "Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1",rnrn          "job_title": "Electrical Engineer",rnrn          "username": "95b88d8d477e18a8acca833e7bcbd2c5d5f646b29e2d1c9604a1d930e2f63313",rnrn          "@timestamp": "2018-03-20T13:39:59.799Z",rnrn          "ip": "e85022a9801b356dd8c3ed6b2e02f0061a3aeea5bbad15a9ff4aed35b5bb3a42",rnrn          "source": "ruby_pipeline",rnrn          "city": "Komsomol’skiy",rnrn          "title": "Mr",rnrn          "country_code": "UZ",rnrn          "@version": "1",rnrn          "gender": "Female",rnrn          "country": "Uzbekistan",rnrn          "port": 41126rnrn        }rnrn     }
                                
                            

Muito bom, não é? Mas espere, tem mais! As pesquisas de par chave-valor ficam em um índice de identidades, que você pode acessar com esta consulta:

                                

                                    curl "http://localhost:9200/identities/_search?pretty" -u elastic:changeme
                                
                            

Se você quer saber como é isso, dê uma olhada abaixo: 

                                

                                    {rnrn    "_index": "identities",rnrn    "_type": "doc",rnrn    "_id": "1924d02bd98a46c795cb2a925b98a22ae59c563e0de49f4ba4aa49e6cab072ad",rnrn    "_score": 1,rnrn    "_source": {rnrn      "key": "1924d02bd98a46c795cb2a925b98a22ae59c563e0de49f4ba4aa49e6cab072ad",rnrn      "value": "174.145.248.21",rnrn      "tags": [rnrn        "identities"rnrn      ],rnrn      "@timestamp": "2018-03-20T13:39:59.957Z",rnrn      "@version": "1",rnrn      "source": "ruby_pipeline"rnrn    }
                                
                            

Você sempre deve ter 200 documentos em um índice de pseudônimos, não importa quantas vezes indexe os dados. Há um documento para cada valor exclusivo na tabela e, neste caso, temos o nome de usuário e o endereço IP. Precisa reidentificar um valor? Você pode procurá-lo pelo ID no índice de identidades. Para quem não viu — é assim que um valor pseudonimizado se parece:

6efda88d5338599ef1cc29df5dad8da681984580dc1f7f495dcf17ebcf7191f8

Se precisar do valor original, você pode obtê-lo com este comando:

                                

                                    curl "http://localhost:9200/identities/doc/6efda88d5338599ef1cc29df5dad8da681984580dc1f7f495dcf17ebcf7191f8?pretty" -u elastic:changeme
                                
                            

Conclusão

emerilmeme

BAM! Pseudonimização! É como o programa de proteção a testemunhas, só que para dados — nós somos grandes fãs. Todos esses dados pseudonimizados dificultam que agentes mal-intencionados façam qualquer coisa com eles, mesmo que sejam bons no que fazem. Com uma política de retenção de dados sólida, o seu risco de roubo pode ser drasticamente minimizado, e quem não ama isso? Se você tem curiosidade sobre o processamento de dados do Mailgun, confira o nosso site! Abordamos a parte técnica do e-mail bem rápido.