A telemetria é o processo de coletar, transmitir e analisar dados de sistemas remotos, como logs, métricas e eventos, para monitoramento e diagnóstico. Em ambientes modernos, a telemetria é essencial para observabilidade, mas também introduz riscos significativos de segurança, pois os dados coletados podem conter informações sensíveis. A segurança de telemetria envolve proteger esses dados durante todo o seu ciclo de vida, desde a instrumentação até o descarte, garantindo confidencialidade, integridade e disponibilidade.

Nesta aula, vamos explorar os principais aspectos da segurança de telemetria: instrumentação, proteção de dados pessoais identificáveis (PII), políticas de retenção e conformidade com regulamentações. Cada um desses pilares é fundamental para construir um sistema de telemetria seguro e confiável, alinhado às melhores práticas e exigências legais.

Instrumentação

A instrumentação é o ponto de partida da telemetria: é onde os dados são gerados e capturados. Isso inclui a adição de código de instrumentação em aplicações, a configuração de agentes de coleta e a definição de quais eventos e métricas serão monitorados. A segurança na instrumentação começa com a decisão de quais dados coletar: quanto mais sensíveis forem os dados, maior o risco. Portanto, é essencial adotar o princípio do menor privilégio de dados, coletando apenas o necessário para a operação e análise.

Além disso, a instrumentação deve ser protegida contra adulteração. Um atacante que consiga modificar a instrumentação pode injetar dados falsos ou ocultar atividades maliciosas. Para mitigar isso, é importante usar assinaturas digitais ou hashes para verificar a integridade dos agentes de coleta, e implementar autenticação e autorização para qualquer endpoint de telemetria. Também é crucial garantir que a transmissão dos dados seja feita por canais seguros, como TLS, para evitar interceptação.

Exemplo de configuração de instrumentação segura em um agente de métricas (usando Prometheus como exemplo):

# Configuração do Prometheus para coleta segura
scrape_configs:
  - job_name: 'app'
    scheme: https
    tls_config:
      cert_file: /etc/prometheus/client.crt
      key_file: /etc/prometheus/client.key
    basic_auth:
      username: 'monitoring'
      password: 'secret'
    static_configs:
      - targets: ['app.internal:9100']

Neste exemplo, a coleta usa HTTPS com certificados e autenticação básica, garantindo que somente agentes autorizados possam enviar métricas.

PII

Dados Pessoais Identificáveis (PII) são informações que podem identificar direta ou indiretamente uma pessoa, como nome, e-mail, CPF, endereço IP, etc. Na telemetria, é comum que logs e métricas capturem PII acidentalmente, por exemplo, ao registrar URLs com parâmetros de consulta que contêm e-mails ou IDs de usuário. Coletar PII sem necessidade aumenta o risco de violação de privacidade e expõe a organização a sanções regulatórias.

A principal estratégia para proteger PII em telemetria é a minimização: eliminar ou mascarar dados sensíveis antes do armazenamento. Isso pode ser feito por meio de técnicas como pseudonimização, anonimização, ou simplesmente não coletando campos desnecessários. Além disso, é fundamental implementar controles de acesso rigorosos, garantindo que apenas pessoal autorizado possa visualizar dados brutos de telemetria que contenham PII, e usar criptografia para proteger os dados em repouso e em trânsito.

Um exemplo de mascaramento de PII em logs usando uma biblioteca de logging em Python:

import logging
import re

class PIIMaskingFilter(logging.Filter):
    def filter(self, record):
        # Substitui e-mails por [EMAIL]
        record.msg = re.sub(r'[\w\.-]+@[\w\.-]+', '[EMAIL]', record.msg)
        return True

logger = logging.getLogger('my_app')
logger.addFilter(PIIMaskingFilter())
logger.info('Usuário tentou acessar: user@example.com')
# Saída: Usuário tentou acessar: [EMAIL]

Esse filtro garante que e-mails não sejam gravados nos logs, protegendo a privacidade dos usuários.

Retention

Retenção refere-se ao período de tempo que os dados de telemetria são armazenados antes de serem excluídos ou arquivados. Políticas de retenção são essenciais por vários motivos: reduzem custos de armazenamento, diminuem a superfície de ataque (menos dados sensíveis disponíveis), e atendem a requisitos legais e regulatórios. No entanto, reter dados por muito pouco tempo pode impedir análises forenses ou detecção de incidentes de longo prazo.

Para definir uma política de retenção eficaz, é preciso considerar o tipo de dado, os requisitos de negócio e as obrigações legais. Por exemplo, logs de auditoria podem precisar ser retidos por anos, enquanto métricas de desempenho podem ser descartadas após dias. É importante implementar a retenção de forma automatizada, com scripts ou ferramentas que excluam dados expirados de forma segura, garantindo que não possam ser recuperados.

Um exemplo de política de retenção usando o Elasticsearch (ILM - Index Lifecycle Management):

PUT _ilm/policy/log_retention_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "7d",
            "max_size": "50gb"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

Essa política exclui automaticamente índices com mais de 30 dias, garantindo que os logs não fiquem retidos além do necessário.

