◇ OpenCyber Academy
Técnico · Capítulo 7 · Português

Capítulo 7 — Privacidade e proteção de dados: dados e telemetria

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 7 — Privacidade e proteção de dados: dados e telemetria

Mapa da aula

Aula 07 publicada. Mapa, exemplo, EX025.

flowchart TD
  N0["7.1 Telemetria por toda parte"]
  N1["7.2 O laboratório dos logs"]
  N2["7.3 Corrigir na origem"]
  N3["7.4 Retenção dos logs"]
  N4["Laboratório — Dados pessoais nos logs do servidor de"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["7.1 Telemetria por toda parte"]
  N1["7.2 O laboratório dos logs"]
  N2["7.3 Corrigir na origem"]
  N3["7.4 Retenção dos logs"]
  N4["Laboratório — Dados pessoais nos logs do servidor de"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX025"]
[7.1 Telemetria por toda parte]
    |
    v
[7.2 O laboratório dos logs]
    |
    v
[7.3 Corrigir na origem]
    |
    v
[7.4 Retenção dos logs]
    |
    v
[Laboratório — Dados pessoais nos logs do servidor de]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem

Você vai (1) encontrar dados pessoais em logs e telemetria; (2) mascará-los com segurança; (3) definir a retenção dos logs.

7.1 Telemetria por toda parte

Os sistemas da Marlow produzem logs, relatórios de erro e estatísticas de uso. O servidor de agendamento registra cada requisição, o gateway de SMS registra os resultados de entrega e o site envia dados de desempenho a um serviço de monitoramento. Leila aprende que a telemetria costuma ser desenhada pelos desenvolvedores para depuração, com pouca atenção à privacidade. Os logs são copiados para ferramentas de monitoramento, compartilhados com fornecedores em chamados de suporte e guardados por mais tempo do que os dados que descrevem. Uma linha de log com um e-mail pode, portanto, viajar mais longe do que o próprio registro de agendamento.

7.2 O laboratório dos logs

Leila analisa uma amostra sintética dos logs do servidor de agendamento. O laboratório mostra que 95 de 400 linhas, 23,8%, contêm dados pessoais: 75 trazem e-mails de pacientes e 20 trazem telefones de mensagens que falharam. Cada uma dessas linhas liga uma pessoa a uma consulta odontológica. Depois de uma etapa de mascaramento que troca os e-mails por um marcador e oculta os dígitos dos telefones, nenhuma linha com dados pessoais permanece. O número da reserva continua permitindo que a equipe de suporte rastreie um problema pelo sistema de gestão clínica, quando autorizada a fazê-lo.

7.3 Corrigir na origem

Mascarar depois é útil, mas Leila argumenta que a correção melhor é deixar de registrar dados pessoais nos logs. Ela pede ao desenvolvedor que registre os números das reservas em vez dos e-mails e apenas os três últimos dígitos dos telefones nas mensagens que falharam. O desenvolvedor concorda e muda as chamadas de log na versão seguinte. Leila repete a análise com tráfego sintético da nova versão e confirma que nenhuma linha nova contém e-mails ou telefones completos. Ela registra a mudança e o resultado do novo teste, para que a correção possa ser conferida de novo em cada versão futura.

7.4 Retenção dos logs

Por padrão, os logs ficam noventa dias no serviço de monitoramento, e os logs antigos do servidor de agendamento nunca tinham sido apagados. Leila propõe trinta dias para os logs detalhados, o que cobre a maior parte da solução de problemas, e doze meses para as estatísticas agregadas sem dados pessoais. Ela documenta a decisão com o encarregado, ligando-a à limitação da conservação do artigo 5(1)(e) do GDPR. O prestador de TI configura a exclusão automática, e Leila acrescenta uma verificação trimestral de que o arquivo de log mais antigo está dentro do limite. A primeira verificação passa.

Laboratório — Dados pessoais nos logs do servidor de agendamento

"""Find and mask personal data in synthetic booking-server log lines (stdlib only)."""
import random, re
random.seed(7)
names = ["ana", "ben", "chloe", "dev", "erin", "farid", "gita", "hugo"]
lines = []
for i in range(400):
    kind = random.random()
    if kind < 0.15:
        lines.append(f"INFO booking created for {random.choice(names)}@example.org slot={i}")
    elif kind < 0.22:
        lines.append(f"WARN sms failed to +44 7700 900{random.randint(100,999)} ref={i}")
    else:
        lines.append(f"INFO booking created ref=B{i:05d} clinic={random.randint(1,8)}")
EMAIL = re.compile(r"[\w.]+@[\w.]+"); PHONE = re.compile(r"\+44 \d{4} \d{6}")
hit = [l for l in lines if EMAIL.search(l) or PHONE.search(l)]
masked = [PHONE.sub("+44 **** ******", EMAIL.sub("<email>", l)) for l in lines]
left = sum(1 for l in masked if EMAIL.search(l) or PHONE.search(l))
print(f"log lines {len(lines)}; with personal data {len(hit)} ({100*len(hit)/len(lines):.1f}%)")
print(f"emails {sum(1 for l in lines if EMAIL.search(l))}; phones {sum(1 for l in lines if PHONE.search(l))}; after masking {left}")

Execute com python3 lab_logs.py. Saída verificada:

log lines 400; with personal data 95 (23.8%)
emails 75; phones 20; after masking 0

Exemplo resolvido

Leila encontra dados pessoais em 95 de 400 linhas sintéticas de log (23,8%), mascara-os até zero, faz o desenvolvedor deixar de registrar e-mails e telefones completos e define a retenção de trinta dias para os logs.

Caso sintético. Os logs são sintéticos; o artigo 5(1)(e) do GDPR é real.

Erros e limites

As expressões regulares deixam passar formatos incomuns; revise amostras à mão também.

Exercícios

Continue estudando — aula 07 (capítulo 07 de 18)

← Capítulo 06 · Índice das aulas · Capítulo 08 →

Continue para a próxima aula já escrita.