Internet es enorme y no para de crecer. A mediados de 2025 alberga más de 1.250 millones de sitios web y se generan alrededor de 149 zettabytes de datos al año. Más de la mitad del tráfico hoy proviene de bots, muchos de ellos maliciosos. En este escenario, ayudar a las organizaciones a proteger su huella digital nunca fue tan importante.
En DoiT trabajamos con un cliente especializado en Attack Surface Management (ASM) para explorar cómo la IA moderna podía automatizar y escalar partes de este proceso. El objetivo: un agente capaz de navegar la web, analizar los activos expuestos del cliente e identificar posibles vulnerabilidades, todo corriendo sobre AWS.

Diseñando la solución
Diseñamos un sistema sobre Amazon Bedrock y Strands Agents, que combina modelos de razonamiento, automatización del navegador, generación aumentada por recuperación (RAG) y observabilidad completa de producción.
Los componentes principales de AWS fueron:
| Componente | Servicio | Rol |
| -------------------------- | ------------------------------------ | ---------------------------------------------------------- |
| **Foundation Model** | Amazon Bedrock con Claude | Acceso serverless a LLMs de última generación vía API unificada |
| **Agent Framework** | Strands Agents | SDK para construir y orquestar agentes |
| **Capa de Tooling** | Model Context Protocol (MCP) | Interfaz entre el agente y herramientas externas |
| **Recuperación** | Bedrock Knowledge Bases + OpenSearch | Vector store para grounding y RAG |
| **Runtime** | AWS Fargate & Bedrock AgentCore | Entornos de ejecución totalmente gestionados |
| **Observabilidad** | CloudWatch & LangFuse | Tracing, logging y métricas. |
| **Infrastructure as Code** | AWS CDK | Automatización del despliegue |
Y así encajan entre sí:

