El problema fundamental que esta arquitectura aborda es la incapacidad de los SOC tradicionales para escalar la creación y mantenimiento de reglas de detección de amenazas al ritmo de la evolución del panorama de amenazas, especialmente en entornos de alta telemetría como los núcleos 5G. Los enfoques monolíticos de LLM y la integración superficial de GenAI en SIEM/SOAR existentes son insuficientes debido a limitaciones de contexto, no determinismo y falta de un cambio estructural en la operativa.

La tesis central es que un sistema multi-agente, donde agentes especializados colaboran a través de protocolos abiertos y la inferencia de LLM se utiliza de forma selectiva y controlada, puede transformar la eficiencia de un SOC. Esto se logra al automatizar la síntesis de reglas de detección y la propuesta de acciones de respuesta, manteniendo al mismo tiempo un control estricto sobre la seguridad y la intervención humana cuando sea necesario. La clave es tratar la seguridad como un problema de ingeniería de sistemas distribuidos, donde la modularidad, la resiliencia y la observabilidad son primordiales.

Arquitectura del Sistema

La arquitectura propuesta se basa en un sistema multi-agente coordinado por el protocolo Agent-to-Agent (A2A) y que interactúa con el entorno a través del Model Context Protocol (MCP). Los agentes son especializados y de 'contrato de una página', con responsabilidades como clasificación de eventos (Triage), síntesis de reglas de detección (Detection Engineering), propuesta de acciones de respuesta (Response) y recuperación de contexto ambiental (Context).

Un componente crítico es el agente Reviewer, que actúa como un 'safety floor'. Este agente valida todas las propuestas de acción externa (despliegue de reglas, ejecución de contención, modificación de políticas de firewall) contra políticas de seguridad codificadas y versionadas, implementadas con Open Policy Agent (OPA). OPA evalúa el riesgo operacional (blast radius, confianza, reversibilidad, escalada humana), mientras que Kyverno, actuando en tiempo de admisión de Kubernetes, valida la expresión de la acción en el sustrato del clúster (fuentes de imagen confiables, identidad de carga de trabajo, restricciones de recursos). La inferencia de LLM se 'gated' por un modelo de detección de anomalías Isolation Forest, que pre-filtra la telemetría cruda y solo envía eventos genuinamente novedosos a los agentes LLM-driven, reduciendo costos y latencia. La observabilidad se garantiza mediante la propagación de un trace_id a través de las interacciones A2A y la resolución de referencias de contexto a través de URIs de MCP.

Flujo de Detección y Respuesta de Amenazas

  1. 1 Telemetría Cruda Ingesta de datos de seguridad del core 5G.
  2. 2 Isolation Forest Pre-filtrado de anomalías; solo eventos novedosos pasan a LLM.
  3. 3 Agente Triage Clasifica anomalías, consulta MCP para contexto, determina novedad.
  4. 4 Agente Detection Eng. Sintetiza reglas de detección para patrones novedosos (vía A2A).
  5. 5 Agente Response Propone acciones de contención/mitigación (vía A2A).
  6. 6 Agente Reviewer Evalúa propuestas contra políticas de seguridad (OPA).
  7. 7 Kyverno (Admisión K8s) Valida objetos Kubernetes generados contra políticas de clúster.
  8. 8 Despliegue/Ejecución Si aprueba, se despliega regla o ejecuta acción. Si falla, escala a humano.
CapaTecnologíaJustificación
orchestration Kubernetes Sustrato para el despliegue y gestión de los agentes y servicios subyacentes.
security Open Policy Agent (OPA) Motor de políticas para el agente Reviewer, evaluando el riesgo operacional de las acciones propuestas. Políticas definidas en Rego, separando lógica de decisión de umbrales de riesgo.
security Kyverno Controlador de admisión de Kubernetes para validar objetos del clúster, aplicando políticas de seguridad a nivel de plataforma. Políticas de validación de imágenes y NetworkPolicy.
data-processing Isolation Forest Algoritmo de detección de anomalías no supervisado para pre-filtrar la telemetría de seguridad antes de la inferencia de LLM. Reentrenamiento semanal, umbral configurable por el agente Reviewer.
messaging Agent-to-Agent (A2A) Protocol Protocolo abierto para la coordinación y comunicación entre agentes especializados. vs Framework-specific buses Propagación de `trace_id`, referencias de contexto vía MCP URIs.
messaging Model Context Protocol (MCP) Protocolo abierto para la integración de agentes con el entorno subyacente, proporcionando una interfaz estable y validada por esquema. Aplicación de autorización basada en identidad de carga de trabajo (SPIFFE).
networking Cilium Parte del sustrato CNCF para la gestión de red y seguridad a nivel de mesh.
security cert-manager Parte del sustrato CNCF para la gestión de certificados.
orchestration Argo CD Parte del sustrato CNCF para la entrega continua declarativa.
observability Prometheus Parte del sustrato CNCF para la monitorización y alerta.

Trade-offs

Ganancias
  • Reducción de MTTD y MTTR
  • Generación autónoma de reglas de detección
  • ▲▲ Compresión del tiempo humano para crear reglas
  • Escalabilidad de la cobertura de amenazas
