Capítulo 17 — Privacidade e proteção de dados: ferramentas
Mapa da aula
Aula 17 publicada. Mapa, exemplo, EX049.
flowchart TD
N0["17.1 O varredor"]
N1["17.2 Resultados"]
N2["17.4 Ações"]
N3["Laboratório — Varredura de padrões em arquivos compa"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX049"]
Desenho lógico
flowchart LR
N0["17.1 O varredor"]
N1["17.2 Resultados"]
N2["17.4 Ações"]
N3["Laboratório — Varredura de padrões em arquivos compa"]
N0 --> N1 --> N2 --> N3 --> Q["EX049"]
[17.1 O varredor]
|
v
[17.2 Resultados]
|
v
[17.4 Ações]
|
v
[Laboratório — Varredura de padrões em arquivos compa]
|
v
[Exemplo resolvido] --> [Exercício EX049]
Objetivos de aprendizagem
Você vai (1) usar um varredor simples para encontrar dados pessoais em arquivos; (2) interpretar seus limites; (3) agir sobre os resultados.
17.1 O varredor
Aisha escreve um varredor em Python, só com a biblioteca padrão, que usa expressões regulares para e-mails, telefones e números de cartão. Ela o roda em cinco arquivos sintéticos de um drive compartilhado, cópias modeladas nos tipos reais encontrados ali. O varredor lê cada arquivo linha a linha, aplica três padrões e conta as ocorrências sem imprimir os valores encontrados, para que o próprio relatório não espalhe dados pessoais. Os números de cartão são conferidos com um padrão simples de dígitos; ela observa que uma ferramenta de produção acrescentaria um teste de dígito verificador para reduzir os falsos positivos.
17.2 Resultados
O laboratório encontra padrões em três de cinco arquivos: uma exportação antiga de alunos com dois e-mails e dois telefones, anotações de um trainer com um telefone e um arquivo de reembolsos com um número de cartão. As anotações também mencionam uma lesão no joelho, que a expressão regular não detecta. A exportação foi criada para uma promoção três anos antes e esquecida; o arquivo de reembolsos foi salvo por um assistente financeiro para trabalhar offline; as anotações foram compartilhadas para cobrir aulas. Cada arquivo tem uma história plausível, o que mostra que os dados pessoais se espalham pelo trabalho comum, e não por descuido.
17.3 Limites
Aisha explica que os varredores de padrões deixam passar informações de saúde em texto livre e podem gerar falsos positivos. As expressões regulares encontram padrões estruturados, como e-mails, mas a saúde aparece em palavras comuns: lesão no joelho, asma, grávida. Uma lista de palavras-chave poderia ajudar, mas geraria muitos alarmes falsos numa academia, onde palavras como coração e lesão aparecem nas descrições das aulas. Por isso, é preciso revisão humana dos arquivos sinalizados e das anotações em geral. Aisha recomenda usar o varredor para priorizar essa revisão, e não para declarar que um arquivo está limpo.
17.4 Ações
A exportação antiga é excluída, o arquivo de reembolsos vai para o sistema de pagamentos e as anotações dos trainers passam para o aplicativo, com controles de acesso. Antes de excluir a exportação, Aisha confirma com o encarregado que não há retenção judicial. Ela pergunta ao financeiro por que precisava de uma cópia offline e descobre que o sistema de pagamentos não tinha um relatório de reembolsos, que a TI acrescenta. Os trainers ganham no aplicativo um campo de anotações que só os trainers do próprio aluno leem. O Sr. Reilly observa que as ferramentas ajudam, mas não substituem o julgamento.
Laboratório — Varredura de padrões em arquivos compartilhados
# Scan synthetic shared-drive files for personal data patterns (email, phone, card-like numbers).
import re
files = {"class_timetable.csv": "Mon,Spin,Studio 2\nTue,Yoga,Studio 1",
"member_export_old.csv": "name,email,phone\nAna Lima,ana@example.org,+44 7700 900123\nRui Sousa,rui@example.org,+44 7700 900456",
"trainer_notes.txt": "Client J. knee injury, avoid squats. Call 07700 900789.",
"refunds_march.txt": "Refund to card 4111 1111 1111 1111 approved",
"poster.txt": "Summer challenge! Join at the front desk."}
pat = {"email": r"[\w.]+@[\w.]+", "phone": r"(?:\+44 ?|0)7700 ?\d{6}", "card": r"\b(?:\d{4} ?){3}\d{4}\b"}
hits = 0
for f, t in files.items():
found = {k: len(re.findall(p, t)) for k, p in pat.items() if re.findall(p, t)}
hits += bool(found); print(f"{f:22s} {found if found else '-'}")
print(f"files with personal data patterns: {hits} of {len(files)}")
Execute com python3 lab_scan.py. Saída verificada:
class_timetable.csv -
member_export_old.csv {'email': 2, 'phone': 2}
trainer_notes.txt {'phone': 1}
refunds_march.txt {'card': 1}
poster.txt -
files with personal data patterns: 3 of 5
Exemplo resolvido
O varredor de Aisha sinaliza três de cinco arquivos e deixa passar a anotação sobre a lesão no joelho, e ela exclui, move e protege os arquivos.
Caso sintético. Os arquivos são sintéticos.
Erros e limites
Varredores por expressões regulares não captam o contexto nem formatos incomuns.
Exercícios
- EX049 — Arquivos sinalizados. Quantos arquivos continham padrões? Rubrica: 3 = 3 de 5;; 2 = parcialmente correta;; 1 = errada;; 0 = nenhuma.
- EX050 — Dado não detectado. O que o varredor deixou passar? Rubrica: 3 = a anotação de saúde sobre a lesão no joelho;; 2 = menciona saúde;; 1 = vago;; 0 = nenhuma.
- EX051 — Destino do arquivo de cartão. O que aconteceu com o arquivo de reembolsos? Rubrica: 3 = foi movido para o sistema de pagamentos;; 2 = menciona a mudança;; 1 = foi mantido;; 0 = nenhuma.
Continue estudando — aula 17 (capítulo 17 de 30)
← Capítulo 16 · Índice das aulas · Capítulo 18 →
Continue para a próxima aula já escrita.