¡Veamos cada uno con más detalle en las siguientes secciones!
Modelos de razonamiento y framework de agentes
Empecemos por la base: cómo "piensa" el agente. AWS Bedrock facilita el acceso a modelos de razonamiento avanzados, como la familia Nova de Amazon, los modelos Claude de Anthropic y muchos modelos open source como Mistral, DeepSeek o Llama. Estos modelos ya soportan razonamiento estilo chain-of-thought, lo que le permite al agente generar pasos intermedios de "pensamiento" antes de llegar a conclusiones y ejecutar acciones. Esa capacidad es esencial, porque cada acción de navegación y cada observación se apoyan en la anterior.
Para la orquestación, Strands Agents ofrece una abstracción elegante sobre el agent loop: en esencia, un ciclo de razonamiento, uso de herramientas y generación de respuesta. Se integra de forma nativa con los modelos de Bedrock y aporta primitivas de nivel productivo para estado de sesión, coordinación multiagente y gestión de contexto.
Un pequeño fragmento de código del agente para que veas lo simple que Strands hace su desarrollo:
all_tools = [retrieve]
with playwright_mcp_client, filesystem_mcp_client:
playwright_tools = playwright_mcp_client.list_tools_sync()
filesystem_tools = filesystem_mcp_client.list_tools_sync()
all_tools.extend(playwright_tools + filesystem_tools)
agent = Agent(
model=bedrock_model,
system_prompt=system_prompt,
tools=all_tools,
)
Este loop le permite al agente navegar de forma autónoma, razonar sobre los hallazgos y mantener el estado entre pasos.
Actuar a través de herramientas y MCP
Pero razonar no basta: el agente tiene que interactuar con el mundo.
El tooling se habilitó mediante el Model Context Protocol (MCP), un estándar abierto que conecta los LLMs con sistemas externos. Cada servidor MCP expone un catálogo de "tools" con definiciones y esquemas claros, que el agente puede invocar dinámicamente en tiempo de ejecución.
Para nuestro caso de uso combinamos tres fuentes de herramientas:
retrieve: para consulta semántica de la base de datos de vulnerabilidades.- Playwright MCP: para navegación web e interacción con sitios.
- Filesystem MCP: para almacenamiento persistente simple y logging.
Mientras lo desarrollábamos, en agosto de 2025, AWS presentó AgentCore, que viene con su propio Browser Tool y elimina la necesidad de gestionar nuestra propia infraestructura de Playwright. Ofrece un entorno de navegador totalmente gestionado y aislado, con integración con IAM y observabilidad vía CloudTrail, y se acopló sin fricción al código existente:
from strands_tools.browser.agent_core_browser import AgentCoreBrowser
all_tools = [retrieve, AgentCoreBrowser().browser]
La modularidad de Strands hizo trivial pasar de un tooling de navegador self-hosted a un servicio gestionado más seguro y escalable.
Grounding con Bedrock Knowledge Bases
Para que el agente razone con datos del mundo real, lo apoyamos en la base de datos del CVE™ Program, un repositorio de vulnerabilidades conocidas.
Con Amazon Bedrock Knowledge Bases subimos el dataset de CVE, que AWS fragmentó, embebió e indexó automáticamente en OpenSearch Serverless, listo para ser consultado.
La herramienta retrieve le permitió al agente consultar este vector store en tiempo de ejecución, dándole conocimiento actualizado sobre las vulnerabilidades relevantes para cada activo del cliente con el que se cruzaba. El pipeline gestionado de ingesta y recuperación de Bedrock Knowledge Bases nos ahorró un esfuerzo de ingeniería considerable frente a construir un flujo RAG personalizado desde cero.
Desplegando el agente en AWS
Tras validar el prototipo en local, llevamos la solución a producción usando dos runtimes gestionados:
1. AWS Fargate
Un despliegue containerizado empaquetado con Docker y orquestado mediante AWS CDK. Esta configuración nos dio control total sobre el escalado y el networking, y resulta ideal si necesitas más control o tienes dependencias especializadas (como los servidores MCP).
2. Amazon Bedrock AgentCore
AgentCore ofrece una abstracción aún más alta: defines el agente y su configuración, y AWS lo ejecuta por ti.
Con unos pocos ajustes en el código —principalmente cambiar el almacenamiento en filesystem por el sistema de estado de Strands— el mismo agente corrió de forma totalmente gestionada, sin necesidad de configurar CDK ni VPC, simplemente usando agentcore configure y agentcore launch del starter kit de Agentcore. Para iterar rápido y con mínima carga operativa, este enfoque fue imbatible.
Observabilidad y evaluación
Monitorear el comportamiento del agente es tan crítico como diseñarlo.
Para los equipos que prefieren analítica externa, LangFuse se conecta sin esfuerzo vía OpenTelemetry y entrega una línea de tiempo detallada de loops, llamadas al modelo e invocaciones de tools. Esto te da una visibilidad excelente, paso a paso, sobre lo que el agente está "pensando" y qué herramientas elige usar, algo crucial para depurar y mejorar de forma continua.
Tras el lanzamiento de AgentCore también está disponible AgentCore Observability, que se integra de forma transparente con CloudWatch, que ahora cuenta con un dashboard de GenAI Observability que captura trazas, métricas y logs en cada invocación. Los desarrolladores pueden visualizar el uso de tokens y las tasas de error, e inspeccionar sesiones, convirtiendo la caja negra del razonamiento de los LLMs en datos medibles.
Monitorea el gasto de tu agente con DoiT Cloud Intelligence
En la misma línea de la observabilidad, entender el impacto en costos antes de desplegar a producción también debería ser una prioridad.
En DoiT lanzamos GenAI Lens, parte de nuestra plataforma DoiT Cloud Intelligence™, para ayudarte a analizar los patrones de gasto de los workloads de IA generativa.
Se integra directamente con Amazon Bedrock, así como con Anthropic y OpenAI, dándote visibilidad sobre qué modelos y workloads disparan tus costos.
Para un análisis más profundo, DataHub te permite incrustar la ingesta de datos directamente en tu aplicación. Con labeling y dashboards personalizados, puedes hacer seguimiento de costos por dominio o cliente, e incluso calcular un costo por vulnerabilidad detectada, convirtiendo los hallazgos de seguridad en un ROI medible.
Lo que viene
Desde la ingesta de datos hasta el razonamiento y la observabilidad, el ecosistema de AWS aportó todas las piezas necesarias para dar vida a este agente ASM autónomo, de forma segura, escalable y con mínima gestión de infraestructura, sobre todo ahora que AgentCore está GA.
Hicimos pruebas en testphp.vulnweb.com, que demostraron que nuestro sistema es capaz de detectar escenarios de SQL Injection, Reflected y Stored XSS, Authentication Bypass e incluso compromiso activo del sitio. Estos resultados validaron que el agente puede recorrer flujos web de forma autónoma, inyectar payloads, interpretar la evidencia de ejecución y correlacionar resultados con la base de datos CVE, todo con mínima supervisión humana. Más allá de la precisión técnica, demostró el valor de combinar razonamiento autónomo con recuperación en tiempo real y observabilidad, convirtiendo escaneos crudos de vulnerabilidades en inteligencia estructurada y explicable.
Hay más camino por recorrer: refinar las capacidades de reporting, evaluar el desempeño en benchmarks conocidos e integrar bases de datos de vulnerabilidades adicionales. Pero incluso en su forma actual, este proyecto demuestra cómo AWS Bedrock + Strands Agents pueden traducir la promesa de la IA generativa en valor operativo para la ciberseguridad.
Todo el código fuente y los detalles de implementación están disponibles en GitHub, y hay una versión más extensa aquí.
—
¡Acompáñanos a hacer más simple tu camino en FinOps: contáctanos en doit.com/services!