Artículos

Arquitectura Zero-Trust: la máquina en la nube que ejecuta los agentes no guarda credenciales

La mitad del servidor que ejecuta código generado por modelos está físicamente separada de la base de datos y de las claves de descifrado. Un agente que escape del contenedor solo encontrará archivos de proyecto sin credenciales que robar.

Un agente que logre escapar de su contenedor no debe encontrar nada que merezca la pena robar. Por ello, dividimos el sistema en dos: la mitad que ejecuta los agentes carece de conexión a la base de datos y de claves de descifrado.

A locked boundary. The database and the key stand on the control side; the sandbox holds only agents and a working tree.controlsandboxdatabasekeynever crosses/workspace
Todo lo que puede descifrar datos reside en un lado. En el otro solo están los agentes y el código del proyecto.

Dos roles independientes para un aislamiento estricto

La parte de autenticación gestiona la base de datos en una red privada sin puertos públicos. La parte de ejecución hace correr código de modelos en un entorno aislado.

Las comprobaciones de autorización son funciones puras sin accesos a base de datos ni reloj.

export function checkFrame(access: ConnectionAccess, frame: ClientMsg["type"]): AccessCheck

Reducción de datos en los límites del sistema

Los métodos expuestos al ejecutor están estrictamente minimizados: no se transmiten hashes de contraseñas ni tokens persistentes.

Las credenciales para sincronizar con Git se solicitan bajo demanda y se eliminan de la memoria de inmediato.

La restricción estricta de datos es una propiedad de seguridad fundamental.

Arquitectura basada en roles sobre un único binario

El rol sandbox opera sin base de datos y rechaza conexiones web directas, aceptando únicamente tráfico reenviado por el plano de control.

export const ROLES = ["all", "control", "sandbox"] as const;

export function needsDatabase(role: Role): boolean {
  return role !== "sandbox";
}

export function servesBrowsers(role: Role): boolean {
  return role !== "sandbox";
}

Esta separación impide fugas de credenciales en caso de anomalías en el agente.

El aislamiento de seguridad se analiza en un sandbox en la nube para agentes, y los hallazgos en hallazgos en sandbox en la nube.

Respuestas directas

¿Dónde se guardan mis credenciales de GitHub cuando las usa un agente?

Cifradas en el plano de control. La máquina que ejecuta los agentes no posee base de datos ni claves de descifrado.

¿Qué puede alcanzar un agente que escape de su contenedor?

Únicamente el directorio de trabajo del proyecto y las salidas de red autorizadas. Ningún dato de cuentas ni claves maestras.

¿Es más seguro que un contenedor blindado?

Es complementario: el blindaje reduce la probabilidad de escape y la ausencia de secretos elimina el valor de dicho escape.