Un SaaS sin equipo de seguridad puede pasarle la rutina de seguridad a un agente de AI sin perder el control sobre ella. Azion Platform bloquea ataques en tiempo real, y un agente de codificación programado, como Claude Code, lee los eventos de tráfico y bloquea IP abusivas con fecha de vencimiento. Tú decides hasta dónde llega el agente, ya que Azion limita su acceso con su token y tú defines en el archivo de instrucciones cuánto dura cada bloqueo y lo que necesita tu aprobación.
En un equipo pequeño, la seguridad suele perder frente a la próxima feature. Nadie tiene una tarde libre para revisar logs del WAF, y el ataque suele aparecer justo en la semana del lanzamiento. En la práctica, la protección se queda en el default, y alguien solo revisa los eventos después de que un cliente se queja.
Entregarle todo a un agente, sin límites, cambia un problema por otro. Un agente con acceso amplio a la cuenta puede equivocarse a escala, y te enteras después. Por eso, el camino que funciona es dividir el trabajo, dejando la rutina al agente mientras tú defines las reglas del juego y apruebas lo que cambia la política.
¿Usar un agente de AI en la seguridad significa perder el control?
No, siempre que el acceso del agente esté limitado en la plataforma, y no solo por sus instrucciones. En Azion, el agente actúa con el token que tú creaste, que solo da acceso a los recursos que habilitaste, como las Network Lists. La lista en la que escribe, la fecha de vencimiento de cada bloqueo y lo que necesita tu aprobación se definen en sus instrucciones y en las herramientas que le habilitas, y cada solicitud bloqueada queda registrada en Real-Time Events.
Cada parte del sistema tiene un papel distinto:
| Quién | Qué hace | Cuándo actúa |
|---|---|---|
| Azion Platform | Mitiga DDoS, bloquea ataques como SQL injection y XSS en el WAF, aplica rate limiting, clasifica bots y aplica los permisos del token del agente | En la propia solicitud, en el data center que la recibe |
| Agente de AI programado | Lee los eventos, identifica IP abusivas, las bloquea con fecha de vencimiento y envía un resumen | En cada ejecución, con el intervalo que tú definas |
| Tú | Defines qué puede hacer el agente, sigues los resúmenes y apruebas los cambios en la política de seguridad | Una vez en la configuración, y después a tu ritmo |
El agente tampoco está en el camino de la solicitud, así que si falla o se retrasa, el tráfico sigue pasando por el Firewall de Azion con las mismas reglas de antes. Si interpreta mal un evento, puede bloquear una IP legítima, pero no modifica reglas del Firewall ni del WAF, y las preguntas frecuentes muestran cómo deshacer el bloqueo.
¿Qué bloquea Azion por sí sola, sin agente?
La primera capa no depende de AI, porque DDoS Protection, WAF, rate limiting y Bot Manager deciden cada solicitud en el data center que la recibe, y el bloqueo no espera a que nadie despierte.
Este post parte de una app que ya está detrás de Azion con estas protecciones activadas. Si la tuya todavía no lo está, el camino está en el post Cómo proteger un SaaS que empezó a sufrir ataques, sin migrar ni reescribir nada.
¿Qué controles te brinda Azion sobre el agente de AI?
Estos controles definen y registran lo que hace el agente:
- El agente se conecta a los MCP servers de Azion con un token personal, y es el token el que decide qué pueden cambiar las herramientas de escritura. La documentación de los MCP servers indica limitar el token a los recursos que el agente necesita. En Azion, el acceso de cada usuario a la cuenta se define en Teams Permissions. Crea un usuario solo para el agente en Users Management y agrégalo a un equipo con únicamente View Real-Time Events, para leer los eventos, y View Network Lists y Edit Network Lists, para leer y escribir en las Network Lists. El token del agente se genera con ese usuario, y así el agente no usa el token de quien gestiona la cuenta.
- El token personal tiene fecha de vencimiento, de 1 día a 1 año o una fecha que tú eliges, y no se puede modificar después de creado. Prefiere una vigencia corta, renueva el token antes de que venza y configura una alerta para cuando el job falle. Para revocar el acceso del agente, basta con eliminar el token.
- Cada IP entra en la lista con una fecha de vencimiento, y en cada ejecución el agente vuelve a escribir la lista, lo que descarta los elementos vencidos. Es ese ciclo el que termina un bloqueo equivocado, como se explica más adelante.
- Toda herramienta de los MCP servers que crea, modifica o elimina acepta
dry_run, que devuelve la solicitud exacta a la API sin enviarla. En las primeras semanas, el agente solo muestra lo que haría, y tú lo revisas. - Cada solicitud bloqueada aparece en Real-Time Events con la IP, la ruta y el status 403. Junto con el log del job, eso muestra por qué la IP entró en la lista y qué pasó con sus solicitudes.
Los controles funcionan en dos capas. En Azion, el equipo del agente define a qué tipo de recurso tiene acceso, y el permiso Edit Network Lists vale para todas las listas de la cuenta. En el propio agente, el archivo de instrucciones define en qué lista escribe y cuándo usa dry_run, y un conjunto cerrado de herramientas habilitadas define lo que puede llamar, que son create_graphql_query de observe, get_network_list y update_network_list de secure y las que envían el resumen. En el modo no interactivo de Claude Code (claude -p), una herramienta que necesita aprobación solo se ejecuta si está habilitada, por ejemplo en --allowedTools; las demás se rechazan. La action de GitHub ejecuta Claude Code en ese mismo modo.
¿Cómo monitorea el agente de AI el tráfico del SaaS?
El agente lee el Real-Time Events de tu cuenta en cada ejecución. Se ejecuta en modo no interactivo en un job programado, por ejemplo en GitHub Actions, y sigue un archivo de instrucciones versionado en el repositorio.
Dos MCP servers hacen el trabajo. En observe, la herramienta create_graphql_query escribe una query GraphQL a partir de un objetivo en lenguaje natural y la ejecuta en tu cuenta, con la fuente de datos real-time-events. En secure, la herramienta update_network_list escribe los elementos de la lista de bloqueo.
Los datos vienen del dataset workloadEvents, el mismo de Real-Time Events. Cada solicitud se puede consultar entre 20 y 40 segundos después de ocurrir y se conserva durante 7 días. Estos son los campos que más le interesan al agente:
remoteAddress: la IP que hizo la solicitud.requestUriyhost: la ruta y el dominio atacados.status: el código HTTP, donde 429 indica rate limiting y 403 indica una regla Deny.wafBlock,wafMatchywafAttackFamily: si el WAF bloqueó la solicitud, las infracciones encontradas y la familia del ataque, como SQL injection o XSS.
Con eso, el agente responde las preguntas que harías si tuvieras tiempo, como qué IP recibieron más 429 en el login, qué rutas concentran bloqueos del WAF y si alguna IP aparece en los dos resultados.
¿Cómo bloquea IP el agente sin tocar la política de seguridad?
Escribiendo en una Network List, sin tocar las reglas del Firewall. Una Network List es una lista de IP, ASN o países que las reglas del Firewall consultan, con hasta 20,000 elementos. La regla que bloquea a quien está en la lista es tuya. La creas una vez en el Firewall, en Console, y el token del agente no tiene permiso para cambiarla. El agente solo modifica el contenido de la lista, que escribe directamente por la API, con el MCP server secure.
La regla está en el Rules Engine del Firewall, con el criterio Network matches y la Network List de bloqueos elegida por nombre, y con el comportamiento Deny (403 Forbidden). Para que el Firewall use Network Lists, el módulo Network Shield tiene que estar activado. Las listas de tipo IP/CIDR aceptan direcciones IPv4 e IPv6, y los demás criterios y comportamientos están en la documentación del Rules Engine del Firewall.
En las Network Lists de tipo IP/CIDR, la fecha de vencimiento se escribe después de la dirección, con el prefijo --LT y una hora UTC:
203.0.113.45 --LT2026-10-29T18:00:00Z198.51.100.0/24 --LT2026-10-30T06:00:00ZEn Azion, los elementos vencidos salen de la lista la próxima vez que se guarda, como explica la documentación de Network Lists, por eso en cada ejecución el agente escribe la lista completa, incluso cuando no hay IP nuevas.
El cambio en la lista vale en cuanto se guarda, y un cambio en los elementos de una lista que ya usan las reglas llega al tráfico en pocos segundos. A partir de ahí, las solicitudes de esa IP reciben 403 y aparecen en Real-Time Events con ese status; con Debug Rules activado, el campo stacktrace también muestra la regla que las bloqueó, como explica el post sobre proteger un SaaS sin migrar.
¿Cuándo actúa el agente por su cuenta y cuándo pide aprobación?
El agente actúa por su cuenta en lo que es reacción y pide aprobación en lo que es política. Bloquear una IP por un tiempo limitado es reacción, así que lo hace y te avisa. Cambiar el rate limiting, activar el modo de bloqueo del WAF o crear una regla nueva es política, así que lo propone en el resumen, y tú decides si lo aplicas en Console.
Un archivo de instrucciones como este define esa frontera:
# Rutina de seguridad del SaaS (se ejecuta cada 15 minutos)
1. Consulta workloadEvents desde la ejecución anterior para app.tusaas.com.2. Bloquea en la Network List "bloqueo-temporal-agente", durante 6 horas, las IP con más de 200 respuestas con status 429 en /login o más de 20 bloqueos del WAF.3. Nunca bloquees IP de la lista "clientes-conocidos" ni rangos mayores que /24.4. Vuelve a escribir la lista completa en cada ejecución, incluso sin IP nuevas, manteniendo el elemento fijo creado junto con la lista.5. Envía un resumen al canal #seguridad: IP bloqueadas, motivo y ruta.6. Si el mismo patrón aparece en 3 ejecuciones seguidas, propón en el resumen una regla permanente. No la apliques.7. No modifiques el Firewall, el WAF ni las reglas por la API. Solo la Network List.Los números del archivo son ejemplos, que hay que calibrar con el tráfico real de tu app. Con el resumen, sigues lo que hizo el agente sin abrir Console. En lugar de enterarte del ataque por un cliente, lees en Slack que se bloquearon 14 IP en el login a las 3 a. m. y decides, mientras tomas el café, si apruebas la regla permanente que sugirió el agente.
Paso a paso para usar un agente de AI en la seguridad del SaaS sin perder el control
- Pon la app detrás de Azion, con WAF, rate limiting y Bot Manager, como muestra el post sobre proteger un SaaS sin migrar.
- En Console, en Network Lists, crea una lista de tipo IP/CIDR llamada
bloqueo-temporal-agente, con192.0.2.1en el campo List. Esa dirección está reservada para documentación y queda en la lista como elemento fijo, sin fecha de vencimiento, porque una Network List necesita al menos un elemento. Si quieres, crea también una listaclientes-conocidoscon las IP de tus clientes, que el agente consulta antes de bloquear. - En el Firewall de la app, verifica en la pestaña Main Settings que Network Shield esté activado. En la pestaña Rules Engine, crea una regla con el criterio
Networkmatchesbloqueo-temporal-agentey el comportamientoDeny (403 Forbidden). - Para ver en el
stacktracela regla que bloqueó una solicitud, activa la opción Debug Rules en la pestaña Main Settings del mismo Firewall. - En el menú de la cuenta, en Teams Permissions, crea un equipo con View Real-Time Events, View Network Lists y Edit Network Lists. En Users Management, crea un usuario solo para el agente con un e-mail que controles, elige ese equipo en el campo Teams y activa la cuenta desde el e-mail de invitación.
- Entra en Console con el usuario del agente y, en Personal Tokens, en el menú de la cuenta, genera el token personal con una vigencia corta. Anota la fecha de vencimiento para renovar el token antes de esa fecha.
- Crea un repositorio en GitHub para el agente y agrega en él el archivo de instrucciones, con las reglas de bloqueo (cuántas respuestas 429 o bloqueos del WAF llevan una IP a la lista), cuánto dura cada bloqueo, las excepciones, el canal del resumen y la orden de usar
dry_runen las primeras semanas. - Prepara el repositorio para el agente.
- Instala la Claude GitHub App y dale al workflow el permiso
id-token: write, que la action usa para autenticarse. - Para enviar el resumen, elige una herramienta para el canal, como un MCP server de Slack.
- Guarda el token de Azion, la clave de la Claude API y el token del canal del resumen como secrets del repositorio.
- Instala la Claude GitHub App y dale al workflow el permiso
- Programa el agente en GitHub Actions con un workflow que use la action
anthropics/claude-code-action.- Usa el disparador
scheduley unpromptque le indique seguir el archivo de instrucciones. - En
claude_args, pasa un--mcp-configcon los MCP servers observe (https://observe-mcp.azion.com/mcp) y secure (https://secure-mcp.azion.com/mcp), autenticados con el encabezadoAuthorization: Tokeny el token del agente, y con el MCP server del canal del resumen. - En el mismo
claude_args, pasa un--allowedToolscon el nombre exacto de cada herramienta habilitada, en el formatomcp__<servidor>__<herramienta>, usando los nombres de servidor del--mcp-config. Por ejemplo,mcp__azion-observe__create_graphql_query,mcp__azion-secure__get_network_listymcp__azion-secure__update_network_list, además de las herramientas que el agente usa para el resumen. - Configura una alerta para cuando el workflow falle.
- Usa el disparador
- Sigue los resúmenes y ajusta las reglas de bloqueo del archivo de instrucciones. Cuando los resultados estén bien, quita del archivo la orden de usar
dry_run, y el agente empieza a escribir en la Network List de bloqueos.
Control automatizado para que te enfoques en lo que importa
Sin equipo de seguridad, quien suele descubrir el ataque es el desarrollador, por la queja de un cliente o por un pico en el panel. Con el agente, la rutina sale de tus manos, pero el control se queda contigo. Los permisos del token y las reglas del Firewall siguen valiendo en cada ejecución, porque quien los aplica es Azion.
Solo llega a ti lo que necesita una decisión, como un patrón que se repitió y se convirtió en una propuesta de regla permanente, y el resto del tiempo va al producto.
¿Necesitas ayuda con la seguridad de tu SaaS? Habla con un especialista de Azion o crea una cuenta gratis para probar el flujo con tu app.
Preguntas frecuentes
¿Cómo cuidar la seguridad de un SaaS sin equipo de seguridad? Deja la mitigación en tiempo real a la plataforma, con DDoS Protection, WAF, rate limiting y Bot Manager, y pásale la rutina a un agente de AI programado, que lee los eventos, bloquea IP abusivas por tiempo limitado y avisa. Tú defines los permisos y las reglas de bloqueo del agente y apruebas los cambios en la política.
¿Es seguro usar un agente de AI en la seguridad de mi SaaS? Puede serlo, cuando el acceso del agente está limitado en la plataforma y lo que hace está definido en sus instrucciones. En Azion, actúa solo con los permisos del token, que lo limitan a las Network Lists, y sus instrucciones definen en qué lista escribe y cuánto dura cada bloqueo. Cada solicitud bloqueada queda registrada en Real-Time Events. Los cambios en las reglas del Firewall y del WAF quedan contigo, que aplicas en Console lo que propone el agente.
¿Cómo limitar los permisos de un agente de AI en Azion? Limita el token que usa el agente. Crea en Users Management un usuario solo para el agente, agrégalo a un equipo de Teams Permissions con lo mínimo necesario, como View Real-Time Events, View Network Lists y Edit Network Lists, y genera con él un token personal de vigencia corta. Así, el agente no usa el token de quien gestiona la cuenta, y para revocar el acceso basta con eliminar ese token.
¿Qué pasa si el job del agente deja de ejecutarse? El tráfico sigue protegido, porque el agente no está en el camino de la solicitud, y el Firewall sigue aplicando las mismas reglas. Los bloqueos que ya están en la lista siguen vigentes, por eso renueva el token antes de que venza y configura una alerta para las fallas del job. Para desbloquear una IP al instante, abre la Network List en Console, borra la línea de esa IP en el campo List y guarda.
¿Cómo bloquear IP automáticamente en Azion? Con una Network List de tipo IP/CIDR referenciada por una regla Deny en el Firewall. El agente escribe las IP en la lista por medio del MCP server secure, cada una con fecha de vencimiento (--LT), y vuelve a escribir la lista en cada ejecución para descartar las vencidas. El cambio aplica en cuanto se guarda la lista.
¿Y si el agente bloquea a un cliente real? El bloqueo termina en la primera ejecución del agente después de la fecha de vencimiento. Para desbloquear al instante, borra la línea de la IP en la Network List, en Console, y agrega la IP a la lista clientes-conocidos para que el agente no la bloquee de nuevo. Una lista de excepciones con las IP de clientes conocidos, que el agente consulta antes de bloquear, reduce ese riesgo.
¿Qué agente de AI puedo usar? Los MCP servers de Azion funcionan con clientes como Claude Code, Cursor, Codex y Gemini CLI. Para ejecutarse de forma programada, el cliente necesita un modo no interactivo, como el claude -p de Claude Code.
¿Cuánto tiempo pasa entre el ataque y el bloqueo del agente? Es la suma de 20 a 40 segundos para que el evento aparezca en Real-Time Events, del intervalo hasta la siguiente ejecución del agente y de pocos segundos para que el cambio en la Network List llegue al tráfico. Mientras tanto, rate limiting, WAF y DDoS Protection siguen actuando en la propia solicitud.
