Skip to main content
Sign in →

Visión general de la arquitectura

ShieldAgent aplica seguridad en el límite entre los agentes de IA y las herramientas que utilizan. La ubicación exacta de ese límite en tu stack es flexible — despliega el proxy inline entre el agente y el upstream, o usa la Verdict API del SDK para escanear solicitudes desde dentro del código de tu propio servidor antes de ejecutarlas.

Dónde posicionar ShieldAgent

ShieldAgent puede insertarse en varios puntos de la cadena de llamadas de agente a herramienta. La posición correcta depende de lo que controles en tu stack y el nivel de visibilidad que necesitas. Todas las posiciones usan el mismo pipeline de seguridad multi-etapa; solo el método de integración difiere. Las posiciones 2 y 3 usan la Verdict API del SDK — tu código envía los payloads de solicitud a ShieldAgent para escanearlos y aplica el veredicto devuelto.

Recomendado

Posición 1 — Proxy entre el agente y el MCP

El agente apunta su cliente MCP al proxy de ShieldAgent en lugar del servidor upstream directamente. Sin cambios de código en el agente ni en el servidor MCP. El proxy intercepta cada llamada a herramienta, ejecuta el pipeline de seguridad completo y reenvía las solicitudes aprobadas. Este es el modelo de despliegue principal y el que te da visibilidad completa de todas las llamadas a herramientas.

Ideal cuando: no posees el agente ni el servidor MCP, o quieres un despliegue sin intervención. La segmentación de red debe garantizar que los agentes no puedan eludir el proxy.

Verdict API

Posición 2 — Verdict API en tu propia API

Si tus agentes llaman a una API REST que tú posees y operas, usa el SDK de ShieldAgent para escanear cada solicitud entrante antes de ejecutarla. Tu servidor llama a client.scan() con el payload de la solicitud. ShieldAgent ejecuta el pipeline de seguridad completo multi-etapa y devuelve un veredicto (allow / block / human_review). Tu código aplica el veredicto — ejecuta si está permitido, rechaza si está bloqueado. El pipeline de seguridad se ejecuta en el proxy de ShieldAgent, no en proceso.

Ideal cuando: posees la capa de API que llaman tus agentes y quieres añadir escaneo de seguridad sin cambiar el flujo de tráfico. Tu código sigue en control — ShieldAgent escanea y devuelve un veredicto, tú lo aplicas.

TypeScript

your-api-handler.ts
import { ShieldAgentClient } from '@shieldagent/sdk';

const client = new ShieldAgentClient({
  baseUrl: 'https://proxy.shieldagent.io',
  apiKey: '{your-api-key}',
});

async function handleAgentRequest(agentId: string, method: string, path: string, body: unknown) {
  const verdict = await client.scan({
    tenantId: '{your-tenant-id}',
    agentId,
    toolName: `api:${method}:${path}`,
    params: { method, path, body },
    context: { transport: 'rest' },
  });

  if (verdict.action === 'block') {
    throw new Error(`Request blocked by ShieldAgent: ${verdict.reason}`);
  }

  if (verdict.action === 'human_review') {
    return { status: 'pending_review', reviewId: verdict.reviewId };
  }

  return executeRequest(method, path, body);
}

Python

your_api_handler.py
from shieldagent import ShieldAgentClient

client = ShieldAgentClient(
    base_url="https://proxy.shieldagent.io",
    api_key="{your-api-key}",
)

async def handle_agent_request(agent_id: str, method: str, path: str, body: dict):
    verdict = await client.scan(
        tenant_id="{your-tenant-id}",
        agent_id=agent_id,
        tool_name=f"api:{method}:{path}",
        params={"method": method, "path": path, "body": body},
        context={"transport": "rest"},
    )

    if verdict.action == "block":
        raise HTTPException(status_code=403, detail=verdict.reason)

    if verdict.action == "human_review":
        return {"status": "pending_review", "review_id": verdict.review_id}

    return execute_request(method, path, body)
Verdict API

Posición 3 — Verdict API en tu propio servidor MCP

Si operas un servidor MCP al que se conectan los agentes, añade una llamada a client.scan() antes de cada manejador de herramienta. Cuando un agente solicita una herramienta, tu servidor envía el nombre de la herramienta y los argumentos a ShieldAgent para escanearlos. ShieldAgent devuelve un veredicto — tu código ejecuta la herramienta solo si está permitido. Esto te da visibilidad profunda y aplicación de políticas en el punto donde se definen las herramientas, manteniendo ShieldAgent centralizado.

