Skip to content
BotServBotServ
AuditLoggingAgentTrazabilidadComplianceSeguridad

Audit-Logging: Rastrear acciones de agentes

Audit-Logging para agentes IA: registrar acciones, analizar logs y cumplimiento normativo.

S

schutzgeist

8 min read
Audit-Logging: Rastrear acciones de agentes

Audit-Logging: Seguimiento de acciones de agentes

Qué cubre este artículo

  • Por qué el audit-logging es importante para agentes de IA
  • Qué es un audit trail y qué información contiene
  • Cómo generar logs estructurados con Python
  • Cómo almacenar, rotar y analizar logs
  • Cómo se relaciona el audit-logging con aprobación humana y guardrails

Introducción

Los agentes de IA toman decisiones y ejecutan acciones. Leen archivos, lanzan comandos y realizan llamadas a APIs. Cuando algo falla, necesitas saber: ¿qué hizo el agente? ¿Quién emitió la orden de inicio? ¿Cuándo sucedió?

El audit-logging es la respuesta. Registra eventos relevantes de manera que no puedan ser alterados posteriormente y permanezcan fáciles de rastrear. En este artículo, te explicamos cómo construir un audit log para agentes de IA. Usamos Python porque muchos agentes se escriben con este lenguaje.

Si necesitas repasar los fundamentos de los sistemas de agentes, consulta Agentensysteme. Para el tema de operación segura, te recomendamos Sicherer Betrieb.

Por qué el audit-logging es importante

Un agente de IA suele tener comandos de gran alcance. Si elimina un archivo o ejecuta una llamada API incorrecta, necesitas un registro completo y sin lagunas. Los audit logs te ayudan en varios objetivos:

  • Depuración: rastrear qué condujo a un problema
  • Seguridad: detectar acciones no autorizadas
  • Compliance: proporcionar pruebas a auditores o reguladores
  • Confianza: permitir que los usuarios verifiquen lo que hizo el agente
  • Aprendizaje: reconocer patrones en el comportamiento del agente y mejorarlo

El audit-logging no sustituye medidas de protección como sandboxes o guardrails, pero es una parte importante. Te muestra qué pasó cuando algo sale mal.

Audit-Logging explicado brevemente

Un audit trail es una lista de eventos ordenada cronológicamente. Típicamente, cada evento contiene los siguientes campos:

  • Timestamp: ¿Cuándo sucedió?
  • Actor: ¿Quién o qué desencadenó la acción?
  • Action: ¿Qué se hizo?
  • Resource: ¿Sobre qué objeto se trabajó?
  • Status: ¿La acción fue exitosa o falló?
  • Metadata: Detalles adicionales como dirección IP, ID de solicitud o parámetros

A diferencia de los logs de errores puros, el audit-logging registra específicamente eventos comerciales o de seguridad. No está pensado solo para desarrolladores, sino también para administradores y auditores.

Una entrada de log típica en JSON se ve así:

{
  "timestamp": "2025-08-24T14:30:00Z",
  "actor": "agent-007",
  "action": "file_delete",
  "resource": "/data/tmp/ergebnis.txt",
  "status": "success",
  "metadata": {
    "user": "anna",
    "ip": "192.168.1.42"
  }
}

Esta estructura es legible por máquinas y se puede analizar fácilmente.

Para quién es este artículo

El artículo está pensado para principiantes que construyen u operan sus propios agentes de IA. Necesitas conocimientos básicos de Python y deberías estar familiarizado con cómo funcionan los archivos y JSON. Si usas un sistema Linux como Ubuntu, encontrarás fundamentos relevantes en Ubuntu.

Este texto es para ti si:

  • Desarrollas agentes de IA que acceden a herramientas
  • Quieres hacer demostrables las acciones de tu agente
  • Deseas almacenar logs de forma segura a largo plazo
  • Debes cumplir con requisitos de compliance o seguridad

Términos importantes

TérminoExplicación
Audit TrailUn registro completo y sin lagunas de eventos relevantes para la seguridad.
LogUna entrada de protocolo individual.
TimestampMomento en que ocurrió un evento.
ActorEl desencadenante de una acción, por ejemplo un usuario o un agente.
ActionLa acción realizada, por ejemplo file_read o api_call.
ResourceEl objeto afectado, por ejemplo un archivo o un endpoint de API.
RotationArchivo y eliminación periódica de archivos de log antiguos.
RetentionPeríodo de retención para logs.
ComplianceCumplimiento de regulaciones y estándares.
Immutable LogUn log que no se puede alterar posteriormente.

