Mostrando entradas con la etiqueta Artificial Intelligence. Mostrar todas las entradas
Mostrando entradas con la etiqueta Artificial Intelligence. Mostrar todas las entradas

sábado, agosto 01, 2026

La ética como “Safety Net”: Por qué la IA responsable acelera la innovación (y no la frena)

Cuando se habla de ética y regulación de la inteligencia artificial, la reacción más habitual -también entre gente muy sensata- es pensar en un freno. Un comité más, un formulario más, un abogado más entre la idea y el producto. Yo llevo defendiendo justo lo contrario desde hace años, y con RAIGHT.ai, la startup que he cofundado junto a Miguel Ángel Liébanas, Laura González, Ricardo Palomo e Idoia Salazar, hemos intentado demostrarlo con una plataforma, no solo con argumentos.


La tesis es sencilla: la ética by design no es un obstáculo para innovar rápido, es la condición para poder hacerlo con seguridad. Y como en tantas cosas de la vida, conviene explicarlo con sobriedad holandesa, sin caer ni en el alarmismo (“la IA nos va a destruir”) ni en la ingenuidad (“ya se regulará solo”).

El problema: demasiados principios, poca práctica

Desde 2018 llevamos trabajando en IA ética y responsable, primero desde OdiseIA, el observatorio que fundamos en 2019 y que hoy es referencia internacional en la materia. En todo este tiempo hemos visto proliferar recomendaciones —UNESCO, OCDE, Consejo de Europa— y regulaciones, con el AI Act europeo a la cabeza.

Todas apuntan en buena dirección, pero -aparte del AI Act- comparten un mismo defecto: se quedan en principios de alto nivel (“evitar el sesgo”, “garantizar la transparencia”) sin decir cómo hacerlo en un caso de uso concreto.
Es la diferencia entre decirle a un desarrollador “cuidado con el sesgo” y decirle “este sistema de selección de personal puede discriminar a mujeres en roles técnicos por el histórico de contrataciones; aquí tienes el requisito concreto para mitigarlo”. La primera frase genera ansiedad. La segunda, acción.

La solución: gobernanza automatizada, con supervisión humana

RAIGHT.ai nació en el verano de 2024 para resolver justo ese salto entre la teoría y la práctica. La plataforma parte de un inventario propio de más de 800 riesgos éticos de IA, construidos analizando con IA generativa más de 15.000 incidentes reales recogidos por repositorios como el AI Incident Monitor de la OCDE, el AI Risk Repository del MIT o AIAAIC (AI, Algorithmic and Automation Incidents and Controversies)

A cada riesgo le hemos asociado, también con ayuda de IA generativa y revisión humana posterior, los requisitos de mitigación concretos y accionables. (Ver Benjamins et al., “Responsible AI: from theory to practice”, capítulo del próximo Handbook of AI Ethics de Springer.) El flujo, en la práctica, es este:
  • Registro automático del caso de uso: Se sube documentación del sistema de IA (una ficha técnica, una descripción funcional) y la plataforma extrae automáticamente los datos relevantes.
  • Detección inteligente de riesgos: Con un clic, la plataforma compara el caso de uso contra el inventario y propone los riesgos aplicables. El equipo humano tiene que confirmarlos explícitamente; nada se acepta “a ciegas”, precisamente para evitar el riesgo de sobre-confianza en el propio sistema.
  • Lista de requisitos accionable: Para cada riesgo confirmado, aparecen los requisitos de mitigación correspondientes, documentados, asignados y trazables hasta su resolución. 
Lo hemos probado, entre otros, con COMPAS, el conocido sistema estadounidense de evaluación de riesgo de reincidencia usado en el ámbito judicial: la plataforma identifica sin dificultad los riesgos de discriminación algorítmica que ya denunciaron periodistas e investigadores hace años, y propone las salvaguardas que deberían haberse aplicado desde el diseño.


Por qué esto es bueno para el negocio (y no solo para la conciencia)

Aquí es donde quiero insistir, porque es el mensaje que peor se entiende: la IA responsable no compite con la innovación, la habilita. Hay al menos tres razones de peso: 
  • Innovación más rápida y barata: Cuando los riesgos se detectan al principio del diseño, corregirlos cuesta una fracción de lo que cuesta hacerlo después del lanzamiento, con la reputación ya dañada. Un equipo que sabe que tiene esta “red de seguridad” puede permitirse experimentar más, no menos.
  • Confianza de clientes y talento: El 93% de los consumidores valora la responsabilidad social de las empresas que eligen, y el 64% del talento digital prioriza estos valores a la hora de elegir dónde trabajar. En un mercado donde captar y retener talento técnico es una batalla constante, no es un dato menor.
  • Atractivo para inversores: Cada vez más fondos incorporan criterios ESG a sus decisiones, y la IA ética entra de lleno en la “S” de social. Hay ya rankings, como el de Ranking Digital Rights o el modelo de madurez de la GSMA, que puntúan explícitamente la gobernanza responsable de la IA.
Y hay un cuarto argumento, más pragmático: bajo el AI Act, sólo los sistemas de riesgo alto o limitado tienen obligaciones específicas. Con una plataforma que registra todos los casos de uso y su perfil de riesgo, una organización puede ir más allá del mínimo regulatorio con un esfuerzo adicional pequeño, y convertir el cumplimiento en un activo de confianza en lugar de en un ejercicio defensivo.

“Human in the loop”

Lo que proponemos con RAIGHT.ai no es sustituir el criterio humano por un algoritmo que dice “sí” o “no”. Es automatizar lo automatizable: la búsqueda en un inventario de miles de riesgos conocidos, la generación de la primera versión de los requisitos, para que las personas dediquemos el tiempo a lo que de verdad requiere criterio: decidir, priorizar, y responder por esas decisiones. La supervisión humana no es un trámite en nuestra metodología, es una pieza de diseño.


Resumiendo una cita famosa de Johan Cruyff, “jugar bien no es dar mil pases, es dar el pase justo en el momento justo”. La IA responsable no consiste en poner mil controles, sino en poner los controles justos, en el momento justo del ciclo de vida del sistema, es decir, al principio, cuando aún se puede diseñar bien, no al final, cuando solo queda apagar fuegos. 

