Saltar al contenido principal
Un agente que tiene más capacidad de la que necesita su tarea es una responsabilidad esperando ser explotada. Roba su clave, engáñalo con una instrucción inyectada o compromete una dependencia — y todo lo que esa clave puede hacer está ahora en manos del atacante. Este es el problema de la agencia excesiva, y se combina con un patrón estrechamente relacionado llamado el deputy confundido: el agente no está comprometido directamente, está engañado para usar su autoridad legítima en nombre de un atacante. Ambos problemas comparten una causa raíz: la clave que tiene un agente comprometido es demasiado poderosa para la tarea que realiza. La defensa es la mínima agencia — da a cada agente exactamente la capacidad que requiere su tarea, y nada más.
Esta página trata sobre los controles del gateway que limitan el radio de impacto. El contexto del modelo de amenazas upstream — por qué los agentes son objetivos de alto valor y cómo funciona la inyección — está en Modelo de amenazas. Para el control coincidente que gobierna las llamadas a herramienta individuales peligrosas, ver Llamadas a herramienta peligrosas.

1. Qué hace a un agente excesivamente capaz

Cuando cada agente en un espacio de trabajo comparte una clave, o cuando una clave se emite una vez y nunca se revisa, la capacidad se desplaza hacia arriba:
  • Modelos sin restricciones — el agente puede llamar a cualquier modelo en el espacio de trabajo, incluyendo los caros o muy capaces que nunca necesita.
  • Sin techo de gasto — un bucle descontrolado, una inyección desencadenada o un ataque de facturación puede agotar el saldo del espacio de trabajo antes de que te des cuenta.
  • Sin expiración — una clave emitida durante un sprint sigue siendo válida un año después, mucho después de que el agente para el que se acuñó se haya retirado.
  • Sin restricción de IP — la credencial funciona desde cualquier lugar, así que una clave filtrada no tiene límite geográfico.
  • Sin lista de permitidos de herramientas — el agente puede invocar cualquier herramienta, incluso las que no están relacionadas con su función.
Cualquiera de estas por sí sola amplía el radio de impacto. Combinadas, un solo agente comprometido puede hacer todo lo que puede hacer un admin del espacio de trabajo — llamar al modelo más poderoso, gastar el saldo completo, alcanzar cada herramienta.

2. El patrón del deputy confundido

El deputy confundido es una especialización de la agencia excesiva. El agente no está secuestrado; está convencido. Una carga de inyección de prompts en una página web recuperada, documento o resultado de herramienta dice al agente que tome una acción que está legítimamente autorizado a realizar — mover dinero, eliminar un registro, enviar un mensaje — en nombre del atacante. El agente actúa. Estaba autorizado para hacer exactamente eso. La verificación de autorización pasa. El daño está hecho. La defensa requiere dos cosas trabajando juntas:
  1. Alcance estrecho — el agente no puede ser engañado para hacer algo que su tarea nunca pretendió, porque no está autorizado para hacerlo en absoluto.
  2. Aprobación humana para acciones irreversibles — incluso dentro del alcance autorizado, una llamada de alto riesgo requiere que un humano confirme antes de ejecutarse.

3. Defensa en profundidad: las cuatro capas

OrcaRouter aplica la mínima agencia a través de cuatro controles independientes que se componen en una sola clave API. Ninguno requiere un cambio de código en tu agente.

Capa 1 — Clave con alcance (identidad + límites fijos)

Cada agente debe tener su propia clave API. La clave lleva límites fijos que el gateway aplica independientemente de lo que el agente solicite:
CampoQué restringe
model_limitsEl conjunto exacto de modelos que esta clave puede llamar. Una solicitud para cualquier otro modelo se rechaza antes de salir del gateway.
allow_ipsLas solicitudes de cualquier dirección que no esté en esta lista se rechazan en la capa de autenticación. Vacío significa sin restricción de IP.
credit_limit_usdTope de gasto de por vida en USD. 0 significa ilimitado. El gateway aplica esto contra el gasto acumulado en la clave.
expired_timeMarca de tiempo de expiración absoluta. -1 significa que la clave nunca expira. Establece esto al ciclo de vida del despliegue del agente.
environmentUna etiqueta (prod, staging, dev) para organizar claves y filtrar logs de auditoría.
Estos límites se aplican a nivel de clave — antes de cualquier política, antes de cualquier llamada al modelo. Son el límite más externo del radio de impacto.

Capa 2 — Política del firewall (lista de permitidos de herramientas)

Adjunta una política de firewall a la clave vía firewall_policy_id. La política gobierna cada llamada a herramienta que emite esa clave:
  • Escribe reglas que permitan los nombres de herramienta que el agente legítimamente usa (se soportan los globs de nombre de herramienta — p. ej. db.query*).
  • Establece el default_verdict de la política a deny para que cualquier cosa no listada explícitamente se bloquee.
  • Añade predicados de argumentos para restringir incluso las herramientas permitidas — p. ej. permite db.query solo cuando el argumento database coincide con un esquema específico.
