Para os últimos 90 dias de eventos de gerenciamento, use o console do CloudTrail (Histórico de eventos → Baixar eventos → JSON) ou aws cloudtrail lookup-events. Para eventos mais antigos, ou para eventos de dados como leituras de objetos S3, leia os arquivos de log do seu trail no S3. Eles ficam em s3://<bucket>/AWSLogs/<account-id>/CloudTrail/<region>/YYYY/MM/DD/.
O CloudTrail é o log de auditoria do plano de controle do seu AWS: cada login no console, cada chamada de API, cada assunção de função. Em um incidente na nuvem, é a primeira coisa que todos pedem. Prime Core tem 262 regras de detecção para CloudTrail, mapeadas para 177 técnicas do MITRE ATT&CK. Entre elas: uso indevido de contas na nuvem (T1078.004), invasores desligando o registro em nuvem (T1562.008) e roubo de dados de armazenamento em nuvem (T1530).
Antes de começar
Histórico de eventos e trilhas são coisas diferentes. O histórico de eventos está sempre ativo e é gratuito. Ele mantém 90 dias de eventos de gerenciamento, por região. Uma trilha é algo que você configura: ela grava no S3, mantém logs pelo tempo que desejar e pode incluir eventos de dados. Verifique o que você tem:
aws cloudtrail describe-trails
aws cloudtrail get-trail-status --name <trail-name>
IsLogging: false em uma trilha que deveria estar rodando é uma constatação em si.
Regiões importam. O histórico de eventos é por região, e eventos de serviços globais como IAM geralmente caem em us-east-1. Se você está procurando por uma chamada CreateUser em eu-west-1, você não encontrará.
Permissões. cloudtrail:LookupEvents para histórico de eventos. Para arquivos de trilha, s3:ListBucket e s3:GetObject no bucket, além de kms:Decrypt se a trilha estiver criptografada com uma chave KMS.
Opção 1: Download pelo console
Abra o CloudTrail, vá para Histórico de eventos, defina o intervalo de tempo e quaisquer filtros (nome do evento, usuário, recurso), depois escolha Baixar eventos → JSON. O download respeita seus filtros, então verifique-os primeiro. Ele cobre apenas a região atual.
Opção 2: lookup-events pelo CLI
aws cloudtrail lookup-events --region us-east-1
--start-time 2026-10-19T00:00:00Z --end-time 2026-10-20T00:00:00Z
--output json > ct_use1_1019.json
Duas coisas a saber. Primeiro, cada resultado envolve o evento real como um string em CloudTrailEvent. Desembrulhe-o em um evento limpo por linha:
jq -c '.Events[].CloudTrailEvent | fromjson' ct_use1_1019.json > ct_use1_1019.jsonl
Segundo, lookup-events é limitado por taxa por conta e região, e aceita apenas um filtro –lookup-attributes por chamada. Grandes janelas de tempo demoram um tempo, então, estreite-as quando puder. Para cobrir todas as regiões, execute iterativamente aws ec2 describe-regions –query ‘Regions[].RegionName’ –output text.
Opção 3: Arquivos de trilha do S3
Esta é a rota para histórico além de 90 dias e para eventos de dados:
aws s3 cp s3://my-trail-bucket/AWSLogs/123456789012/CloudTrail/eu-west-1/2026/10/19/ ./ct/ --recursive
gunzip ./ct/*.json.gz
jq -c '.Records[]' ./ct/*.json > ct_euw1_1019.jsonl
Cada arquivo contém um array de Records, e a linha jq achata todos eles em um evento por linha. Trilhas de organização adicionam o ID da organização ao caminho: AWSLogs/<org-id>/<account-id>/CloudTrail/…. Se você usar o CloudTrail Lake, pode executar SQL sobre seus eventos e salvar os resultados em vez disso.
O que procurar
| Evento | Por que importa |
|---|---|
| ConsoleLogin | Verifique additionalEventData.MFAUsed, falhas e IPs de origem que você não reconhece |
| CreateUser, CreateAccessKey, AttachUserPolicy | Novas identidades e chaves: persistência clássica e escalonamento de privilégios |
| StopLogging, DeleteTrail, PutEventSelectors | Alguém reduzindo o que o CloudTrail vê |
| AssumeRole de fontes estranhas | Movimento lateral entre funções e contas |
| Explosões de errorCode: AccessDenied | Reconhecimento com credenciais roubadas |
| Explosões de GetSecretValue, GetObject | Acesso a dados; GetObject aparece apenas se eventos de dados do S3 estiverem ativados |
Carregue, higienize e revise no LogTotal
- Upload. Abra logtotal.com e carregue o arquivo .jsonl (ou arquivo .json).
- Higienizar. [what gets masked: account IDs, ARNs, IPs, access key IDs, usernames]. Look it over before you continue.
- Revisar.
Quando dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| lookup-events não retorna nada | Região errada; eventos IAM geralmente vivem em us-east-1 | Consulte us-east-1 ou faça loop por todas as regiões |
| Nada mais antigo que 90 dias | Retenção de histórico de eventos | Use os arquivos de trilha no S3 |
| Nenhum evento GetObject | Eventos de dados do S3 não estão habilitados na trilha | Esperado; habilite-os para o futuro |
| Acesso negado ao ler arquivos de trilha | kms:Decrypt ausente, ou a política do bucket | Corrija o IAM ou a política do bucket |
| ThrottlingException | limite de taxa de lookup-events | Janelas menores; deixe o CLI tentar novamente |
FAQ
O histórico de eventos inclui eventos de dados?
Não. Apenas eventos de gerenciamento. Eventos de dados existem apenas se uma trilha ou loja de dados de eventos foi configurada para registrá-los.
Com que rapidez os eventos aparecem?
Geralmente dentro de minutos após a chamada da API. Os arquivos de trilha no S3 chegam em lotes, então um evento muito recente pode ainda não estar em um arquivo.