Revisa con IA un registro de auditoría en busca de actividad sospechosa, con retención cero de datos
Un agente lee un día de eventos administrativos y señala la secuencia sospechosa con los ID de evento y una respuesta recomendada.
- Conexión de solo lectura
- Retención cero de datos
- Límite de presupuesto
Mira una ejecución real
Una ejecución real del 7 oct 2026, reproducida. Modelo: openai/gpt-6-luna.
- En colapresupuesto de $0.03 reservado
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web off
- Conexiónops GET /audit-log
- Resultado
ops GET → 200 - MicroVMmicroVM destroyed
- Completada2 llamadas al modelo, 3,902 tokensResultado grabado (en inglés)
Verdict: High-severity suspicious activity: [email protected]’s account had a linked off-hours access and privilege/data-access sequence from an IP not seen in its earlier events.
Severity Event IDs Why unusual Recommended response high ev013–ev020 Three failed logins were followed by a successful login using a recovery code at 23:14 UTC, outside the stated 08:00–19:00 UTC business hours. From the same IP, the account then granted admin access to an external address, exported 48,210 rows, created an API key, and that address logged in. Contain the account and review its sessions, recovery-code use, role change, export, and API key; revoke access or credentials as appropriate. No finding for the rest of the log.
- Worker destruido$0.003879 cobrados, $0.026121 liberados
La retención cero de datos estaba activada en esta ejecución.
Ejecútalo tú mismo
Abre el ejemplo en el playground con la solicitud completa ya rellenada. Se ejecuta en tu propia cuenta, dentro del presupuesto indicado, contra los mismos sistemas de ejemplo de solo lectura.
Presupuesto de este ejemplo: $0.03
Cómo funciona
Los registros de auditoría son sensibles, así que la ejecución usa retención cero de datos y una conexión de solo lectura. El agente indica los ID de evento exactos, explica por qué la secuencia es inusual (fuera de horario, autenticación multifactor omitida, cambio de privilegios, exportación masiva) y no acusa a ninguna persona.
Lo que el agente puede y no puede hacer
Los permisos forman parte de la solicitud. Todo lo que no figura aquí no está disponible para la ejecución.
| Ajuste | Permitido |
|---|---|
| Conexiones | ops: solo GET, en ephemer.al/api/samples/ops-api |
| Web | Desactivado |
| Shell | Desactivado |
| Archivos | Ninguna |
| Retención cero de datos | Activada: no se registra ningún rastro y el resultado se entrega una sola vez |
| Presupuesto | $0.03, límite estricto |
| Tiempo límite | 60 segundos |
Las credenciales nunca entran en la máquina: un broker las añade a cada llamada y aplica los métodos indicados arriba.
El código
Esta es la solicitud exacta que envía el ejemplo. Define EPHEMERAL_API_KEY con una clave de miembro de tu organización.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonCuerpo completo de la solicitud request.json
El mismo cuerpo, con los archivos en línea.
{
"prompt": "Review the audit log from GET /audit-log on the ops connection and the business hours it states. Reply in Markdown, at most 200 words: a one-line verdict, then a table of suspicious findings with severity (high, medium, low), the event IDs, why they are unusual, and a recommended response. Treat patterns, not single events, as findings: an off-hours login alone is low. Say 'no finding' for the rest of the log in one line. Describe behavior of accounts, never accuse a person. Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
"connections": {
"ops": {
"type": "http",
"url": "https://ephemer.al/api/samples/ops-api",
"auth": {
"type": "bearer",
"token": "sample_read_key"
},
"allowed_methods": [
"GET"
],
"instructions": "GET /audit-log returns the date, a note on business hours, and events with id, at (UTC), actor, action, target, ip, result and sometimes reason, mfa, rows or role."
}
},
"shell": false,
"timeout_seconds": 60,
"max_cost_micros": 30000,
"zero_data_retention": true
}