Una clave sin adjunto de firewall hace fallback a la política por defecto del espacio de trabajo. Para agentes con necesidades estrechas de herramientas, un adjunto explícito con una política estricta siempre es preferible a depender del valor por defecto del espacio de trabajo. Ver Reglas del firewall para el lenguaje completo de coincidencia.

Capa 3 — Aprobación humana para acciones de alto riesgo (pending_approval)

Para llamadas a herramienta irreversibles o de alto valor — un despacho de pago, una eliminación de registro, un envío de email — añade una regla pending_approval. El flujo:
  1. El agente emite la llamada a herramienta. El firewall la retiene y devuelve una respuesta “retenida” que lleva un id de aprobación. La llamada no llega a la herramienta.
  2. Un revisor aprueba o rechaza fuera de banda — desde la consola (Developer+) o vía un webhook firmado con HMAC a tu propio sistema de aprobación.
  3. Tu agente hace polling del id de aprobación. Una vez aprobado, reenvía la llamada original con una cabecera X-OrcaRouter-Firewall-Approval de un solo uso. El gateway la deja pasar exactamente una vez.
El deputy confundido se detiene aquí incluso cuando el alcance es válido: un humano confirma que la acción es intencional antes de ejecutarse.

Capa 4 — Tope de coste por ejecución (cap_cost)

Una regla cap_cost deniega cualquier llamada a herramienta una vez que el gasto acumulado de la ejecución del agente supera un techo por regla (en centavos). Este es el interruptor de circuito para:
  • Bucles descontrolados desencadenados por inyección.
  • Ataques de facturación que impulsan el gasto antes de que ningún humano se dé cuenta.
  • Recursión accidental en planes multi-paso.
cap_cost opera a nivel de ejecución, no a nivel de por vida de la clave — así que se restablece por invocación del agente, y una sola ejecución con mal comportamiento no puede agotar el techo credit_limit_usd de la clave.

4. Una clave de agente bien acotada — ejemplo

Un agente que resume tickets de clientes usando gpt-4o-mini y consulta una réplica de solo lectura debería verse así:
  • model_limits: ["openai/gpt-4o-mini"] — no puede escalar a un modelo más capaz o caro.
  • allow_ips: el CIDR de egress del pool de trabajadores — la clave es inerte en todas partes más.
  • credit_limit_usd: un techo semanal que coincide con el coste esperado de la tarea, con algo de margen — p. ej. 5.00.
  • expired_time: el final del sprint o período de despliegue — la clave se auto-expira sin limpieza manual.
  • environment: "prod" — aparece en filtros de log y vistas de anomalías.
  • guardrail_id: un guardrail con alcance a la sensibilidad de datos de este agente (enmascarado de PII, sin secretos en la salida).
  • firewall_policy_id: una política que permite solo db.query* y ticket.read*, veredicto por defecto deny.
Cuando este agente es engañado para exfiltrar datos vía una instrucción inyectada, el radio de impacto es: un modelo, un rango de IP, un espacio de nombres de herramienta, un techo de coste. El resto del espacio de trabajo no se ve afectado.
is_firewall_gateway marca una clave como token con alcance de gateway para las rutas de despacho MCP y hook de evaluación. Solo crea estas para agentes que conducen el firewall programáticamente — nunca para tráfico de inferencia general. Una clave de gateway en la ruta de inferencia expone rutas que las claves de propósito general nunca deberían alcanzar. Habilitar is_firewall_gateway requiere Admin+.

5. Roles requeridos

AcciónRol mínimo
Leer cualquier clave, política o evento del firewallMember
Crear o editar claves, políticas del firewall, reglasDeveloper
Aprobar una llamada a herramienta retenida desde la consolaDeveloper
Habilitar is_firewall_gateway en una claveAdmin

6. Relación con otras amenazas

La agencia excesiva es el habilitador de casi todas las demás amenazas de agentes:
  • Llamadas a herramienta peligrosas — una clave con una lista de permitidos de herramientas estricta no puede ser forzada a llamar a una herramienta que no lista, aunque la inyección tenga éxito.
  • Inyección de prompts — los límites de alcance limitan el daño que puede hacer la inyección; las puertas de aprobación bloquean las acciones irreversibles que la inyección intenta desencadenar.
  • Modelo de amenazas — el mapa completo de la superficie de ataque, mostrando dónde se sitúa la agencia excesiva respecto a otros vectores.
La mínima agencia no previene la inyección. Reduce lo que la inyección puede lograr.

Claves con alcance y políticas

La referencia completa de campos de clave, el orden de resolución y el modelo de límite del espacio de trabajo.

Firewall

Creación de políticas, veredictos, flujo de aprobación HITL y la referencia completa de la API.
La mínima agencia — una clave estrecha por agente, una lista de permitidos de herramientas estricta, un tope de gasto y aprobación humana para acciones irreversibles — es la defensa principal contra los ataques de agencia excesiva en LLMs y el patrón del deputy confundido.