A medida que las aplicaciones de inteligencia artificial pasan de ser simples modelos lingüísticos que responden preguntas a "agentes" (Agents) capaces de realizar tareas reales como ejecutar comandos, instalar paquetes y leer archivos, ha surgido un nuevo desafío de seguridad. Estos agentes, que a menudo operan basándose en datos obtenidos de Internet, actúan como "código no confiable" (Untrusted Code) con acceso a datos confidenciales, lo que hace que su ejecución en entornos de producción sea un riesgo significativo a menos que se aíslen cuidadosamente.
¿Qué es el proyecto OpenShell?
OpenShell, un proyecto Sandbox de la fundación CNCF iniciado por NVIDIA, es una solución para proporcionar un entorno de ejecución aislado (Runtime) para estos agentes. El proyecto se basa en la idea de un "supervisor" (Supervisor) confiable que opera fuera del entorno de aislamiento, tomando decisiones sobre lo que el agente puede acceder basándose en políticas predefinidas a través de archivos YAML. OpenShell proporciona cuatro niveles fundamentales de control:
- Sistema de archivos (Filesystem): Utilizando la tecnología Landlock, se definen las rutas que el agente puede leer o escribir, evitando el acceso a archivos críticos del sistema.
- Procesos (Process): El agente se ejecuta como un usuario no root con la aplicación del protocolo seccomp para restringir las llamadas al sistema.
- Red (Network): El tráfico externo se bloquea de forma predeterminada, con la posibilidad de permitirlo basándose en reglas precisas que incluyen el nombre del ejecutable, el host, el puerto e incluso el método de solicitud HTTP.
- Datos confidenciales (Credentials): El agente no ve las claves API reales, sino "marcadores de posición" (Placeholders), donde el supervisor los reemplaza por las claves reales solo cuando es necesario y para las entidades autorizadas.
Integración con Kubernetes y capacidades avanzadas
A diferencia de las soluciones que intentan eludir la arquitectura de Kubernetes, OpenShell se basa en el proyecto Agent Sandbox de SIG Apps. Los agentes aparecen en el sistema como objetos familiares de Kubernetes como Pods, Services y Secrets. La ventaja fundamental aquí es la capacidad de OpenShell para proporcionar visibilidad a nivel de capa 7 (L7); mientras que las políticas de red tradicionales (NetworkPolicy) pueden permitir que un Pod acceda a un sitio específico, OpenShell puede determinar si un comando curl tiene permiso para leer datos de GitHub pero se le prohíbe crear (POST) nuevos problemas (Issues).
Comparación técnica: OpenShell frente a Agent Substrate
En el panorama destaca otro proyecto de la CNCF llamado Agent Substrate, y la diferencia fundamental entre ambos radica en la filosofía de diseño:
- OpenShell: Se centra en la seguridad y el control preciso. Es la opción ideal para agentes que necesitan acceder a sistemas de producción y requieren políticas estrictas para cada solicitud (Per-request policy).
- Agent Substrate: Se centra en la escalabilidad y la reducción de costos. Se basa en suspender (Suspending) a los agentes inactivos en lugar de asignar un Pod completo para cada agente, lo que lo hace adecuado para modelos que requieren alta densidad y bajo costo.
Las proyecciones técnicas sugieren la posibilidad de integrar ambos proyectos en el futuro, de modo que OpenShell proporcione las políticas de control, mientras que Substrate proporcione la eficiencia de aislamiento y escalabilidad.
¿Por qué es importante este desarrollo para los ingenieros de plataformas?
OpenShell representa un puente necesario entre la flexibilidad de la inteligencia artificial y el rigor de la seguridad en la computación en la nube. Para los administradores de Kubernetes, ya no es suficiente aislar los contenedores (Containers) tradicionales; se ha vuelto esencial controlar el comportamiento del "agente inteligente" dentro del contenedor. A través de la integración con herramientas como Kyverno, los ingenieros pueden imponer políticas de admisión (Admission Control) que garanticen que los agentes operen solo con imágenes (Images) específicas y confiables, estableciendo límites para los recursos de procesamiento y memoria, lo que asegura que un agente de IA no se convierta en una fuente de amenaza de seguridad o en un consumo excesivo de los recursos del clúster (Cluster).