Skip to content

Exportação para SIEM (CEF)

A equipe de segurança do cliente reúne os eventos de todos os seus sistemas num único SIEM e os analisa lá, e não no painel de cada sistema separadamente. A Agora entrega o registo de auditoria no formato CEF (Common Event Format): um formato de texto, uma linha por evento, com os campos separados por delimitadores. ArcSight, KUMA, MaxPatrol SIEM e outros coletores corporativos o aceitam sem nenhuma adaptação.

A exportação entrega a janela escolhida do registo inteira, num só arquivo, dos lançamentos mais antigos para os mais recentes. Ela pode ser obtida de duas maneiras:

  • com o botão Exportar para CEF da seção Registo de auditoria — o navegador salva o arquivo;
  • com uma requisição à API — assim o coletor do SIEM busca o registo conforme um agendamento.

A exportação é a mesma leitura do registo que a lista do painel: as mesmas permissões, a mesma opção de licença, os mesmos lançamentos. Para ela a Agora não cria arquivos na máquina nem abre conexões de saída para um coletor.

Exportar pelo painel

O botão Exportar para CEF fica acima da lista, ao lado do botão Aplicar. Ele exporta exatamente o que a lista mostra:

  • Tipo de recurso, Nome do recurso e Ator restringem a exportação do mesmo modo que restringem a lista;
  • De e Até definem a janela de tempo;
  • campos vazios significam «não filtrar» — exporta-se todo o registo dentro da sua retenção.

A exportação usa os filtros aplicados. Se depois de clicar em Aplicar um campo foi alterado mas a lista não foi relida, a exportação usa o valor anterior: o arquivo sempre coincide com o que se vê na tela.

O arquivo se chama audit-log.cef. Ele contém todos os lançamentos da janela, e não só as páginas que a lista já carregou.

O botão é visível para os mesmos papéis que o próprio registo — security e superadmin. Quando o registo não está incluído na licença, o botão fica desativado.

O arquivo é montado na memória da aba do navegador. Para uma janela de vários dias isso basta; o registo de um período de retenção longo é melhor buscar pela API.

Exportar pela API

GET /central/api-v4/audit-log/export?format=cef&from=2026-09-27T00:00:00Z&to=2026-09-27T12:00:00Z

A autorização é a mesma autorização de operador do resto da API de gestão, e os papéis também: security e superadmin.

Parâmetros:

  • format — obrigatório; por enquanto o único valor é cef;
  • from, to — os limites da janela no formato RFC 3339, ambos incluídos na janela;
  • resource_type, resource_name, actor, actor_type — os mesmos filtros do painel; actor_type aceita admin, static e node.

A resposta é texto (text/plain), como anexo com o nome audit-log.cef. Ela chega em fluxo: as primeiras linhas chegam de imediato, e o servidor mantém em memória uma única página do registo, de modo que o tamanho da janela não é limitado por nada.

Recusas:

  • 400 — um limite da janela não está no formato RFC 3339, ou o formato está ausente ou é desconhecido. Uma requisição inválida nunca se transforma numa exportação do registo inteiro;
  • 403 — o papel não tem acesso ao registo;
  • 404 — o registo de auditoria não está incluído na licença.

Se a exportação se interromper no meio da transferência — por exemplo, o banco de dados falha do lado da máquina —, a resposta termina como uma transferência incompleta: o curl informa uma conexão interrompida, o navegador marca o download como falho. Um arquivo que chegou inteiro contém a janela inteira.

Sem to, a janela fica aberta para a frente: os lançamentos feitos enquanto a exportação está em curso também entram. Se for preciso um limite fixo, indique to.

A linha CEF

Cada evento é uma linha:

CEF:0|Flussonic|agora|26.09|stream_config.patch|stream_config.patch|3|rt=1790590530250 externalId=0f6b8a1e-6a3c-5d7e-9b1a-2c3d4e5f6a7b dvchost=11111111-2222-3333-4444-555555555555 suid=admin suser=ivanov outcome=success src=10.20.1.11 cs1=stream cs1Label=resourceType cs2=conference-a cs2Label=resourceName cs3=9c1f07e2 cs3Label=sessionId cs4=4bf92f3577b34da6a3ce929d0e0e4736 cs4Label=traceId cs5={"fields":["labels"],"role":"admin","src_ip":"10.20.1.11","version":7} cs5Label=details cn1=3672 cn1Label=auditId cn2=1 cn2Label=schemaVersion