Ideal cuando: construyes y mantienes el servidor MCP y quieres aplicación de seguridad en la capa de definición de herramientas. Tu servidor sigue en control — ShieldAgent escanea, tú aplicas. Contexto más rico para la evaluación de políticas que el posicionamiento proxy externo.

TypeScript

your-mcp-server.ts
import { ShieldAgentClient } from '@shieldagent/sdk';

const client = new ShieldAgentClient({
  baseUrl: 'https://proxy.shieldagent.io',
  apiKey: '{your-api-key}',
});

async function handleToolCall(toolName: string, params: unknown, clientName?: string) {
  const verdict = await client.scan({
    tenantId: '{your-tenant-id}',
    clientHint: clientName,
    toolName,
    params,
    context: { transport: 'mcp' },
  });

  if (verdict.action === 'block') {
    throw new Error(`Tool blocked by ShieldAgent: ${verdict.reason}`);
  }

  if (verdict.action === 'human_review') {
    return { status: 'pending_review', reviewId: verdict.reviewId };
  }

  return executeToolHandler(toolName, params);
}

Python

your_mcp_server.py
from shieldagent import ShieldAgentClient

client = ShieldAgentClient(
    base_url="https://proxy.shieldagent.io",
    api_key="{your-api-key}",
)

async def handle_tool_call(tool_name: str, params: dict, client_name: str | None = None):
    verdict = await client.scan(
        tenant_id="{your-tenant-id}",
        client_hint=client_name,
        tool_name=tool_name,
        params=params,
        context={"transport": "mcp"},
    )

    if verdict.action == "block":
        raise MCPError(f"Tool blocked by ShieldAgent: {verdict.reason}")

    if verdict.action == "human_review":
        return {"status": "pending_review", "review_id": verdict.review_id}

    return execute_tool(tool_name, params)
Limitado

Posición 4 — Proxy frente al agente

El proxy se sitúa en el ingreso del propio agente — entre el caller y el proceso del agente. Esto es útil para inspeccionar y filtrar las entradas que dirigen al agente (prompts de usuario, mensajes de orquestación, contexto inyectado). Sin embargo, no puede observar las llamadas MCP salientes que el agente realiza a los servidores upstream, por lo que la aplicación a nivel de herramienta no es posible en esta posición por sí sola. Úsalo como complemento a las Posiciones 1–3, no como reemplazo.

Ideal cuando: se combina con la Posición 1 o 2 para cubrir tanto la inspección de prompts entrantes como la aplicación de llamadas a herramientas salientes. No se recomienda como despliegue independiente — la ruta de llamadas a herramientas salientes queda sin protección.

Kubernetes

Posición 5 — Proxy sidecar

ShieldAgent se ejecuta como contenedor sidecar junto a cada agente (o junto a tu servidor MCP/API). El agente envía solicitudes al sidecar en lugar de la URL upstream directamente. Sin salto de red adicional — el tráfico permanece en localhost. Mismo pipeline completo que la Posición 1, pero co-ubicado para menor latencia y aislamiento por agente.

Ideal cuando: entornos Kubernetes, requisitos de aislamiento por agente, o arquitecturas de microservicios. También funciona como sidecar de tu servidor — co-ubica ShieldAgent junto a tu servidor MCP/API en lugar del agente para bloqueo garantizado por infraestructura sin salto de red.

Empresarial

Posición 6 — Post-Gateway

ShieldAgent se sitúa detrás de tu API gateway existente (Kong, Envoy, AWS API Gateway). El gateway gestiona la autenticación y el enrutamiento, luego reenvía el tráfico del agente a ShieldAgent para el escaneo de seguridad antes de que llegue al upstream. Sin cambios de código en el agente — el gateway enruta de forma transparente.

Ideal cuando: empresas con API gateways existentes que no pueden cambiar el enrutamiento del agente. Limitación: el tráfico que evita el gateway es invisible para ShieldAgent.

Solo auditoría

Posición 7 — Observador (solo auditoría)

El tráfico fluye directamente del agente al upstream sin intercepción. Una copia de cada solicitud/respuesta se envía a ShieldAgent de forma asíncrona para auditoría y detección. ShieldAgent no puede bloquear amenazas en este modo — proporciona detección, puntuación de riesgo y evidencia de cumplimiento sin aplicación.