Costes
  • Complejidad de la ingeniería de políticas (OPA)
  • Necesidad de madurez de ingeniería para mantener políticas del revisor
  • Costo inicial de desarrollo e integración de un sistema multi-agente
package reviewer.policy

default decision := {"result": "escalate", "reason": "no matching rule"}

decision := {"result": "auto_reject", "reason": "configuration change is not clearly validated"} if {
  input.action.type == "modify_config"
  input.action.config_validated == false
} else := {"result": "escalate", "reason": msg} if {
  sensitive_elements[input.asset.element_id]
  msg := sprintf("%s is a sensitive network element and always escalates", [input.asset.element_id])
} else := {"result": "auto_reject", "reason": msg} if {
  input.action.blast_radius_pct > data.limits[input.action.type].max_blast_radius_pct
  msg := sprintf("blast radius %.2f exceeds limit for %s", [input.action.blast_radius_pct, input.action.type])
} else := {"result": "auto_execute"} if {
  config_ok
  not sensitive_elements[input.asset.element_id]
  input.action.blast_radius_pct <= data.limits[input.action.type].max_blast_radius_pct
  input.action.confidence >= data.limits[input.action.type].min_confidence
  input.action.reversible == true
}

config_ok if {
  input.action.type != "modify_config"
}

config_ok if {
  input.action.type == "modify_config"
  input.action.config_validated == true
}

sensitive_elements := {"upf-fr-paris-04", "sepp-fr-edge-01"}
Ejemplo de política OPA que define las condiciones para auto-ejecutar, auto-rechazar o escalar una acción basada en el tipo de acción, blast radius, confianza y reversibilidad.
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: trusted-registry
spec:
  validationFailureAction: Enforce
  rules:
    - name: verify-registry
      match:
        any:
          - resources:
              kinds: ["Deployment"]
      validate:
        message: "Images must come from the internal trusted registry"
        pattern:
          spec:
            template:
              spec:
                containers:
                  - image: "registry.internal/*"
Política de Kyverno que rechaza cualquier despliegue que intente usar una imagen de un registro no confiable, asegurando que solo se utilicen imágenes del registro interno.
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: block-permissive-network-policy
spec:
  validationFailureAction: Enforce
  rules:
    - name: reject-allow-all-ingress
      match:
        any:
          - resources:
              kinds: ["NetworkPolicy"]
              namespaces: ["soc-agents"]
      validate:
        message: "NetworkPolicy must not allow ingress from all sources"
        deny:
          conditions:
            any:
              - key: "{{ request.object.spec.ingress[].from[] | length(@) }}"
                operator: Equals
                value: 0
Política de Kyverno que rechaza NetworkPolicy que permiten el ingreso desde todas las fuentes, previniendo configuraciones de red excesivamente permisivas.
{
  "task_id": "tsk_2026-03-24_8c1b9f",
  "from_agent": "triage.v3",
  "to_agent": "detection_engineering.v2",
  "intent": "synthesize_detection",
  "trace_id": "01HSMJ8...",
  "context_refs": [
    "mcp://asset-inventory/upf/upf-fr-paris-04",
    "mcp://detection-index/recent?window=14d"
  ],
  "payload": {
    "observation": { "...telemetry fingerprint..." },
    "novelty_score": 0.92,
    "deadline_ms": 90000
  },
  "constraints": {
    "rule_language": "sigma",
    "must_include_test_corpus": true,
    "max_false_positive_rate": 0.005
  }
}
Ejemplo de la estructura de un mensaje de tarea A2A entre agentes, mostrando el ID de tarea, agentes de origen/destino, intención, ID de traza, referencias de contexto MCP y payload.

Fundamentos Teóricos

Esta arquitectura se conecta con principios fundamentales de la computación distribuida y la seguridad. La idea de agentes especializados que interactúan a través de protocolos definidos remite a los sistemas multi-agente estudiados en inteligencia artificial desde hace décadas, buscando la emergencia de comportamientos complejos a partir de interacciones simples. La aplicación de 'policy-as-code' con OPA y Kyverno se alinea con el concepto de 'declarative security' y 'shift-left security', donde las políticas se definen y validan en etapas tempranas del ciclo de vida del desarrollo y despliegue, un principio explorado en trabajos sobre seguridad de sistemas operativos y redes.

La utilización de Isolation Forest para la detección de anomalías se basa en algoritmos de aprendizaje no supervisado, un campo activo de investigación en machine learning. El concepto de 'human-in-the-loop' como un estado terminal de primera clase refleja la necesidad de combinar la eficiencia de la automatización con la capacidad de juicio y la responsabilidad humana, un tema recurrente en la investigación sobre sistemas autónomos y críticos. La gestión de la consistencia y la durabilidad de los protocolos A2A y MCP en un entorno de larga vida útil se relaciona con los desafíos de interoperabilidad y evolución de sistemas distribuidos a gran escala, donde la estandarización de interfaces es clave, como se ha visto en la evolución de protocolos de red y sistemas de mensajería.