En la Consola de administración de Okta, Informes → Registro del sistema te permite buscar eventos y descargar los resultados. Para JSON, usa la API del Registro del sistema: GET /api/v1/logs con since y until, siguiendo el siguiente enlace hasta que se agote. Un breve script está a continuación. Okta mantiene los eventos del Registro del sistema durante 90 días.
Cuando la identidad es el perímetro, el Registro del sistema de Okta es el registro de entrada. Registra cada inicio de sesión, cada envío de MFA, cada restablecimiento de factor y cada cambio de rol de administrador. Prime Core tiene 58 reglas de detección para datos de Okta, mapeadas a 32 técnicas de MITRE ATT&CK. Entre ellas: pulverización de contraseñas (T1110.003), fatiga de MFA (T1621) y atacantes manipulando el registro de MFA (T1556.006).
Antes de empezar
La retención es de 90 días. Cualquier cosa más antigua existe solo donde has estado transmitiendo o reenviando registros de Okta, como un SIEM.
Necesitas un token. Un token de API (Seguridad → API → Tokens) hereda los permisos del administrador que lo creó. Un administrador de solo lectura es suficiente para los registros. Para cualquier cosa automatizada, una aplicación de servicio OAuth con el alcance okta.logs.read es la opción más limpia. De cualquier manera, el token es una credencial. Mantenlo fuera del historial del shell y revócalo cuando hayas terminado.
Se aplican límites de tasa. El punto final de registros tiene su propio límite de tasa. Ventanas grandes están bien, solo no instantáneas.
Exportar con la API del Registro del sistema
Este script de Python recorre una ventana de tiempo y escribe un evento por línea. Necesita requests (pip install requests):
importar json, os, requests
org = "https://tusorganización.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}
con open("okta_1019.jsonl", "w") como out:
mientras url:
r = requests.get(url, headers=headers, params=params, timeout=60)
r.raise_for_status()
events = r.json()
para e en events:
out.write(json.dumps(e) + "n")
si no events:
break
url = r.links.get("next", {}).get("url")
params = None # el enlace siguiente ya lleva la consulta
Siempre establece until. Sin él, Okta trata la solicitud como una encuesta en vivo y sigue devolviendo un enlace siguiente. Tu bucle se ejecutaría para siempre, esperando nuevos eventos.
Para estrecharlo, agrega un filtro a los params, por ejemplo «filter»: ‘eventType eq «user.session.start»‘. O usa «q»: «jane» para una búsqueda por palabra clave.
Qué buscar
| eventType | Por qué importa |
|---|---|
| user.session.start con outcome.result: FAILURE | Inicios de sesión fallidos; muchos usuarios de un rango de IP significa pulverización |
| user.mfa.okta_verify.deny_push | El usuario rechazó un push; una ráfaga de estos es fatiga de MFA en progreso |
| user.mfa.factor.deactivate, user.mfa.factor.reset_all | Factores eliminados, a menudo justo después de una llamada de ingeniería social al helpdesk |
| user.account.privilege.grant | Rol de administrador otorgado |
| policy.rule.update, policy.lifecycle.update | Política de inicio de sesión o de MFA cambiado, posiblemente debilitada |
| system.api_token.create | Un nuevo token de API, una manera silenciosa de mantener el acceso |
Los campos que cuentan la historia: actor.alternateId (quién), client.ipAddress y client.geographicalContext (de dónde), outcome (qué sucedió), y debugContext.debugData (los detalles).
Sube, desinfecta y revisa en LogTotal
- Sube. Abre logtotal.com y suelta el archivo .jsonl. [PRUEBA: pantalla de carga, límite de tamaño]
- Desinfecta. [PROOF: what gets masked: usernames and emails, IPs, device and session IDs]. Look it over before you continue.
- Revisa. [PROOF: what the results screen shows]
Cuando algo sale mal
| Síntoma | Causa probable | Fix |
|---|---|---|
| 401 | Token incorrecto o revocado, o falta prefijo SSWS | Revisa el formato del encabezado; crea un nuevo token |
| 403 | El creador del token no tiene permisos para leer registros | Usa un token de un administrador con acceso a registros |
| 429 | Límite de tasa alcanzado | Espera el tiempo en X-Rate-Limit-Reset, luego continúa |
| El script nunca termina | No se puso until en la consulta | Establecer until |
| Nada mayor de 90 días | Retención de Okta | Revisa tu SIEM o destino de transmisión de registros |
FAQ
¿No puedo simplemente usar la Consola de Administración?
Para una vista rápida de una ventana corta, sí. Para cualquier cosa que desees analizar o conservar, la API te da JSON completo con cada campo.
¿Esto cubre Auth0?
No. Esta guía es sobre Identidad de la Fuerza Laboral de Okta. Auth0 tiene su propio formato de registros y API.