Un audit log simple en Python

Python incluye un módulo de logging integrado. Para audit logs, sin embargo, deberías usar tu propia estructura que sea legible por máquinas. Aquí hay un ejemplo mínimo:

import json
import datetime
import pathlib

LOG_FILE = pathlib.Path("/var/log/ki-agent/audit.log")
LOG_FILE.parent.mkdir(parents=True, exist_ok=True)

def audit_log(actor, action, resource, status, metadata=None):
    entry = {
        "timestamp": datetime.datetime.now(datetime.timezone.utc).isoformat(),
        "actor": actor,
        "action": action,
        "resource": resource,
        "status": status,
        "metadata": metadata or {}
    }
    with LOG_FILE.open("a", encoding="utf-8") as f:
        f.write(json.dumps(entry) + "\n")

# Llamada de ejemplo
audit_log(
    actor="agent-007",
    action="file_read",
    resource="/data/dokumente/bericht.pdf",
    status="success",
    metadata={"user": "anna"}
)

La ventaja de esta variante es que es simple y funciona sin dependencias externas. La desventaja es que el archivo de log está en texto plano y es legible y modificable. Para configuraciones productivas deberías añadir pasos adicionales.

Almacenamiento y rotación

Los logs pueden crecer rápidamente, especialmente si un agente ejecuta muchas acciones por minuto. Por eso debes rotar regularmente. Python ofrece el módulo logging.handlers.RotatingFileHandler:

import logging
import json
import datetime

class JsonFormatter(logging.Formatter):
    def format(self, record):
        data = {
            "timestamp": datetime.datetime.now(datetime.timezone.utc).isoformat(),
            "level": record.levelname,
            "message": record.getMessage(),
            "extra": record.__dict__.get("audit", {})
        }
        return json.dumps(data)

logger = logging.getLogger("audit")
handler = logging.handlers.RotatingFileHandler(
    "/var/log/ki-agent/audit.log",
    maxBytes=10_000_000,
    backupCount=5
)
handler.setFormatter(JsonFormatter())
logger.addHandler(handler)
logger.setLevel(logging.INFO)

logger.info("file_read", extra={"audit": {"actor": "agent-007", "resource": "/data/dokumente/bericht.pdf"}})

Este handler crea nuevos archivos una vez que el archivo actual alcanza 10 megabytes. Los archivos antiguos se archivan. Los logs que ya se han escrito deberías almacenarlos en un servidor separado o en un medio de escritura única para dificultar la manipulación.

Análisis de audit logs

Los logs solo son útiles si los analizas. Algunos métodos comunes son:

  • Buscar patrones de errores con grep o jq
  • Configurar un log collector como Promtail, Fluent Bit o Filebeat
  • Visualizar en Grafana o una herramienta SIEM
  • Alertas automáticas ante acciones sospechosas

Con la herramienta de línea de comandos jq puedes hacer análisis simples:

jq 'select(.action == "file_delete")' /var/log/ki-agent/audit.log

Este comando muestra todos los operaciones de eliminación. Para entornos productivos se recomienda un sistema SIEM que reconozca patrones automáticamente y envíe alarmas.

Cumplimiento y retención

Muchas industrias tienen requisitos sobre cómo conservar los registros. En Alemania, por ejemplo, el GDPR puede aplicarse cuando se procesan datos personales. ISO 27001 también exige protocolos auditables.

Puntos clave para el cumplimiento:

  • Define una política de retención clara.
  • Almacena logs en un lugar seguro e inmutable.
  • Asegúrate de que solo personas autorizadas tengan acceso.
  • Documenta qué eventos se registran.
  • Prueba regularmente la recuperación de logs antiguos.

Si registras datos personales, respeta el GDPR. Registra solo lo necesario. La pseudonimización ayuda a reconciliar la privacidad con la capacidad de auditoría.

Audit-Logging y aprobación humana

El Audit-Logging se vuelve especialmente poderoso cuando lo combinas con aprobación humana. Cada aprobación se registra como un evento independiente. De esta forma, siempre puedes demostrar que una persona autorizó una acción crítica.

Un ejemplo de entrada:

{
  "timestamp": "2025-08-24T14:35:00Z",
  "actor": "anna",
  "action": "approve",
  "resource": "agent-007:file_delete",
  "status": "approved",
  "metadata": {
    "reason": "bereinigung temporaerer dateien"
  }
}