Compliance

Compliance, ou conformidade, refere-se ao cumprimento de leis, regulamentos e normas aplicáveis à coleta e tratamento de dados. No contexto de telemetria, as principais regulamentações incluem a LGPD no Brasil, o GDPR na Europa, e normas específicas como PCI-DSS para dados de cartão de crédito. A conformidade não é apenas uma obrigação legal, mas também uma forma de construir confiança com clientes e parceiros.

Para estar em conformidade, é necessário mapear quais dados de telemetria estão sujeitos a regulamentações, implementar controles técnicos (como criptografia e controle de acesso) e administrativos (como políticas e treinamentos), e manter registros das atividades de tratamento de dados. Além disso, é fundamental estabelecer um processo para responder a solicitações de titulares de dados, como acesso, correção e exclusão, e notificar autoridades em caso de violação.

Um exemplo de checklist de conformidade para telemetria:

  • Identificar todas as fontes de telemetria que podem conter PII.
  • Documentar a base legal para a coleta (consentimento, legítimo interesse, etc.).
  • Implementar criptografia em trânsito (TLS) e em repouso (AES-256).
  • Estabelecer controles de acesso baseados em papéis (RBAC).
  • Definir prazos de retenção e procedimentos de exclusão segura.
  • Realizar avaliações de impacto à proteção de dados (DPIA) quando necessário.
  • Treinar a equipe sobre boas práticas de privacidade e segurança.

Essas ações ajudam a garantir que o sistema de telemetria esteja alinhado com as exigências legais.

Boas Práticas e Observações Finais

Além dos tópicos abordados, algumas boas práticas gerais incluem: monitorar continuamente a segurança da telemetria, realizar auditorias regulares, e manter um inventário atualizado de todos os dados coletados. É importante também considerar a segurança da cadeia de suprimentos, garantindo que ferramentas de telemetria e bibliotecas sejam provenientes de fontes confiáveis e estejam atualizadas. Por fim, a segurança de telemetria deve ser parte integrante do ciclo de desenvolvimento de software, não um complemento.

Lembre-se de que a telemetria é uma ferramenta poderosa, mas com grandes responsabilidades. Proteger os dados coletados é essencial para manter a confiança dos usuários e evitar danos legais e reputacionais.

Referências

Exercícios

  1. Explique por que a minimização de dados é importante na instrumentação de telemetria. Dê um exemplo de um dado que deve ser evitado coletar.
  2. ✓ Resposta: A minimização de dados reduz o risco de exposição de informações sensíveis e o impacto de uma violação. Coletar apenas o necessário limita a superfície de ataque e ajuda na conformidade com leis de proteção de dados. Um exemplo de dado que deve ser evitado coletar é o número de cartão de crédito completo, a menos que seja estritamente necessário para o processamento de pagamento.
  3. Descreva duas técnicas para proteger PII em logs de telemetria. Implemente um exemplo simples de uma delas em texto (pseudocódigo ou código).
  4. ✓ Resposta: Duas técnicas são mascaramento (substituir valores sensíveis por caracteres genéricos) e pseudonimização (substituir por um identificador falso). Exemplo de mascaramento em Python:
    import re
    def mask_email(text):
        return re.sub(r'[\w\.-]+@[\w\.-]+', '[EMAIL]', text)
    print(mask_email('Contato: joao@example.com'))  # Saída: Contato: [EMAIL]
  5. Qual é o propósito de uma política de retenção de dados? Cite dois fatores que influenciam a definição do período de retenção.
  6. ✓ Resposta: A política de retenção define por quanto tempo os dados de telemetria devem ser mantidos, equilibrando necessidades de análise e requisitos legais com custos e riscos. Fatores que influenciam o período incluem requisitos regulatórios (ex.: LGPD exige que dados sejam excluídos quando não mais necessários) e a necessidade de análise forense ou detecção de incidentes de longo prazo.
  7. Cite três ações práticas que uma empresa pode tomar para estar em conformidade com a LGPD no contexto de telemetria.
  8. ✓ Resposta: Três ações: (1) Realizar um mapeamento dos dados de telemetria que contenham PII e documentar a base legal para o tratamento; (2) Implementar controles técnicos como criptografia e controle de acesso; (3) Estabelecer procedimentos para atender a solicitações dos titulares (acesso, correção, exclusão) e notificar a ANPD em caso de violação.
  9. Em um cenário de telemetria, você precisa armazenar logs de acesso por 90 dias para atender a requisitos de auditoria. Como você implementaria isso em um sistema de armazenamento de logs? Descreva os passos em alto nível.
  10. ✓ Resposta: Passos em alto nível: (1) Configurar uma política de retenção no sistema de logs (ex.: ILM no Elasticsearch) que defina um período de hot de 90 dias e depois exclua ou arquive; (2) Automatizar a exclusão de logs com mais de 90 dias usando um job agendado (ex.: cron) que chama a API de exclusão; (3) Garantir que a exclusão seja segura (sobrescrever ou usar exclusão criptográfica) e que haja um backup, se necessário, para atender a requisitos de auditoria.