Ideal cuando: evaluación inicial, auditoría de cumplimiento, o entornos heredados donde la inserción inline aún no es posible. Sin impacto en la latencia.

¿Qué posición debo usar?

PosiciónQué debes poseerCambios en el código del agenteVe llamadas salientes a herramientasImpacto en la latenciaAplicación
1 — Proxy inlineNadaApuntar a la URL del proxy+5-15msInfraestructura
2 — Verdict API (REST)Tu servidor APIAñadir SDK scan()+5-15msCódigo del cliente
3 — Verdict API (MCP)Tu servidor MCPAñadir SDK scan()+5-15msCódigo del cliente
4 — Proxy frente al agenteNadaNingunoNo (solo entradas)+5-15msInfraestructura (solo entradas)
5 — Proxy sidecarCómputo del agente (pod/VM)Apuntar a localhost+2-5msInfraestructura
6 — Post-GatewayConfig. del gatewayNingunoSí (vía gateway)+5-15msInfraestructura
7 — Observador (auditoría)Mecanismo de espejoNingunoSí (asíncrono)0msNinguna (solo detección)

Las posiciones se pueden combinar. Por ejemplo: Posición 4 (proxy frente al agente) + Posición 1 (proxy entre el agente y el MCP) te da cobertura completa tanto de la ruta de entrada como de la ruta de llamadas a herramientas salientes.

Passthrough vs. Verdict API

Existen dos patrones de integración del SDK para clientes que poseen su propio servidor. Elige según si ShieldAgent necesita reenviar el tráfico a un upstream separado.

EscenarioPatrónCómo funciona
Tu servidor es un gateway hacia un upstream diferentePassthrough (apiProxy / mcpProxy)El SDK envía la solicitud al proxy de ShieldAgent. El proxy escanea, luego reenvía al upstream real y devuelve la respuesta.
Tu servidor ES el proveedor de herramientas (sin upstream separado)Verdict API (scan)El SDK envía el payload a ShieldAgent. ShieldAgent devuelve un veredicto (allow/block/human_review). Tu servidor ejecuta o rechaza localmente.

Cobertura completa: composición de posiciones

Las posiciones de despliegue no son mutuamente excluyentes. Para defensa en profundidad, despliega múltiples instancias de ShieldAgent cubriendo diferentes direcciones de tráfico.

Mismo binario de proxy, diferente configuración. Ambas instancias comparten el mismo inquilino, políticas y registro de auditoría. La Posición 4 captura entradas maliciosas antes de que el agente las procese; la Posición 1 o 5 captura llamadas a herramientas salientes peligrosas.

Modelo de aplicación

Todas las posiciones de despliegue ejecutan el mismo pipeline de seguridad multi-etapa — detección, evaluación de políticas, puntuación de riesgo y auditoría siempre son gestionadas por ShieldAgent. Lo que difiere es quién aplica el veredicto. La Posición 1 proporciona bloqueo garantizado por infraestructura: ShieldAgent se sitúa inline y detiene la solicitud antes de que llegue al upstream. Las Posiciones 2 y 3 usan la Verdict API: ShieldAgent detecta amenazas y devuelve un veredicto; el código de tu servidor lo aplica. Este modelo de responsabilidad compartida es estándar en la industria de seguridad — análogo al modo Count vs. Block de AWS WAF o al modo Detect vs. Prevent de CrowdStrike.

Comparación de aplicación

PosiciónAplicado porMecanismo de bloqueoGarantía
1 — Proxy inlineShieldAgentEl proxy descarta / rechaza la solicitudInfraestructura — no puede eludirse
2 — Verdict API (REST)Tu código de servidorTu manejador lanza o devuelve errorA nivel de código — depende de la implementación
3 — Verdict API (MCP)Tu código de servidorTu manejador de herramienta rechazaA nivel de código — depende de la implementación
4 — Proxy frente al agenteShieldAgentEl proxy descarta el prompt entranteInfraestructura (solo entradas)
5 — Proxy sidecarShieldAgentEl sidecar descarta / rechaza la solicitudInfraestructura — aislamiento por agente
6 — Post-GatewayShieldAgentEl proxy descarta / rechaza después del gatewayInfraestructura — para tráfico por gateway
7 — ObservadorNingunaSin bloqueo — solo detecciónSin garantía de aplicación

Matriz de responsabilidades

