No Console do Administrador do Okta, Relatórios → Log do Sistema permite que você procure eventos e baixe os resultados. Para JSON, use a API de Log do Sistema: GET /api/v1/logs com since e until, seguindo o próximo link até que acabe. Um pequeno script está abaixo. O Okta mantém eventos do Log do Sistema por 90 dias.
Quando a identidade é o perímetro, o Log do Sistema do Okta é o registro do portão. Ele registra cada login, cada push de MFA, cada redefinição de fator e cada alteração de função de administrador. Prime Core possui 58 regras de detecção para dados Okta, mapeadas para 32 técnicas MITRE ATT&CK. Dentre elas: ataque de pulverização de senhas (T1110.003), fadiga de MFA (T1621) e invasores adulterando o registro de MFA (T1556.006).
Antes de começar
Retenção é de 90 dias. Qualquer coisa mais antiga existe somente onde você tem transmitido ou encaminhado logs Okta, como para um SIEM.
Você precisa de um token. Um token de API (Segurança → API → Tokens) herda as permissões do administrador que o criou. Um administrador de leitura apenas é suficiente para logs. Para qualquer coisa automatizada, um aplicativo de serviço OAuth com o escopo okta.logs.read é a escolha mais limpa. De qualquer modo, o token é uma credencial. Mantenha-o fora do histórico do shell e revogue-o quando terminar.
Limites de taxa se aplicam. O endpoint de logs possui seu próprio limite de taxa. Grandes janelas são permitidas, só não instantaneamente.
Exportar com a API de Log do Sistema
Este script Python percorre uma janela de tempo e escreve um evento por linha. Ele precisa de requests (pip install requests):
import json, os, requests
org = "https://yourorg.okta.com"
headers = {"Authorization": f"SSWS {os.environ['OKTA_TOKEN']}", "Accept": "application/json"}
url = f"{org}/api/v1/logs"
params = {"since": "2026-10-19T00:00:00Z", "until": "2026-10-20T00:00:00Z", "limit": 1000}
with open("okta_1019.jsonl", "w") as out:
while url:
r = requests.get(url, headers=headers, params=params, timeout=60)
r.raise_for_status()
events = r.json()
for e in events:
out.write(json.dumps(e) + "n")
if not events:
break
url = r.links.get("next", {}).get("url")
params = None # o próximo link já carrega a consulta
Sempre defina until. Sem isso, Okta trata a requisição como uma enquete ao vivo e continua fornecendo um próximo link. Seu loop rodaria para sempre, esperando por novos eventos.
Para restringir, adicione um filtro aos params, por exemplo “filter”: ‘eventType eq “user.session.start”‘. Ou use “q”: “jane” para uma busca por palavra-chave.
O que procurar
| eventType | Por que é importante |
|---|---|
| user.session.start com outcome.result: FAILURE | Logins falhos; muitos usuários de uma faixa de IP significa pulverização |
| user.mfa.okta_verify.deny_push | Usuário rejeitou um push; uma explosão desses é fadiga de MFA em progresso |
| user.mfa.factor.deactivate, user.mfa.factor.reset_all | Fatores removidos, geralmente logo após uma ligação de engenharia social para o helpdesk |
| user.account.privilege.grant | Papel de administrador concedido |
| policy.rule.update, policy.lifecycle.update | Política de login ou MFA alterada, possivelmente enfraquecida |
| system.api_token.create | Um novo token de API, uma maneira discreta de manter o acesso |
Os campos que contam a história: actor.alternateId (quem), client.ipAddress e client.geographicalContext (de onde), outcome (o que aconteceu) e debugContext.debugData (os detalhes).
Envie, saneie e revise no LogTotal
- Envie. Abrir logtotal.com e solte o arquivo .jsonl. [PROVA: tela de upload, limite de tamanho]
- Sanitize. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- Rever. [PROOF: what the results screen shows]
Quando algo dá errado
| Sintoma | Causa provável | Fix |
|---|---|---|
| 401 | Token errado ou revogado, ou prefixo SSWS ausente | Verifique o formato do cabeçalho; crie um novo token |
| 403 | Criador do token não tem direitos para ler logs | Use um token de um administrador com acesso a logs |
| 429 | Limite de taxa atingido | Aguarde o tempo em X-Rate-Limit-Reset, então continue |
| O script nunca termina | Sem until na consulta | Defina until |
| Nada mais antigo do que 90 dias | Retenção do Okta | Verifique seu SIEM ou destino de transmissão de logs |
FAQ
Não posso simplesmente usar o Console de Administração?
Para uma olhada rápida em uma janela curta, sim. Para qualquer coisa que você queira analisar ou manter, a API fornece JSON completo com todos os campos.
Isso cobre o Auth0?
Não. Este guia é sobre Okta Workforce Identity. Auth0 tem seu próprio formato de log e API.