O cabeçalho, até a sétima barra vertical:

  • Device Vendor — Flussonic;
  • Device Product — agora: por ele o SIEM escolhe as suas regras de análise;
  • Device Version — a versão da Agora instalada;
  • Device Event Class ID e Name — a ação, o mesmo nome de máquina da coluna Ação da lista: stream_config.patch, admin.create, auth.login_failed;
  • Severity — a gravidade do evento, descrita abaixo.

Depois vêm os campos, na forma chave=valor:

Campo CEF O que contém
rt o momento do evento, em milissegundos desde a época
externalId o identificador global do evento — por ele o SIEM descarta duplicados
dvchost o identificador da instalação da Agora: os eventos de duas instalações num mesmo SIEM não se misturam
suid o tipo de ator: admin, static (chave estática) ou node (registro de uma máquina do cluster)
suser o login do administrador; a chave estática não o tem
outcome success numa ação que aconteceu, failure num login falhado
src o endereço de onde veio a requisição
cs1, cs2 tipo e nome do recurso (cs1Label=resourceType, cs2Label=resourceName)
cs3 o identificador da sessão do administrador (cs3Label=sessionId): liga um login a tudo o que foi feito nessa sessão
cs4 o identificador de rastreamento da requisição (cs4Label=traceId) — com ele o evento se casa com os logs
cs5 os detalhes do lançamento em JSON (cs5Label=details): papel, versão do documento, lista de campos alterados
cn1 o número do lançamento no registo da instalação (cn1Label=auditId)
cn2 a versão do esquema do evento (cn2Label=schemaVersion)

Os campos que um evento não tem ficam fora da linha por completo: uma chave vazia seria lida pelo SIEM como um valor vazio. Uma ação com a chave estática, por exemplo, não tem nem suser nem cs3.

Os caracteres especiais são escapados como exige a especificação CEF: no cabeçalho, a barra invertida e a barra vertical; nos campos, a barra invertida e o sinal de igual; as quebras de linha viram \n. Por isso um evento ocupa sempre exatamente uma linha, seja o que for que os seus valores contenham.

Gravidade do evento

A gravidade não é guardada no registo — ela é deduzida do evento na hora da exportação, por uma mesma tabela:

  • 7 — uma ação falhada; por enquanto, uma tentativa de login falhada (auth.login_failed);
  • 5 — uma ação que a equipe de segurança espera acima do fluxo geral:

    • a remoção de qualquer coisa, a revogação de uma máquina, a reemissão dos tickets internos do cluster, a revelação do token de entrada;
    • qualquer ação sobre as contas de administradores;
    • a edição das configurações de acesso e das configurações da própria instalação de controle;
    • a abertura e o fechamento da janela de entrada;
    • qualquer ação com a chave estática — um login com as credenciais de emergência merece atenção por si só;
  • 3 — todo o resto: edição de streams, modelos, zonas de entrega, o login de um administrador.

As regras se apoiam na forma da ação, e não numa lista feita de antemão, de modo que as ações que surgirem em versões futuras recebem a sua gravidade pelas mesmas regras.

Coleta periódica num SIEM

O coletor do SIEM busca o registo por janelas conforme um agendamento: cada requisição usa como from o to da anterior. Os dois limites pertencem à janela, então um lançamento que cai exatamente na junção chega duas vezes — o SIEM descarta o duplicado por externalId. Da mesma forma, uma janela repetida após uma transferência interrompida é transferida sem perdas.

Uma janela não deve ir além da retenção do registo — sete dias por padrão (a configuração audit_log_ttl_secs, veja Retenção e proteção). Um coletor que ficou atrasado por mais tempo só encontrará o que ainda não foi apagado.

A um coletor que lê JSON também serve a lista do registo com cursor, descrita na seção Exportação para SIEM da página do registo. Os campos do evento são os mesmos; só muda a forma.