Kobana

Diff completo de cada mutação. Quem, quando, o quê e de onde.

AuditLog é append-only com 200+ tipos de ação. Captura previousValues, newValues, IP, user agent, user email. Retenção configurável. Export para SIEM.

Sistema
AuditLog com filtros por usuário, ação e recurso
200+
tipos de ação
Append-only
imutável
Diff
previous + new values
2 anos
retenção default

Recursos do AuditLog

Captura Automática
AuditService.logWithContext() chamado em todos endpoints de mutação. Padrão obrigatório nas API routes.
  • AuditService.logWithContext()
  • Endpoints de mutação
  • Padrão obrigatório
Diff Visualizado
Dashboard exibe lado a lado o estado anterior e o atual. Útil para incident response.
  • Side-by-side diff
  • Estado anterior + atual
  • Incident response
Filtros Combinados
Filtre por usuário, ação, resource, IP, período. Operadores AND/OR.
  • Usuário, ação, resource, IP
  • AND/OR
  • Período customizável
Export para SIEM
Export em JSON, CSV. Integração com Splunk, Datadog, Elasticsearch via webhook.
  • JSON, CSV
  • Splunk, Datadog, Elasticsearch
  • Webhook real-time
Retenção Configurável
Default 2 anos. Configurável por organização. Antes de purge, export automático opcional.
  • Default 2 anos
  • Configurável
  • Export antes de purge
Append-Only
Logs não podem ser editados ou deletados manualmente. Garantia de integridade para compliance.
  • Imutável
  • Compliance garantido
  • Sem edição manual
Logs do Sistema
Workers e automações também registram (usuário = 'sistema'). Útil para distinguir ação humana vs automática.
  • Workers registram
  • Usuário = 'sistema'
  • Humano vs automático
Multi-tenant Isolado
Cada organização vê apenas seus logs. Filtro por organizationId no service.
  • Isolamento por org
  • Sem cross-tenant
  • Filtro automático

Consultar audit via API

bash
curl "https://api.billing.kobana.com.br/v1/audit-logs?\
action=invoice.voided&\
since=2026-06-01&\
limit=50" \
  -H "Authorization: Bearer sk_live_..."
response
{
  "data": [
    {
      "id": "al_xyz",
      "user_email": "ana@empresa.com.br",
      "action": "invoice.voided",
      "resource_type": "invoice",
      "resource_id": "inv_abc",
      "resource_name": "INV-001234",
      "previous_values": { "status": "open" },
      "new_values": { "status": "void", "voided_at": "2026-06-06T..." },
      "ip_address": "189.123.45.67",
      "created_at": "2026-06-06T12:30:00Z"
    }
  ]
}

Perguntas frequentes

Auditoria pronta pra qualquer auditor