Nota de transparencia: este artículo ha sido redactado con la asistencia de herramientas de IA generativa a partir de material propio (paper académico, presentación corporativa y contenidos de raight.ai), con revisión y edición humana final.

Autor: Dr. Richard Benjamins, CEO RAIGHT.ai

miércoles, julio 29, 2026

Cómo desplegar Zero Trust para Agentes IA en Cloudflare (2)

Las secciones anteriores - vistas en la primera parte de este artículo que puedes leer aquí - establecieron la premisa (el modelo como eslabón que no distingue una instrucción legítima de una inyectada) y la descripción del sujeto: el Agente IA que se ejecuta en una Sandbox desplegado en la cuenta de Cloudflare, gobernado desde un Durable Object externo. 

Figura 12: Cómo desplegar Zero Trust para Agentes IA en Cloudflare (2)

Esta sección recorre, dimensión por dimensión, los controles para postular esa arquitectura como Zero Trust. Cada uno de los controles sigue el mismo recorrido: primero qué pide el principio Zero Trust, luego dónde se sitúa hoy en el ecosistema Cloudflare frente a ese principio y por último cómo continúa la maduración hacia un estadio óptimo del modelo de madurez.

4.- Aplicación: los controles Zero Trust sobre el agente.

El orden sigue la secuencia natural de una petición. Primero se establece quién es el sujeto (identidad y autenticación). Después se decide qué se le permite hacer (control de acceso) y por dónde puede moverse (segmentación). 

Figura 13: Las siete dimensiones de control Zero Trust.

Luego se vigila lo que entra y lo que sale (validación de datos), lo que hace mientras actúa (observabilidad) y cómo se le contiene si algo va mal (contención y recuperación). Por encima de todo, la gobernanza mantiene el conjunto coherente en el tiempo.

4.1.- Identidad y autenticación.

El principio.

Zero Trust parte de que ningún sujeto goza de confianza implícita en ninguna circunstancia (independientemente de su ubicación o propiedad). Toda identidad debe verificarse antes de conceder acceso y verificarse de forma continua. NIST SP 800-207 extiende ese principio explícitamente a los sujetos que no son personales. En su sección 5.7, dedicada al uso de entidades ‘no-persona’ en la administración de una arquitectura Zero Trust, reconoce que los agentes de inteligencia artificial y otros componentes de software se despliegan para gestionar tareas en la red de la organización y necesitan autenticarse ante los componentes de control, a veces en lugar de un administrador humano. 
Y advierte de tres riesgos que describen con precisión la situación de un agente: que su listón de autenticación sea más bajo que el de un human (una clave de API frente a una autenticación multifactor), que un atacante consiga inducirlo o coaccionarlo para ejecutar una tarea para la que el atacante no tiene privilegios y que un atacante robe las credenciales del agente y lo suplante. La identidad del agente, por tanto, no es un detalle administrativo: puede ser la primera superficie que una atacante intentará explotar o usurpar.

La consecuencia para el diseño es doble. La identidad del agente debe ser fuerte (no una credencial estática y longeva que, si se filtra, abre una puerta de modo indefinido) y debe ser verificable por algo externo al propio agente, porque, como se ha establecido en la premisa, el modelo no puede ser el guardián de su propia identidad.

Aplicándolo en el ecosistema de Cloudflare.

Conviene distinguir desde el principio dos identidades que son fáciles de confundir: la del plano de control (el componente que orquesta las sesiones) y la del Agente IA cuando accede a recursos externos. La primera la resuelve hoy el despliegue de referencia con una credencial única, la llamada Clave de Entorno (ANTHROPIC_ENVIRONMENT_KEY). Es la clave con la que el plano de control se identifica con Anthropic y con ella realiza todas las operaciones de coordinación: pedir el trabajo pendiente, confirmar su recepción, señalar que sigue vivo, forzar la parada de sesión y recibir el flujo de eventos de cada una. Es decir, una sola credencial gobierna toda la relación entre el plano de control y la plataforma.


Que una única clave concentre todas esas operaciones tiene una lectura Zero Trust inmediata. Por un lado, es un punto de alto valor que conviene proteger y rotar con cuidado: el repositorio lo gestiona como secreto, no como variable en claro y verifica además la firma de cada webhook entrante antes de actuar sobre él, de modo que un evento no firmado no llega a procesarse. 

Por otro lado, es exactamente el tipo de credencial cuya captura permitiría a un atacante suplantar al sistema (el tercero de los registros que advierte NIST SP 800-207 en su sección 5.7), lo que refuerza la necesidad de tratarla con el mismo rigor que cualquier identidad privilegiada. Esa credencial sin embargo, identifica al plano de control, no al Agente AI cuando este sale a actuar sobre el mundo (cuando accede a un servicio, una API o un servidor). 

Para esa segunda identidad, la del Agente IA como sujeto que actúa, el ecosistema Cloudflare One aporta dos piezas directamente aplicables. La primera es la autenticación mutua mediante mTLS: en ella, tanto el cliente como el servidor presentan certificados durante el handshake y Cloudflare Access la propone explícitamente como vía para que sistemas automatizados y dispositivos demuestren su identidad presentando un certificado de cliente en lugar de iniciar sesión a través de un proveedor de identidad. 
Es, en términos de NIST SP 800-207, una credencial de identidad para una entidad ‘no-persona’ (también llamadas "Non-Human Identities"): un certificado en lugar de un login humano. La segunda pieza es la emisión de certificados de vida corta para el acceso a infraestructura: en el modelo de acceso por SSH de Cloudflare, las claves estáticas tradicionales, que pueden permanecer sin cambios en los servidores durante años, se sustituyen por certificados efímeros emitidos a partir del token del inicio de sesión, con políticas por destino y por usuario y registro de los comandos ejecutados. Conviene situar esta segunda pieza con precisión: la documentación describe el acceso de usuario humano por SSH, no el del Agente IA.  Su valor aquí es que demuestra que la plataforma ya dispone del mecanismo de credenciales efímeras y de mínimo privilegio temporal, que es justamente el patrón que un Agente IA como entidad ‘no-persona’ necesita.

