À medida que as aplicações de inteligência artificial evoluem de simples modelos de linguagem que respondem a perguntas para "agentes" (Agents) capazes de executar tarefas reais, como rodar comandos, instalar pacotes e ler arquivos, um novo desafio de segurança surgiu. Esses agentes, que frequentemente operam com base em dados obtidos da internet, são considerados "códigos não confiáveis" (Untrusted Code) com acesso a dados sensíveis, tornando sua execução em ambientes de produção um risco significativo, a menos que sejam isolados com precisão.
O que é o projeto OpenShell?
O OpenShell, um projeto de Sandbox da fundação CNCF iniciado pela NVIDIA, é uma solução para fornecer um ambiente de execução isolado (Runtime) para esses agentes. O projeto baseia-se na ideia de um "supervisor" (Supervisor) confiável que opera fora do ambiente de isolamento, tomando decisões sobre o que o agente pode acessar com base em políticas predefinidas via arquivos YAML. O OpenShell oferece quatro níveis fundamentais de controle:
- Sistema de arquivos (Filesystem): Usando a tecnologia Landlock, são definidos os caminhos que o agente pode ler ou escrever, impedindo o acesso a arquivos sensíveis do sistema.
- Processos (Process): O agente é executado como um usuário não root (Non-root) com a aplicação do protocolo seccomp para restringir chamadas de sistema.
- Rede (Network): O tráfego externo é bloqueado por padrão, com a possibilidade de permitir acesso baseado em regras precisas que incluem o nome do executável, host, porta e até mesmo o método de solicitação HTTP.
- Dados sensíveis (Credentials): O agente não vê as chaves de API reais, mas sim "espaços reservados" (Placeholders), onde o supervisor as substitui pelas chaves reais apenas quando necessário e para as entidades autorizadas.
Integração com Kubernetes e capacidades avançadas
Ao contrário de soluções que tentam contornar a arquitetura do Kubernetes, o OpenShell baseia-se no projeto Agent Sandbox do SIG Apps. Os agentes aparecem no sistema como objetos familiares do Kubernetes, como Pods, Services e Secrets. A vantagem fundamental aqui é a capacidade do OpenShell de fornecer visibilidade no nível da camada sete (L7); enquanto as políticas de rede tradicionais (NetworkPolicy) podem permitir que um Pod acesse um site específico, o OpenShell pode determinar se um comando curl tem permissão para ler dados do GitHub, mas está proibido de criar (POST) novos problemas (Issues).
Comparação técnica: OpenShell vs. Agent Substrate
Outro projeto da CNCF que se destaca no cenário é o Agent Substrate, e a diferença fundamental entre eles reside na filosofia de design:
- OpenShell: Foca em segurança e controle granular. É a escolha ideal para agentes que precisam acessar sistemas de produção e exigem políticas rigorosas para cada solicitação (Per-request policy).
- Agent Substrate: Foca em escalabilidade e redução de custos. Baseia-se na suspensão (Suspending) de agentes ociosos em vez de alocar um Pod completo para cada agente, tornando-o adequado para modelos que exigem alta densidade e baixo custo.
As previsões técnicas indicam a possibilidade de integrar os dois projetos no futuro, de modo que o OpenShell forneça as políticas de controle, enquanto o Substrate forneça a eficiência de isolamento e escalabilidade.
Por que esse desenvolvimento é importante para engenheiros de plataforma?
O OpenShell representa uma ponte necessária entre a flexibilidade da inteligência artificial e o rigor da segurança em computação em nuvem. Para administradores de Kubernetes, não é mais suficiente isolar contêineres (Containers) tradicionais; tornou-se essencial controlar o comportamento do "agente inteligente" dentro do contêiner. Através da integração com ferramentas como o Kyverno, os engenheiros podem impor políticas de admissão (Admission Control) que garantem que os agentes operem apenas com imagens (Images) específicas e confiáveis, estabelecendo limites para recursos de processamento e memória, o que garante que um agente de IA não se torne uma fonte de ameaça à segurança ou consuma excessivamente os recursos do cluster.