Pular para o conteúdo principal

🗃️ Logging Estruturado e Centralizado

🌟 Objetivo

Garantir que todas as aplicações registam eventos de forma estruturada, segura, rastreável e auditável, permitindo a deteção de anomalias, correlação entre sistemas e suporte à resposta a incidentes.


🧬 O que é logging estruturado

Logging estruturado consiste na emissão de eventos com campos normalizados, num formato legível por máquina (ex: JSON), transportado para um sistema centralizado e com garantias de integridade e retenção.

📌 A estrutura e consistência dos logs são essenciais para deteção, rastreabilidade e investigação eficaz.


🧱 Estrutura recomendada dos eventos

Adotar uma convenção como o Elastic Common Schema (ECS) ou formato próprio baseado em JSON com campos mínimos comuns.

CampoExemploObservações
timestamp2025-07-21T10:35:14ZISO 8601 em UTC
levelINFO, ERROR, WARN, DEBUGNíveis padronizados
event.actionuser.login, file.upload, api.callTaxonomia consistente
user.idabcd-1234ID interno do utilizador, se aplicável
src.ip192.168.1.20IP de origem
trace.idxyz-9876Suporte a tracing distribuído
applicationfrontend-web, api-gateway, worker-jobComponente lógica da aplicação

📦 Transporte e centralização dos logs

  • Usar agentes de forwarding (ex: Filebeat, Fluentbit, Vector)
  • Garantir transporte seguro (TLS) e persistência temporária (buffers)
  • Preferir streaming contínuo (ex: TCP, gRPC) a batch ou UDP
  • Separar logging do processo principal (ex: sidecar container, logging driver)

Destinos típicos:

CategoriaExemplos
SIEMsSplunk, Sentinel, QRadar
ObservabilidadeElastic Stack, Loki, Datadog
HíbridosOpenSearch, Graylog, Grafana Tempo

🔒 Segurança e integridade dos logs

ControloDescrição
Retenção protegida (WORM)Impede alteração de logs após escrita
Acesso restritoEscrita apenas via aplicação; leitura auditada
Assinatura ou hashVerificação de integridade por lote ou ficheiro
Isolamento de funçãoLogging separado da aplicação (ex: forwarder, sidecar, service)

⚠️ Logs apenas locais são aceitáveis apenas para aplicações L1 - com recolha periódica e justificação documentada.


📌 Eventos mínimos obrigatórios

Tipo de eventoDeve conter…
Autenticação falhadaIP, utilizador, timestamp, motivo
Alterações sensíveisQuem, o quê, onde, antes e depois
Exceções internasStack trace (resumido), módulo, request ID
Upload / downloadNome, tamanho, utilizador, método
Chamada API externaEndpoint, status, tempo de resposta

✅ Boas práticas

  • Não registar dados sensíveis (ex: passwords, tokens), mesmo cifrados
  • Separar logs por contexto funcional (ex: app.log, auth.log, db.log)
  • Validar presença e formato de logs nos testes automatizados
  • Incluir request.id e trace.id para rastreabilidade de pedidos distribuídos
  • Emitir logs em todas as transições de estado de segurança

🧩 Ligação com deteção e resposta

O logging estruturado serve como base para os mecanismos de deteção definidos noutros documentos:

DocumentoRelação com este tópico
03-alertas-eventos-criticos.mdGeração de alertas a partir de eventos
06-correlacao-anomalias.mdCorrelação entre eventos para deteção
08-matriz-controles-por-risco.mdRequisitos de logging por nível L1–L3

🔐 Um sistema de logging bem estruturado e centralizado é pré-requisito para deteção eficaz, resposta a incidentes, e conformidade com frameworks como SSDF, SLSA, ISO 27001.