Situado en el recorrido de madurez, el ecosistema ofrece, por tanto, los materiales para una identidad ‘no-humana’: certificados de cliente, credenciales efímeras, gestión de secretos y verificación de firmas. Pero su aplicación al Agente IA concreto depende de que el operador los conecte deliberadamente. La plataforma provee las piezas, falta ensamblarlas.

Continuando con la maduración Zero Trust

El paso natural hacia un estadio óptimo es sustituir las credenciales estáticas y de larga vida, allí donde hoy haya, por credenciales efímeras y de alcance acotado. Una clave de entorno única y longeva cumple su función, pero el principio Zero Trust de verificación continua y de mínimo privilegio temporal apuntan hacia credenciales que caduquen por diseño y que se emitan en el momento de uso, de modo que una filtración tenga una ventana de validez corta en lugar de definitiva. El mecanismo de certificados efímeros que la plataforma ya usa para el acceso de usuarios marca la dirección: llevar ese mismo patrón (emisión justo a tiempo, vida corta, alcance por destino) a la identidad con laque el agente accede a los recursos.

Un segundo avance consiste en considera la identidad del agente como una entidad ‘no-persona’ de primer orden y no como una extensión de la cuenta que lo despliega: que cada Agente IA, o cada clase de agente, porte una credencial propia y distinguible (un certificado de cliente mediante autenticación mutua) de modo que las decisiones de acceso y los registros de auditoria puedan atribuirse a una identidad concreta y verificable, en lugar de una credencial compartida. Esto alinea el despliegue con la advertencia de NIST SP 800-207 sobre el robo y la suplantación de credenciales de agentes: cuanto más acotada y atribuible es la identidad, menor es el alcance de lo que un atacante obtiene si la captura.

4.2.- Control de acceso: el principio de mínima agencia.

El principio.

Una vez verificada la identidad del sujeto, Zero Trust impone una segunda pregunta: ¿qué se le permite hacer? Para responderla de forma estructurada, el marco Zero Trust recurre al método Kipling, que articula toda política de acceso en torno a seis preguntas (quién, qué, cuándo, donde, por qué y cómo). 

La guía de la Cloud Security Alliance lo recoge en dos planos complementarios: por un lado, define la política como el conjunto de reglas de gobernanza que determina el quién, qué, cuándo, dónde, cómo y por qué del acceso al recurso; por otro, sitúa el método Kipling en el paso concreto de crear las política Zero Trust, para determinar quién o qué puede acceder a la superficie a proteger, considerando de forma explícita tanto entidades persona como no-persona (servicios, aplicaciones, bots). Un Agente de IA es, precisamente, una de esas identidades no-persona y aplicarle las seis preguntas convierte un permiso difuso en una política precisa: quién es el agente (su identidad tratada en la sección anterior), a qué recurso accede y para qué, cuándo y desde dónde, y cómo (con qué herramienta y bajo qué condiciones) se permite la acción.

El principio rector que ordena la respuesta a esas preguntas es el de mínimo privilegio, que en el mundo de los agentes adopta una forma propia, la de mínima agencia: un agente no debe disponer de más capacidades de las estrictamente necesarias para su tarea, porque cada capacidad que posee es también una para que un atacante pueda inducirle a usar. La taxonomía de OWASP para aplicaciones agénticas recoge este riesgo de forma explícita en sus categorías de abuso de identidad y privilegio del agente y de uso indebido de herramientas y sitúa los controles de mínima agencia como una de las defensas trasversales del catálogo.


La diferencia con el control de acceso clásico es importante y conviene no perderla de vista. En un sistema tradicional, los permisos limitan lo que un usuario puede solicitar. En un sistema agéntico, el agente decide por sí mismo qué herramienta invocar a partir de un objetivo en lenguaje natural. Si entre esas herramientas hay una con capacidad de hacer daño, bastaría con que una instrucción inyectada en sus datos de entrada lo dirija hacia ella. Por eso la mínima agencia no es sólo buena higiene, es la contención directa del riesgo de inyección descrito en la premisa. Cuantas menos herramientas potentes estén al alcance del Agente IA, menor es lo que la inyección puede lograr (Blast Radius).

De aquí se derivan dos exigencias de diseño. La primera es que el catálogo de herramientas del Agente IA esté curado: que sólo contenga lo que la tarea requiera y nada más. La segunda es que las decisiones sobre si una acción concreta pueda ejecutarse no dependa del propio modelo (que, como se estableció, no puede ser garantía por sí mismo), sino de una lógica externa y determinista o de la intervención de un humano cuando la acción lo merezca.

Cómo aplicarlo con el ecosistema Cloudflare.

El despliegue de referencia ofrece tres mecanismos que, combinados, cubren buena parte de esta exigencia.

El primer mecanismo es la curaduría del conjunto de herramientas. Cada herramienta del catálogo (tanto las propias del Agente IA como las personalizadas) se activa o desactiva de forma individual en la configuración del agente y una herramienta desactivada no aparece ni puede ser invocada. En el despliegue de Cloudflare, además, las herramientas integradas están condicionadas a que exista la conexión que cada una necesita: sólo aparecen en el catálogo del Agente IA cuando quien lo despliega ha configurado el recurso correspondiente. Es mínima agencia por construcción: lo que no se ha conectado, no existe para el agente.