Esta combinación crea confianza y te ayuda a identificar errores. Si un agente hace algo incorrecto a pesar de la aprobación, el log muestra exactamente quién y cuándo consintió.

Trampa comunes

  1. Logs sin estructura: Los logs de texto plano son difíciles de analizar. Usa JSON u otro formato estructurado.
  2. Sin zona horaria: Las marcas de tiempo sin zona horaria generan confusión al analizar. Usa UTC y un formato uniforme.
  3. Contexto insuficiente: Un log sin ID de solicitud o usuario hace difícil rastrear operaciones.
  4. Logs en el mismo servidor que el agente: Si el agente se ve comprometido, puede eliminar los logs. Almacénalos externamente.
  5. Sin rotación: Los archivos de log crecen indefinidamente y llenan el disco.
  6. Sin control de acceso: No todos los usuarios deberían poder leer todos los logs. Restringe los permisos.
  7. Datos sensibles en los logs: Evita contraseñas, claves API o datos personales en las entradas de log.
  8. Sin análisis: Los logs nunca revisados no ayudan a la seguridad.

Hardware, costos y seguridad

Audit-Logging requiere casi ningún hardware adicional. Los logs en sí ocupan espacio de almacenamiento. Un sistema moderno con algunos gigabytes libres es suficiente para configuraciones pequeñas. Para retención a largo plazo, considera un servidor de logs centralizado u almacenamiento de objetos.

Los costos provienen principalmente del almacenamiento y copias de seguridad. Herramientas open-source como Grafana Loki, Elasticsearch o Graylog pueden ejecutarse de forma gratuita. Las soluciones en la nube simplifican la operación, pero tienen costo.

Desde el punto de vista de seguridad, trata los logs como datos sensibles. Quien controla los logs puede ocultar ataques. Almacénalos en una ubicación separada y limita el acceso. En un sistema Linux, puedes establecer permisos para que solo un usuario específico pueda leer. Ubuntu Grundlagen te ayudan con los primeros pasos.

Enlaces relacionados

FAQ

¿Qué es Audit-Logging?

Audit-Logging es el registro deliberado de eventos relevantes para la seguridad para poder rastrearlos más tarde.

¿Cuál es la diferencia entre Audit-Log y Error-Log?

Un Error-Log registra problemas técnicos. Un Audit-Log documenta deliberadamente acciones, identidades y recursos.

¿Por qué debería usar logs JSON?

JSON es legible por máquinas y se puede analizar fácilmente con herramientas como jq o sistemas SIEM.

¿Cuánto tiempo debería conservar los logs?

Depende de tus requisitos. A menudo, 30 a 90 días son suficientes. Para cumplimiento, puede ser necesario un año o más.

¿Puedo generar Audit-Logs con Python?

Sí. Python es excelente para esto. El módulo de Logging integrado y JSON son suficientes para comenzar.

¿Qué es un Immutable Log?

Un Immutable Log no se puede modificar ni eliminar después de su creación. Esto dificulta la manipulación.

¿Debería almacenar logs en el mismo servidor?

No. Para configuraciones productivas, envía los logs a un servidor separado u almacenamiento de objetos. Si no, un agente comprometido puede borrar las pruebas.

¿Qué es Log Rotation?

Log Rotation cambia periódicamente el archivo de log activo y archiva archivos antiguos. Así previene que un solo archivo crezca indefinidamente.

¿Qué información debería incluir en un Audit-Log?

Como mínimo, Timestamp, Actor, Action, Resource y Status. Opcional: dirección IP, ID de solicitud, versión del cliente y aprobaciones.

¿Cómo analizo los logs?

Con herramientas como jq, grep o un SIEM. Para visualizaciones gráficas, Grafana o Kibana son adecuados.

¿Puede el Audit-Logging causar problemas de privacidad?

Sí, si registras datos personales. Evita datos innecesarios y pseudonimiza cuando sea posible.

¿Qué es un SIEM?

SIEM significa Security Information and Event Management. Recopila, correlaciona y alerta sobre eventos de seguridad.

Fuentes

  1. Python Logging Documentation - https://docs.python.org/3/library/logging.html
  2. OWASP Logging Cheat Sheet - https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
  3. NIST SP 800-92 Guide to Computer Security Log Management - https://csrc.nist.gov/publications/detail/sp/800-92/final
  4. ISO 27001 Audit Logging Requirements - https://www.iso.org/standard/27001
Volver al blog
Share:

Entradas relacionadas