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.
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.
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
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
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)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
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
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)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.
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.
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.
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ón | Qué debes poseer | Cambios en el código del agente | Ve llamadas salientes a herramientas | Impacto en la latencia | Aplicación |
|---|---|---|---|---|---|
| 1 — Proxy inline | Nada | Apuntar a la URL del proxy | Sí | +5-15ms | Infraestructura |
| 2 — Verdict API (REST) | Tu servidor API | Añadir SDK scan() | Sí | +5-15ms | Código del cliente |
| 3 — Verdict API (MCP) | Tu servidor MCP | Añadir SDK scan() | Sí | +5-15ms | Código del cliente |
| 4 — Proxy frente al agente | Nada | Ninguno | No (solo entradas) | +5-15ms | Infraestructura (solo entradas) |
| 5 — Proxy sidecar | Cómputo del agente (pod/VM) | Apuntar a localhost | Sí | +2-5ms | Infraestructura |
| 6 — Post-Gateway | Config. del gateway | Ninguno | Sí (vía gateway) | +5-15ms | Infraestructura |
| 7 — Observador (auditoría) | Mecanismo de espejo | Ninguno | Sí (asíncrono) | 0ms | Ninguna (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.
| Escenario | Patrón | Cómo funciona |
|---|---|---|
| Tu servidor es un gateway hacia un upstream diferente | Passthrough (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ón | Aplicado por | Mecanismo de bloqueo | Garantía |
|---|---|---|---|
| 1 — Proxy inline | ShieldAgent | El proxy descarta / rechaza la solicitud | Infraestructura — no puede eludirse |
| 2 — Verdict API (REST) | Tu código de servidor | Tu manejador lanza o devuelve error | A nivel de código — depende de la implementación |
| 3 — Verdict API (MCP) | Tu código de servidor | Tu manejador de herramienta rechaza | A nivel de código — depende de la implementación |
| 4 — Proxy frente al agente | ShieldAgent | El proxy descarta el prompt entrante | Infraestructura (solo entradas) |
| 5 — Proxy sidecar | ShieldAgent | El sidecar descarta / rechaza la solicitud | Infraestructura — aislamiento por agente |
| 6 — Post-Gateway | ShieldAgent | El proxy descarta / rechaza después del gateway | Infraestructura — para tráfico por gateway |
| 7 — Observador | Ninguna | Sin bloqueo — solo detección | Sin garantía de aplicación |
Matriz de responsabilidades
| Responsabilidad | Posiciones 1 / 5 / 6 (Proxy) | Posiciones 2 y 3 (Verdict API) | Posición 7 (Observador) |
|---|---|---|---|
| Detección de amenazas | ShieldAgent | ShieldAgent | ShieldAgent |
| Evaluación de políticas | ShieldAgent | ShieldAgent | ShieldAgent |
| Puntuación de riesgo | ShieldAgent | ShieldAgent | ShieldAgent |
| Registro de auditoría | ShieldAgent | ShieldAgent | ShieldAgent |
| Documentación de cumplimiento (Anexo IV) | ShieldAgent | ShieldAgent | ShieldAgent |
| Bloqueo de amenazas | ShieldAgent — garantía de infraestructura | Cliente — a nivel de código, verificado vía confirmExecution() | No disponible — solo detección |
| Verificación de aplicación | Automática (el proxy bloquea antes de reenviar) | Opcional — llama a confirmExecution() para cerrar el ciclo de auditoría | N/A |
Impacto en los marcos de cumplimiento
| Marco | Posiciones 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.
Verificación JWT, resolución de inquilino y agente, propagación del indicador de modo sombra.
Búsqueda de puntuación de riesgo en caché — establece un multiplicador de límite de tasa por agente para la siguiente etapa.
Aplicación de ventana deslizante por inquilino + techo global. Respaldado por Redis en todas las réplicas.
Bloquea las solicitudes de descubrimiento de herramientas si el agente no está en la lista approved_tools (OWASP MCP #6).
Evaluación de reglas compiladas (allow / deny / human_review). El modo sombra registra pero nunca bloquea.
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.
Bloqueo basado en niveles cuando la puntuación de riesgo del agente supera los umbrales configurados.
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.
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ía | Aislamiento | Coste | Ideal para |
|---|---|---|---|
| Compartido (SaaS) | Lógico | Menor | Despliegues 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.
| Componente | Puerto | Rol |
|---|---|---|
| Proxy | — | El 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 API | — | API REST Fastify. CRUD para inquilinos, agentes, políticas, auditoría, riesgo e incidentes. Eventos en tiempo real vía WebSocket. |
| Dashboard | — | Panel de seguridad Next.js. Monitoreo en tiempo real, gestión de políticas, exploración del registro de auditoría, registro de agentes. |
| MCP Scanner | — | Herramienta CLI que inspecciona servidores MCP en busca de riesgos de cadena de suministro, deriva del manifiesto de herramientas y vulnerabilidades de dependencias. |
| ML Classifier | — | Sidecar Python/FastAPI. Ejecuta un modelo ML para la detección de inyección de prompts. Falla elegantemente cuando no está disponible. |
| Audit Trail | — | Paquete compartido. Escritor por lotes con cadena de hash a prueba de manipulaciones. Admite adaptadores de exportación webhook y syslog. |
| Risk Engine | — | Paquete compartido. Puntuador de riesgo multi-factor, detección de anomalías de comportamiento, análisis de tendencias y alertas. |
| Policy Engine | — | Paquete 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.
| Transporte | Protocolo | Caso de uso |
|---|---|---|
| HTTP/SSE | HTTP streaming | Agentes de red, despliegues con múltiples réplicas |
| stdio | Standard I/O | El agente lanza el proxy como proceso hijo (desarrollo local, apps de escritorio) |
| REST API proxy | HTTP methods | Pass-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.
Proxy · Management API · PostgreSQL
Dashboard · Redis (limitación de tasa + afinidad de sesión)
ML Classifier (detección de inyección mejorada) · MCP Scanner (auditoría de cadena de suministro) · Grafana + Prometheus (observabilidad)