El segundo mecanismo son las políticas de permiso. Anthropic define para Managed Agents dos tipos de políticas: una que permite la ejecución automática y otra que pausa la sesión y espera la aprobación humana antes de actuar. Los valores por defecto son razonables desde la óptica Zero Trust: las herramientas que provienen de servidores MCP externos quedan por defecto en el modo que exige aprobación, de modo que una herramienta nueva añadida a un servidor MCP no se ejecuta en el despliegue sin que alguien la confirme.
El tercer mecanismo y el más potente para un control determinista, es la herramienta personalizada. En el despliegue de Cloudflare, una herramienta personalizada no es una llamada que el modelo ejecuta por su cuenta. El modelo sólo emite petición estructurada y es el código quien despliega (ejecutándose en el Durable Object, con acceso a las conexiones Worker) el que realiza la operación y devuelve el resultado. Esto convierte a la herramienta personalizada en el lugar natural para insertar un control determinista. La propia documentación señala que una herramienta personalizada puede validar entradas, imponer límites de tasa, redactar información sensible o comprobar autorización antes de hacer el trabajo.

Situado en el recorrido de madurez, el ecosistema ofrece, por tanto, los tres ingredientes de la mínima agencia: un catálogo que se puede recortar, una política que puede exigir aprobación humana y un punto (la herramienta personalizada) donde insertar la comprobación determinista. Conviene, eso sí, ser preciso sobre el límite: las políticas de permisos binarias no se aplican a las herramientas personalizadas. Es decir, para una herramienta personalizada, el control no lo da la política de permiso, sino la lógica que quien la programa incluya dentro de ella. Lejos de ser una carencia, esto sitúa el control en el lugar correcto: dentro de código propio, determinista y auditable. 

Continuando la maduración Zero Trust.

El avance hacia un estadio óptimo consiste en no depender de un único mecanismo, sino en combinarlos según el riesgo de cada herramienta. Las herramientas inocuas pueden quedar en ejecución automática, pero las que tocan sistemas sensibles, tras aprobación humana. Las que requieren una decisión reproducible (comprobar que el identificador pertenece al usuario de la sesión, que la operación está dentro de la cuota, que el dato no contiene información que no deba salir) deben encapsularse como herramientas personalizadas con esa comprobación escrita en su interior. La forma madura consiste en asignar a cada herramienta el mecanismo que corresponde a su riesgo.

Un segundo avance, alineado con el principio de mínima agencia de OWASP, es preferir herramientas tipadas y de propósito estrecho frente a capacidades genéricas y potentes. Una herramienta de shell concede al agente la capacidad de ejecutar prácticamente cualquier cosa. Una herramienta personalizada que hace exactamente una operación, con una entrada válida y una salida acotada, reduce drásticamente lo que una inyección puede lograr a través de ella. Sustituir capacidades amplias por herramientas estrechas y verificables es, en sí mismo, un acto de reducción de agencia.

4.3.- Segmentación: a qué puede conectarse el agente.

El principio.

Las dos preguntas anteriores (quién es el agente y qué se le permite hacer) se completan con una tercera del método Kipling: ¿dónde? Una vez que la entidad está dentro, Zero Trust no concede libertad de movimientos, al contrario, compartimenta todo para que cada una de las entidades alcance solo los recursos que su tarea exige. Es el principio de microsegmentación, que NIST SP 800-207 sitúa como enfoque fundamental en la arquitectura Zero Trust: dividir el entorno en segmentos pequeños y proteger cada recurso de forma que el acceso a uno de ellos no implique el acceso a los demás.

En un agente esto se reduce en el control del tráfico de salida. Un Agente IA comprometido por una inyección puede hacer daño también con aquello que puede comunicarse fuera: el servidor al que envía datos robados, el punto de mando del que recibe instrucciones, el servicio interno al que se conecta sin autorización. Segmentar a un Agente IA es decidir con qué puede hablar. Conviene distinguir este control del de la sección siguiente: la segmentación define a qué destinos puede conectarse (el mapa de sus movimientos). La validación de salida vigila qué datos viajan por esas conexiones. Aquí se traza el mapa, allí se inspecciona la carga.

El requisito es doble: denegación por defecto (ningún destino no autorizado explícitamente) y una frontera establecida antes de que el Agente IA actúe, porque cualquier ventana sin restricciones es una ventana de exfiltración.

Cómo aplicarlo con el ecosistema Cloudflare.

El despliegue resuelve la segmentación con un motor de políticas de salida que cumple ambos requisitos. La frontera antes de la acción está garantizada por diseño: ambos backends adjuntan la política de salida antes de iniciar cualquier código del Agente IA, de modo que no existe ninguna ventana en la que un sandbox sin restringir alcance un destino no deseado.


La denegación por defecto está disponible, pero requiere que sea una decisión consciente. El motor admite listas de permitidos y de no permitidos. La primera bloquea todo lo demás. La segunda, una lista solo de no permitidos, deja pasar al resto del acceso público. El primer modo es el que está alineado con Zero Trust y la propia guía recomienda la denegación por defecto frente al permiso por defecto. El matiz que debe conocerse es, que una sesión que no encaja con ninguna política ni con una política general se ejecuta sin restricción alguna de salida. La denegación por defecto, por tanto, no es automática: se consigue con una política general restrictiva que ninguna sesión puede eludir.

El motor va más allá del filtrado por host. Sus reglas permiten cinco comportamientos (permitir, denegar, inyectar una credencial sin que el Agente IA vea el secreto, enrutar a un servicio privado o pasar el tráfico por un proxy propio) y una regla de denegación prevalece siempre sobre cualquier permiso que también encaje.

En MicroVM, además, la interceptación HTTPS está activada, de modo que incluso el tráfico TLS pasa por la política, cerrando el punto ciego del canal cifrado. Para recursos interno que no deben ser accesibles desde internet, la conexión VCP aporta un detalle valioso. El Agente IA ve únicamente los enlaces permitidos por su nombre, nunca los identificadores reales del servicio. No puede dirigirse a lo que no se le ha expuesto, porque no conoce su existencia.


