Nota do editor:esta é uma das postagens que fazem parte de uma série sobre os recursos únicos encontrados no Google Kubernetes Engine (GKE) Advanced.
Há um ditado entre especialistas em segurança: contêineres não contêm. Os pesquisadores da área de segurança identificaram vulnerabilidades que permitem que um invasor corrompa um contêiner e tenha acesso ao sistema operacional do host compartilhado (SO), também conhecido como "escape de contêiner". Para aplicativos que usam código não confiável, o escape de contêiner é uma parte importante do perfil de ameaça.
No Google Cloud Next 2019, anunciamos o GKE Sandbox na versão Beta, um novo recurso no Google Kubernetes Engine (GKE) que garante mais segurança e isolamento para seus contêineres adicionando uma camada extra entre eles e o sistema operacional do host. Com o acesso para o público em geral, o GKE Sandbox será disponibilizado como parte do próximo GKE Advanced, que oferece recursos aprimorados para ajudar você a criar aplicativos de produção exigentes, além do nosso serviço gerenciado do Kubernetes.
Veja um exemplo do que aconteceria com um escape de contêiner. Digamos que você tenha um aplicativo de software como serviço (SaaS) que execute cargas de trabalho de aprendizado de máquina (ML) para usuários. Imagine que um invasor faça upload de um código malicioso que gera um escalonamento de privilégios para o sistema operacional do host. A partir desse sistema operacional, o invasor acessa o modelo e os dados das outras cargas de trabalho do ML, quando o modelo e os dados não são dele.
O GKE Sandbox é baseado no gVisor, o tempo de execução do sandbox de contêiner de código aberto que lançamos no ano passado. Originalmente, criamos o gVisor para oferecer proteção contra um comprometimento do host ao executar um código arbitrário e não confiável, enquanto ainda integrava a nossa infraestrutura baseada em contêiner. Como usamos o gVisor para aumentar a segurança das cargas de trabalho internas do Google, ele se beneficia continuamente do nosso conhecimento e da experiência na execução de contêineres em escala em um ambiente que prioriza a segurança. Além disso, usamos o gVisor nos serviços do Google Cloud Platform (GCP), como o ambiente padrão do App Engine, Cloud Functions, Cloud ML Engine e, mais recentemente, o Cloud Run.
O gVisor funciona fornecendo um kernel do sistema operacional independente para cada contêiner. Assim os aplicativos interagem com o ambiente virtualizado fornecido pelo kernel do gVisor em vez do kernel do host. O gVisor também gerencia e coloca restrições nas operações de arquivos e de rede, garantindo que haja duas camadas de isolamento entre o aplicativo com contêiner e o sistema operacional do host. Ao reduzir e restringir o uso do kernel do host, os invasores têm uma superfície de ataque menor e precisam contornar o mecanismo de isolamento do contêiner.
O GKE Sandbox usa o gVisor, abstrai os componentes internos e o apresenta como um serviço fácil de usar. Ao criar um pod, basta escolher o GKE Sandbox e continuar a interagir com seus contêineres como você faria normalmente. Não é necessário aprender um novo conjunto de controles nem um novo modelo mental.
Além de impedir possíveis ataques, o GKE Sandbox ajuda as equipes que executam clusters de vários locatários, como provedores de SaaS, que geralmente executam códigos desconhecidos ou não confiáveis. Existem muitos componentes para multilocatário, e tecnologias como o GKE Sandbox dão o primeiro passo para oferecer recursos multilocatário mais seguros.
Como os usuários estão aumentando a proteção de contêineres com o GKE Sandbox
A criadora de refinaria de dados Descartes Labs aplica inteligência de máquina a conjuntos de dados massivos. “Na Descartes Labs, temos diversos dados de sensoriamento remoto medindo a Terra e queríamos permitir que nossos usuários construíssem modelos personalizados exclusivos para agregar valor às próprias organizações”, disse Tim Kelton, cofundador e chefe de SRE, Segurança e Operações na nuvem na Descartes Labs. “Como um provedor SaaS multilocatário, ainda queríamos aproveitar a programação do Kubernetes para gerar otimizações de custo, mas criar camadas de segurança adicionais sobre as cargas de trabalho individuais dos usuários. O GKE Sandbox fornece uma camada adicional de isolamento rápida de implantar, escalonar e que apresenta um bom desempenho nas cargas de trabalho do ML que executamos para nossos usuários."
Também ouvimos dos clientes iniciais do Shopify como eles estão usando o GKE Sandbox. “A Shopify está sempre procurando maneiras mais seguras de administrar as lojas dos nossos comerciantes", disse Catherine Jones, engenheira de segurança de infraestrutura da Shopify. “Hospedar mais de 800 mil lojas e executar códigos de clientes (como modelos personalizados e aplicativos de terceiros) exige muito trabalho para garantir que uma vulnerabilidade em um aplicativo não possa ser explorada para afetar outros serviços em execução no mesmo cluster.”
Jones e a equipe dela desenvolveram testes de prova de conceito para usar o GKE Sandbox. Agora eles planejam atualizar os clusters existentes e ativá-lo a todos os novos clusters para desenvolvedores. "O kernel userland do GKE Sandbox atua como um firewall entre aplicativos e o kernel do nó do cluster, impedindo que um aplicativo comprometido explore outros aplicativos por meio dele", disse Jones. “Dessa forma, poderemos oferecer mais segurança aos nossos mais de 600 aplicativos sem afetar os fluxos de trabalho dos desenvolvedores nem exigir que nossa equipe de segurança mantenha perfis seccomp e apparmor personalizados para cada aplicativo individual. Além disso, como o GKE Sandbox é baseado no projeto do gVisor de código aberto, podemos resolver problemas com mais eficiência e contribuir com código para oferecer suporte aos nossos casos de uso conforme necessário.”

Primeiros passos com o GKE Sandbox
Quando dizemos que a execução de um cluster com o GKE Sandbox é fácil, estamos falando sério. O comando a seguir cria um pool de nós com o GKE Sandbox ativado, que você pode anexar ao cluster existente.
Para executar seu aplicativo no GKE Sandbox, basta definir runtimeClassName: gvisor na sua especificação de pod do Kubernetes. O exemplo a seguir cria uma implementação do Kubernetes para ser executada em um nó com o GKE Sandbox ativado.
Para uma explicação mais detalhada sobre o GKE Sandbox, confira esta documentação.
Aplicativos ideais para o GKE Sandbox
O GKE Sandbox usa o gVisor de maneira eficiente, mas a execução em um sandbox ainda pode ter custos adicionais. A sobrecarga de memória geralmente é da ordem de dezenas de megabytes, enquanto a sobrecarga de CPU depende mais da carga de trabalho. Por isso, o GKE Sandbox é adequado para executar aplicativos de computação e memória, como:
  • Microsserviços e funções: Em geral, os microsserviços e as funções criados com componentes de terceiros e de código aberto têm níveis variados de confiança. O GKE Sandbox permite uma proteção adicional e aprimorada, que preserva os baixos tempos de rotação e a alta densidade de serviço. O gVisor pode ser iniciado em menos de 150 ms, e o consumo de memória pode ser de até 15 MB.
  • Processamento de dados: O processamento de entradas de sensores não confiáveis, mídias complexas ou formatos de dados pode exigir o uso de ferramentas ou analisadores potencialmente vulneráveis. Isolar essas atividades em serviços com sandbox pode ajudar a reduzir o risco de exploração. A sobrecarga de CPU no processamento de dados de sandbox depende da intensividade do serviço de E/S. No entanto, ela é menor que 5% para o streaming de E/S de disco e aplicativos computacionais como o FFmpeg. Outros exemplos são MapReduce, ETL (Extrair, Transformar, Carregar) e processamento de mídia.
  • Aprendizado de máquina baseado em CPU: É comum o treinamento e a execução de modelos de aprendizado de máquina envolverem grandes quantidades de dados e fluxos de trabalho complexos. Muitas vezes, os dados ou o modelo são de terceiros. Normalmente, a sobrecarga de CPU de tarefas de aprendizado de máquina vinculadas à computação no sandbox é menor que 10%.
A lista acima não é completa, e o GKE Sandbox funciona com uma ampla variedade de aplicativos. Lembre-se de que a validação extra para o sistema de arquivos e as operações de rede podem aumentar sua sobrecarga. Recomendamos que você sempre teste seu caso de uso e aplicativos específicos com o GKE Sandbox.
Use agora o GKE Sandbox
Para começar a usar o GKE Sandbox ainda hoje, visite nossa página de recursos aqui. Para saber mais, confira nossas sessões do GKE Sandbox e do gVisor:
Assim que o GKE Sandbox for disponibilizado para o público em geral, solicite uma avaliação gratuita do GKE Advanced que será lançada em breve.