ResponsabilidadPosiciones 1 / 5 / 6 (Proxy)Posiciones 2 y 3 (Verdict API)Posición 7 (Observador)
Detección de amenazasShieldAgentShieldAgentShieldAgent
Evaluación de políticasShieldAgentShieldAgentShieldAgent
Puntuación de riesgoShieldAgentShieldAgentShieldAgent
Registro de auditoríaShieldAgentShieldAgentShieldAgent
Documentación de cumplimiento (Anexo IV)ShieldAgentShieldAgentShieldAgent
Bloqueo de amenazasShieldAgent — garantía de infraestructuraCliente — a nivel de código, verificado vía confirmExecution()No disponible — solo detección
Verificación de aplicaciónAutomática (el proxy bloquea antes de reenviar)Opcional — llama a confirmExecution() para cerrar el ciclo de auditoríaN/A

Impacto en los marcos de cumplimiento

MarcoPosiciones 1 / 5 / 6 (Proxy)Posiciones 2 y 3 (Verdict API)Posición 7 (Observador)
SOC 2 CC6.1 (Controles de acceso lógico)ShieldAgent es el control de acceso lógico completo.ShieldAgent proporciona detección + auditoría. Tu código de aplicación forma parte del control combinado evaluado por los auditores.Solo detección y auditoría. No satisface los requisitos de control de acceso lógico por sí solo.
ISO 42001 A.6.2.6 (Supervisión del sistema de IA)Totalmente conforme.Totalmente conforme — la supervisión se proporciona independientemente de la topología de aplicación.Totalmente conforme — se proporcionan supervisión y auditoría.
Ley de IA de la UE Art. 9 (Gestión de riesgos)ShieldAgent identifica, analiza, evalúa y mitiga amenazas.ShieldAgent identifica, analiza y evalúa. Tú mitiga aplicando los veredictos. Ambas partes deben documentarse en el Anexo IV.Solo identifica y analiza. No mitiga — no satisface los requisitos de bloqueo para sistemas de alto riesgo.
Ley de IA de la UE Art. 14 (Supervisión humana)Revisión humana a través del panel de ShieldAgent.Revisión humana a través del panel + tu decisión explícita de aplicación tras recibir un veredicto human_review.Revisión humana a través del panel (solo orientativa — sin mecanismo de aplicación).
Ley de IA de la UE Anexo IV (Documentación técnica)Generada automáticamente con prueba de bloqueo garantizado por infraestructura.Generada automáticamente — debe incluir tu mecanismo de aplicación y las tasas de confirmExecution() como evidencia.Generada automáticamente — debe documentar que no se proporciona aplicación y describir los controles compensatorios.

Pipeline de seguridad

Cada solicitud interceptada viaja por el mismo pipeline ordenado independientemente de la posición de despliegue que uses. Las etapas marcadas como siempre se ejecutan incondicionalmente; el resto se omiten en modo sombra o cuando no están configuradas.

1
Authsiempre

Verificación JWT, resolución de inquilino y agente, propagación del indicador de modo sombra.

2
Risk Hint

Búsqueda de puntuación de riesgo en caché — establece un multiplicador de límite de tasa por agente para la siguiente etapa.

3
Rate Limit

Aplicación de ventana deslizante por inquilino + techo global. Respaldado por Redis en todas las réplicas.

4
Tool Access

Bloquea las solicitudes de descubrimiento de herramientas si el agente no está en la lista approved_tools (OWASP MCP #6).

5
Policy

Evaluación de reglas compiladas (allow / deny / human_review). El modo sombra registra pero nunca bloquea.

6
Securitysiempre

Inyección de prompts (regex + ML), DLP (más de 20 tipos de hallazgos), deriva de herramientas, abuso de origen cruzado, agencia excesiva, suplantación de servidor.

7
Risk Enforcement

Bloqueo basado en niveles cuando la puntuación de riesgo del agente supera los umbrales configurados.

8
Auditsiempre

Evento de cadena de hash a prueba de manipulaciones escrito en PostgreSQL. Fire-and-forget, nunca bloquea la ruta de la solicitud.

Las etapas se ejecutan en secuencia. Cualquier etapa puede cortocircuitar el pipeline devolviendo una decisión de deny. La etapa de auditoría siempre se ejecuta, incluso para las solicitudes denegadas.

Topologías de infraestructura

Independientemente de la posición que uses, también eliges cómo se despliega la propia infraestructura de ShieldAgent. Estas topologías se aplican al proxy y a la API de gestión — elige según los requisitos de cumplimiento y el presupuesto operativo.

SaaS

Multi-inquilino compartido

Todos los inquilinos comparten un despliegue de proxy. El aislamiento es lógico — aplicado mediante claims JWT, seguridad a nivel de fila en PostgreSQL y límites de tasa por inquilino. Menor coste de infraestructura.

Enterprise plans include dedicated isolation options. Contact your account team for details.

TopologíaAislamientoCosteIdeal para
Compartido (SaaS)LógicoMenorDespliegues SaaS

Resumen de componentes

ShieldAgent es un monorepo con apps separadas y paquetes compartidos. Solo despliegas los componentes que necesitas — como mínimo, el proxy, la API y una base de datos PostgreSQL.

ComponentePuertoRol
ProxyEl punto de control de seguridad. Intercepta cada mensaje MCP y llamada a la API REST. Ejecuta el pipeline de seguridad multi-etapa antes de reenviar al upstream.
Management APIAPI REST Fastify. CRUD para inquilinos, agentes, políticas, auditoría, riesgo e incidentes. Eventos en tiempo real vía WebSocket.
DashboardPanel de seguridad Next.js. Monitoreo en tiempo real, gestión de políticas, exploración del registro de auditoría, registro de agentes.
MCP ScannerHerramienta CLI que inspecciona servidores MCP en busca de riesgos de cadena de suministro, deriva del manifiesto de herramientas y vulnerabilidades de dependencias.
ML ClassifierSidecar Python/FastAPI. Ejecuta un modelo ML para la detección de inyección de prompts. Falla elegantemente cuando no está disponible.
Audit TrailPaquete compartido. Escritor por lotes con cadena de hash a prueba de manipulaciones. Admite adaptadores de exportación webhook y syslog.
Risk EnginePaquete compartido. Puntuador de riesgo multi-factor, detección de anomalías de comportamiento, análisis de tendencias y alertas.
Policy EnginePaquete compartido. Compila reglas de política YAML en un índice de búsqueda optimizado. Evaluado en proceso por el proxy.

Transportes compatibles

El proxy admite transportes MCP tanto de red como basados en procesos. Elige según cómo se comunica tu framework de agentes con los servidores MCP.

TransporteProtocoloCaso de uso
HTTP/SSEHTTP streamingAgentes de red, despliegues con múltiples réplicas
stdioStandard I/OEl agente lanza el proxy como proceso hijo (desarrollo local, apps de escritorio)
REST API proxyHTTP methodsPass-through para APIs REST no MCP con aplicación de políticas

Consideraciones de escalado

Escalado horizontal del proxy

El proxy no tiene estado en la ruta de solicitudes. Añade réplicas detrás de un balanceador de carga. Redis se comparte entre réplicas para la limitación de tasa, el seguimiento de sesiones (afinidad SSE) y la caché de enrutamiento upstream. Un Kubernetes HPA orientado a CPU es la estrategia de escalado recomendada.

Afinidad de conexión SSE

Las conexiones Server-Sent Event son de larga duración. El proxy usa seguimiento de sesiones respaldado por Redis para enrutar las reconexiones a la misma réplica. Configura tu balanceador de carga con sesiones persistentes (sessionAffinity: ClientIP en Kubernetes) como alternativa.

Base de datos

PostgreSQL es la fuente de verdad para todos los datos de configuración y auditoría. Usa una base de datos gestionada (RDS, Cloud SQL, Neon) con una réplica de lectura para las consultas del registro de auditoría. El escritor por lotes de auditoría está diseñado para degradarse elegantemente bajo presión de la base de datos — almacena en memoria con una cola de mensajes fallidos.

Clasificador ML

El clasificador ML es opcional. Cuando no está disponible, el proxy recurre automáticamente a la detección de inyección solo por regex. Escala el clasificador independientemente del proxy — está limitado por CPU/GPU y se beneficia de nodos dedicados.

Servicios mínimos requeridos

No todos los componentes son necesarios para cada despliegue. Comienza con lo esencial y añade servicios según sea necesario.

Requerido

Proxy · Management API · PostgreSQL

Recomendado

Dashboard · Redis (limitación de tasa + afinidad de sesión)

Opcional

ML Classifier (detección de inyección mejorada) · MCP Scanner (auditoría de cadena de suministro) · Grafana + Prometheus (observabilidad)

Visión general de la arquitectura