Hay un límite que hay que señalar, porque es la excepción más importante del modelo. Ciertas herramientas no pasan por la política de salida (egress). Las herramientas de servidor de Anthropic, búsqueda y recuperación de web integradas ((web_fetch y web_search), se ejecutan en infraestructura de Anthropic, no en el sandbox ni en la cuenta de Cloudflare. No hay visibilidad sobre ellas, no dejan rastro y la política no se les aplica. El despliegue las desactiva por defecto. 

Existen variantes que sí corren en la cuenta propia y dejan auditoria, pero que tampoco atraviesan la política por sesión, porque se despachan desde la infraestructura de renderizado y no desde dentro del sandbox. La segmentación solo se completa si se tiene en cuenta qué canales quedan fuera de ella.

Continuando con la maduración Zero Trust.

El primer avance es adoptar deliberadamente la denegación por defecto: una política general restrictiva, con una lista de permisos acotada a lo que la tarea necesita, aplicada a toda sesión para que ninguna quede sin restricciones por no encajar con una política especifica. Es la diferencia entre bloquear lo no autorizado y bloquear solo lo que alguien recordó denegar.

El segundo es cerrar o vigilar los canales que escapan a la política. Como las herramientas de servidor de Anthropic no son observables ni filtrables, lo maduro es mantenerlas desactivadas y si se necesitan encauzarlas por las variantes que dejen auditoria, tratando ese rastro como parte de la observabilidad. Los recursos que jamás deban exponerse a internet van tras la conexión VPC, de modo que ni figuren entre los destinos que el agente puede nombrar.

Figura 22: Canales de salida y su cobertura por la política de egress

El tercero aprovecha la inyección de credenciales como segmentación de identidad, no solo de red. Al inyectar el secreto de un servicio en la petición saliente sin que el agente lo vea, se separa el uso del servicio de la posesión de un secreto. El Agente IA habla con la API, pero no puede extraer la clave porque nunca la tiene. Llevar este patrón a toda integración sensible convierte cada secreto en algo que el agente usa sin custodiar.

lunes, julio 27, 2026

Cómo desplegar Zero Trust para Agentes IA en Cloudflare (1)

Los modelos de lenguaje que aportan la inteligencia a un Agente IA procesan en un mismo flujo las instrucciones y los datos, no hay una frontera que distinga de forma fiable una orden legítima de una instrucción maliciosa incrustada en el contenido. Esa premisa estructural es la tesis de este documento: la seguridad del Agente de IA no puede residir en el propio modelo, sino en controles externos, deterministas y verificados de forma continua. Es, precisamente, la lógica del Zero Trust.

Figura 1: Cómo desplegar Zero Trust para Agentes IA en Cloudflare (1)

En este artículo se pretende dar traslado a los principios Zero Trust, reconocidos por NIST, CISA, NSTAC, OWASP, CSA y Anthropic, al despliegue de Agentes IA gestionados sobre la infraestructura de Cloudflare. Tras situar al agente como sujeto a proteger, se recorren siete dimensiones de control (identidad, acceso, segmentación, validación de datos, observabilidad, contención y gobernanza), mostrando en cada uno qué pide el principio, qué ofrece hoy la plataforma y cómo avanzar hacia un estadio de madurez óptimo.

1.-La premisa fundamental: el modelo como eslabón estructural.

La seguridad de un sistema agéntico parte de una observación que hay que tener presente, ya que en ella se basa todo lo demás. Los modelos de lenguaje frontera actuales, con independencia del proveedor, procesan en un mismo flujo las instrucciones del sistema, los datos que se le entregan, las instrucciones del usuario y, cuando existe, una instrucción maliciosa insertada en dichas instrucciones o incrustada en los datos. No posee una división en su arquitectura que identifique de forma fiable una orden legítima, de una instrucción inyectada en el contenido que analiza. Esto no es una limitación de un modelo concreto, es una propiedad estructural del paradigma.

El consenso en el sector así lo recoge. OWASP señala que la inyección de Prompts es viable por la propia naturaleza de la IA Generativa y que debido a la influencia estocástica en el funcionamiento de los modelos, no está claro que exista un método eficaz a la hora de prevenirlo. Microsoft lo enfoca desde la arquitectura: el modelo no ejecuta nada por sí mismo, simplemente genera la solicitud. Es el código de la aplicación o el framework quien lo interpreta y lo ejecuta, siendo esa separación un límite clave en la seguridad. Anthropic por su parte señala en su marco de seguridad para agentes, que el Agente IA puede ser manipulado y que el daño que puede provocar es llevado a cabo a velocidad de máquina.

De esta premisa se deduce una consecuencia directa para el diseño: la seguridad no puede apoyarse en el modelo. Si las instrucciones del sistema son, para el modelo, un texto más dentro del mismo flujo que los datos, entonces los controles existentes para que el modelo “decida bien” son insuficientes por construcción. Una protección efectiva ha de apoyarse en controles externos al modelo y de forma determinista, para poder eliminar la dependencia interpretativa que este haga de su contexto. 

Es la lógica que el Zero Trust aplica desde su origen: NIST sitúa la decisión de acceso en el punto de decisión de y un punto de aplicación de políticas (PDP/PEP) externos a la entidad que solicita el acceso y el mismo estándar advierte que las entidades que no son personas, como los agentes de software, pueden ser inducidas a realizar acciones para las que no tienen privilegios.

2.- Zero Trust aplicado a agentes: principios y método.

Esta es la base sobre la que se construye el resto del documento. Implementar Zero Trust en Agentes IA no es endurecer el modelo, sino restringir su autonomía con controles externos, deterministas y verificables de forma continua, de tal manera que la confianza no exista de forma implícita ni permanente, sino que sea evaluada en cada una de sus acciones.

2.1.- Los principios, aplicados a un sujeto que actúa solo.

El Zero Trust no es un producto ni una arquitectura concreta, es un conjunto de principios rectores. Su premisa: la confianza no se concede de forma implícita, sino que se evalúa de forma continua, partiendo de que la red debe considerarse comprometida. Tres principios articulan esta premisa y los tres adquieren un matiz particular, cuando el sujeto no es una persona, sino un Agente IA que interpreta objetivos y ejecuta acciones por sí mismo para conseguir sus metas.

El primero, Verificar Siempre: toda solicitud de acceso se autentica y se autoriza con independencia del origen, y hacerlo una vez no es suficiente. La autenticación y la autorización han de ser dinámicas y han de reevaluarse durante la sesión. El estándar advierte que evaluar cada petición de forma aislada puede dejar pasar un ataque mantenido dentro de un rol autorizado, mientras tener el contexto en cuenta permite detectar desviaciones en relación con la tarea esperada. Esto se hace especialmente relevante en agentes, cuya actividad legítima es intensa y una anomalía en su comportamiento puede ser la primera señal de compromiso.

El segundo, Asumir la Brecha: se diseña dando por hecho que el compromiso ya ha ocurrido u ocurrirá. Se trabaja para limitar el daño. En agentes, esto es contener el radio de impacto (Blast radius) si el compromiso se ha producido o antes de que este suceda.

El tercero, Mínimo Privilegio: permitir solo el acceso estrictamente necesario para realizar una tarea. En el plano agéntico esto debe afinarse: no solo a que datos accede el agente, sino qué herramientas invoca, con qué frecuencia y sobre qué recursos. La autonomía deja de ser un valor por defecto, en línea con lo que describe OWASP, al tratar la agencia excesiva como un riesgo propio de las aplicaciones agénticas.

2.2.- El control vive fuera del modelo: el modelo PDP/PEP.

De su premisa fundacional se desprende que el mecanismo donde se decide y se aplica la confianza no puede estar integrado en el propio sujeto. La arquitectura Zero Trust lo resuelve separando estas funciones: la decisión recae en el Punto de Decisión de Políticas (PDP) y su ejecución en un Punto de Aplicación de Políticas (PEP), siendo ambos componentes totalmente externos a la entidad que solicita el acceso. El objetivo fundamental de este diseño es acercar dichos controles al recurso protegido, reduciendo así al mínimo la zona de confianza implícita.

Figura 4: Core Trust Zero Logical Core. Fuente:

Esto encaja con la naturaleza del Agente IA. El agente genera la intención de actuar, produciendo una secuencia de Tokens que representa una llamada a la herramienta, que es después el código externo quien interpreta y ejecuta

Figura 5: El control fuera del modelo (PDP/PEP).

Es en ese punto de ejecución, fuera del modelo, donde PEP puede evaluar y autorizar la acción de forma determinista. El control no consiste en convencer al modelo de que se comporte, sino en situar la decisión en un componente externo.

2.3.- Test de diseño: ¿imposible o solo tedioso?

Tener un criterio práctico ayuda a evaluar cada control: hacerse la pregunta de si un posible ataque se convierte en algo “imposible” o si solo es algo tedioso, puede ser un principio. Los controles diseñados para añadir fricción son insuficientes ante un adversario que recorre sus pasos a gran escala y con un coste por intento descartable.

Esto importa a la hora de trabajar con Agentes IA por una razón concreta: un atacante que opera a través de un agente, o el propio agente comprometido, actúa a velocidad de máquina y con una paciencia cuasi ilimitada. Ante la duda, es preferible tener un control que impida una capacidad a mantener solo una limitación que ralentice una actividad dañina.

2.4.- El método para escribir políticas: la interrogación de cada acción.

Definir el privilegio mínimo de cada uno de los agentes, exige un método para redactar políticas acceso. El informe del NSTAC al Presidente recomienda el método Kipling añadiendo “cómo(5W+H) para la redacción de políticas Zero Trust, como forma de determinar quien o qué puede acceder a la superficie que se quiere proteger. El método utiliza las seis preguntas quién, qué, cuándo, dónde, por qué y cómo, convirtiéndolas en atributos sobre los que se construye las reglas.


Aplicado a un Agente IA, ofrece una visión interrogativa sobre cada acción: qué agente la solicita, qué herramienta pretende invocar, en qué momento, sobre qué recurso, con qué propósito y de qué manera. Hay que precisar que el NSTAC recomienda el método para redactar políticas de acceso en general. Aplicarlo a cada acción de un agente y reevaluarlo de forma continua es una extensión natural llevado al plano agéntico, de forma que se alinee con el principio Zero Trust de verificación continua.

Esa coherencia tiene una consecuencia de diseño: si cada acción se interroga como si fuera la primera, sin que el agente acumule una confianza que después pueda ser aprovechada, se cierra el vector del agente que se comporta de forma intachable hasta el momento de actuar, un riesgo que el propio Zero Trust contempla al asumir la brecha y exigir reevaluación continua. 

2.5.- Un recorrido por estadios, no un interruptor.

Conviene encuadrar todo lo anterior en cómo el sector enfoca la adopción del Zero Trust: es un recorrido gradual. El modelo de madurez de CISA lo describe en cuatro estadios: tradicional, inicial, avanzado y óptimo. Subraya que la progresión es incremental, que puede llevar tiempo y que cada pilar avanza a su propio ritmo. 


Situar un despliegue de agentes en ese recorrido permite reconocer lo ya resuelto y orientar las aportaciones hasta el siguiente estadio, que CISA define con rasgos como el acceso justo a tiempo (JIT) y justo lo necesario, el privilegio mínimo dinámico, las políticas que responden a disparadores automáticos y la verificación continua. Esos rasgos del estadio optimo serán la referencia hacia la que se orientará la sección de aplicación.

3.- El sujeto: el agente gestionado en Cloudflare (managed-agent).

Antes de aplicar controles es perceptivo definir que es lo que se controla. El modelo Zero Trust razona sobre entidades que solicitan acceso a recursos y trasladar ese razonamiento a un Agente IA exige saber que partes lo componen, donde se ejecuta cada y que frontera de confianza lo separan. Esta sección sitúa al agente como un sujeto Zero Trust, señalando aquellos puntos donde, en la sección siguiente, enganchan concretamente los controles.

3.1.- Dos formas de ejecutar un agente, una misma capacidad.

Anthropic distribuye la misma capacidad agéntica en dos formatos operativos distintos: 
  • El Agente SDK es una librería que ejecuta un bucle del agente, la lógica decide el paso siguiente, enruta las llamadas a herramientas y realimenta los resultados, todo dentro del propio proceso.
  • Managed Agents, en cambio, es una API REST gestionada en la que Anthropic ejecuta el agente y el sandbox, mientras la aplicación envía eventos y recibe los resultados de forma continua a medida que se producen.
La recomendación publicada por Anthropic es prototipar localmente con el Agent SDK y pasar a Managed Agents para producción. Esta distinción importa para Zero Trust porque determina quien opera cada componente y, por tanto, donde puede situarse cada control. 

Managed Agents se organiza en torno a cuatro conceptos que conviene fijar, porque reaparecen en cada control posterior. El Agent (agente) es la definición del agente: el modelo, el prompt del sistema, las herramientas, los servidores MCP y las skills. Se crea una vez y se referencia a lo largo de muchas sesiones. El Environment (entorno) es la configuración de donde se ejecutan las sesiones: un sandbox en la nube gestionado por Anthropic o un sandboxserf-hosted’ sobre la infraestructura propia. La Session (sesión) es una instancia del agente en ejecución dentro de un entrono, que realiza una tarea concreta y genera salidas. 

Los Events (eventos) son los mensajes que se intercambian entre la aplicación y el agente: turnos del usuario, resultados de herramientas y actualizaciones de estado. Esa cuarta pieza, los Events, para un entorno Zero Trust es más relevante de lo que a priori resultaría ser. El historial de eventos persiste en el lado del servidor y puede recuperarse íntegro, lo que convierte a la sesión en un registro auditable de todo lo que el agente ha hecho. 
Otro matiz, se refiere a entornos regulados: entre los casos de uso que se desprenden de la propia documentación, se señala la ejecución ‘self-hosted’, es decir, sandboxes sobre infraestructura propia para cumplimiento o residencia de datos. El despliegue de referencia de Cloudflare se realiza en la forma de ejecución ‘self-hosted’: Anthropic define la capacidad y avisa del inicio y del final de cada sesión, mientras que el plano de control y los sandboxes donde el agente se ejecuta, se despliegan en la cuenta de Cloudflare de quien lo implementa. 

3.2.- El plano de control: un Worker y un Durable Object por sesión.

En el despliegue de referencia de Cloudflare, el plano de control es un único Cloudflare Worker. Ese Worker recibe los webhooks de la plataforma de Managed Agents, despacha cada sesión a una sandbox MicroVM o ‘Isolate’ y ofrece un panel de control por HTTPs. No mantiene ningún proceso de larga duración, sino que trabaja únicamente en respuesta a un webhook de Anthropic más un cron diario que elimina filas antiguas. Esta condición implica que no hay un servidor del Agente IA  ‘siempre conectado’ que defender, sino una serie de activaciones acotadas y trazables.


Una pieza decisiva desde la perspectiva Zero Trust es que una sesión está respaldada por un ‘Durable Object’ que se ejecuta en Workers, fuera de la propia sandbox. La documentación de Cloudflare lo describe como un fragmento de código con estado que permite almacenar información sobre la sesión y controlarla desde una ubicación de confianza.

En términos del modelo Zero Trust, esto sitúa el punto de decisión y el punto de aplicación de políticas (PDP/PEP) en un lugar distinto y de mayor confianza que el sujeto controlado: el agente se ejecuta dentro del sandbox, pero quien lo gobierna lo hace desde fuera. Es la separación que hace posible que un control sea determinista en lugar de depender de la voluntad del modelo, una distinción sobre la que se volverá en el punto 4 adelante.


El ciclo de vida de una petición sigue seis pasos que conviene conocer porque cada uno es una oportunidad de control. 
  • Primero un webhook entrante verifica mediante firma, HMAC-SHA256 según la verificación Standard Webhooks con una tolerancia de +/-300 segundos, guarda el evento en la base de datos D1 en Cloudflare y cuando el evento indica que la sesión ha arrancado, pasa a atender el trabajo pendiente.
  • Segundo, recoge ese trabajo consultando la cola del entorno de Anthropic
  • Tercero, elige el backend de ejecución: la elección se hace por agente, se guarda en D1 y queda en caché para las siguientes peticiones. Por defecto es MicroVM
  • Cuarto, envía el trabajo al sandbox elegido (el contenedor MicroVM o el Durable Object del Isolate) y aquí ocurre el paso decisivo: ambos aplican la política del ‘egress’ de la sesión antes de iniciar cualquier código del agente. 
  • Quinto, ejecuta: en MicroVM las herramientas estándar (bash, operaciones de ficheros) corren dentro del contenedor, mientras que las herramientas personalizadas las atiende un despachador alojado en el Durable Object; en Isolate no hay contenedor y tanto las operaciones de fichero como la ejecución de código se hacen a través del mismo despachador. 
  • Sexto, el estado persiste: MicroVM guarda una instantánea de su directorio de trabajo en el almacenamiento de objetos R2 de Cloudflare cuando la sesión se queda inactiva e Isolate lo conserva automáticamente en el almacenamiento SQLite de su Durable Object.
De todo eso conviene destacar el cuarto paso. Tanto el backend de MicroVM como el de Isolate adjuntan la política de ‘egress’ de la sesión antes de iniciar cualquier código del Agente IA. Es decir la frontera de red de la sesión queda establecida antes de que el agente pueda actuar, no después. Esta precedencia reaparecerá como un patrón en varios controles de la sección 4 más adelante en este artículo.

3.3.- Dos backends de ejecución y un reparto explícito de responsabilidades.

El Agente IA se ejecuta en uno de dos backends. El backend MicroVM utiliza una sandbox SDK y los contenedores de Cloudflare, ofreciendo un shell completo dentro del contenedor y persistiendo su directorio de trabajo mediante snaptshots a almacenamiento de objetos. El backend de Isolate se construye sobre Agents SDK de Cloudflare y los Dynamic Workers. No tiene contenedor alguno y realiza las operaciones de sistema de ficheros y de ejecución de código a través de llamadas a herramientas dentro del propio Durable Object con almacenamiento SQLite

La elección entre ambos tiene consecuencias para varios controles (observabilidad del terminal, intercepción de tráfico, superficie shell) que se detallan más adelante. Las sesiones Isolate, no admiten la conexión de terminal en vivo que si ofrece MicroVM. Bajo el backend de MicroVM subyace el modelo de seguridad de Sandbox SDK, que conviene leer en clave Zero Trust porque reparte las responsabilidades de forma explícita. Cada sandbox se ejecuta en su propia máquina virtual, lo que proporciona un aislamiento fuerte.

Ese aislamiento, sin embargo, opera entre sandboxes no dentro de ellos. Entre sandboxes el sistema de ficheros, la memoria y la red están aislados, pero dentro del mismo sandbox todos los procesos ven los mismos ficheros, por lo que ejecutar código no confiable exige el uso de sandboxes separados por usuario

Lo relevante para una guía de implementación, es que la documentación advierte que el aislamiento a nivel de contenedor no protege de forma automática de cualquier amenaza. El sandbox no puede explotarse para escapar del host, pero sí puede usarse indebidamente si no se aplican una serie de patrones de seguridad (validación de entrada, aislamiento por usuario, gestión de variables de entorno y protección de secretos). Esto corresponde a quien despliega, no a la plataforma.

Todo esto es el punto de partida de todo lo que sigue. La sección 4 que tenemos en la siguiente parte de este artículo, recorre, dimensión por dimensión esa segunda lista (lo que corresponde a quien despliega el agente) y muestra donde el ecosistema de Cloudflare y de Anthropic ya ofrecen la pieza necesaria y dónde el avance hacia un estado de madurez más alto consiste en conectar esa pieza de forma debida. No se trata de suplir posibles carencias de la plataforma, sino de continuar con la maduración Zero Trust sobre los cimientos que la plataforma ya proporciona.

Un saludo,   

domingo, julio 26, 2026

Agent Data Injection Attacks

Este fin de semana he aprovechado par leerme un paper que ha sido publicado a principios de este mes, donde se habla de una variación de los ataques de Indirect Prompt Injection, utilizando una variante llamada Agent Data Injection, y que está muy bien pensada, para lograr que un ataque cambie su comportamiento y realice acciones controladas por un atacante.
Las técnicas de Indirect Prompt Injection buscan dejar Instrucciones Maliciosas almacenadas en fuentes de datos externas que un Agente IA va a procesar para realizar su tarea. Al procesar esos datos inseguros, ya sean páginas web, repositorios de GitHub o correos electrónicos, el Agente IA va encontrarse un Prompt que va a cambiar su comportamiento produciendo un Desalineamiento de su funcionamiento.


Para evitar estos Desalineamiento, los modelos están siendo construidos con Guardarraíles, y los Agentes IA son diseñados con Harnesses, que evitan que el comportamiento final se salga de los objetivos para los que ha sido diseñado uno de estos Agentes IA. Teniendo en cuenta esto, el trabajo de "Agent Data Injection Attacks are Realistic Threats to AI Agents" propone una nueva forma de desalinear al Agente IA.
La aproximación en este caso no se trata de Inyectar Instrucciones Maliciosas, sino de Inyectar Objetos de Información, que formen parte de los Datos de Contexto del Agente IA para manipular la información sobre la que va a tomar sus decisiones y ejecutar sus acciones. 
Como se ve en la imagen anterior, el objetivo es meter datos en los Agentes IA, y para eso se utilizan los Datos Inseguros que éste procesa - es decir, los e-mails, webs, repositorios de GitHub, etc... - con datos manipulados que simulan ser Objetos con Datos en el Agente IA. Para hacer esto, hacen inyección de datos con separadores de información, como se ve en la imagen siguiente.
Como se puede ver en la imagen, el Agente IA llama a una herramienta de lectura de datos inseguros, como una página web, o a la lista de correos electrónicos entregada por un MCP. Y en uno de esos correos se han inyectado caracteres para formar un Metadato que representa a un Objeto e-mail. Es decir, si miráis el "Body" del correo, veis que han inyectado un .\"} que cierra el formato del primer Objeto e-mail para luego comenzar a inyectar un Objeto e-mail completo, codificando el mensaje con sus metadatos. El resultado final es que el Agente IA entiende que ha recibido 2 Objetos e-mail en lugar de solo 1.

Ataques de Agent Data Injection

Esto genera que un atacante pueda inyectar Objetos con Datos que van a ser parte de la toma de decisiones y acciones que realizará el Agente IA. Por ejemplo, en el caso siguiente, el usuario pide resumir las revisiones de un determinado producto de una tienda. El Agente IA lanza la herramienta de leer página, y esta página le entrega los datos de formato de Objetos, delimitados por corchetes y los textos entrecomillados.


Un atacante puede inyectar en una de las review los caracteres para inyectar un Objeto nuevo - como un botón - codificándolo con los caracteres con los que se construyen los metadatos de los objetos, dentro del Texto de una de las Review. En este caso un botón que no existe en la web de "Read More" con una Ref_3, que es la misma Ref_3 que tiene el botón "Buy Now". Así que, con el Agent Data Injection, se ha conseguido forzar una compra cuando el Agente IA quería simplemente "Read More".
En el siguiente ejemplo se hace buscando en la Knowledge Base, donde se busca información sobre como solucionar un problema, y la herramienta devuelve el objeto con la respuesta que resuelve el problema. Si en esa respuesta de produce un Agent Data Injection, esto se puede manipular.
El atacante inyecta un comentario que inyecta un objeto completo con una pregunta y una respuesta completa, pero cuya respuesta es maliciosa, formateando con los delimitadores de los metadatos el objeto malicioso.
Al final, estos ataques lo que hacen es buscar meter en el conjunto de datos que utiliza el Agente IA, datos como si fueran objetos con sus metadatos devueltos por la herramienta, haciendo inyección de delimitadores para formatear los objetos. Muy interesante.

Por supuesto, es una técnica de inyección basada en la no satinización de los datos que tenemos en los modelos de IA, y esta técnica de Agente Data Injection es a Prompt Injection, como lo son los Connection String Parameter Pollution Attacks a las técnicas de SQL Injection. Mismo concepto, diferente manera de explotar, diferentes objetivos. 

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares