Os containers sandboxed executam pods em VMs leves com kernels independentes, impedindo que escapes de container afetem os hosts.
Informações básicas
Os containers sandboxed são adequados para cenários como isolamento de aplicações não confiáveis, isolamento de falhas, isolamento de desempenho e isolamento de cargas de trabalho multilocatário. Eles aumentam a segurança com impacto mínimo no desempenho e oferecem a mesma experiência de usuário dos containers docker para recursos como logs, monitoramento e dimensionamento elástico.
Em comparação com o Kata Containers, os containers sandboxed apresentam melhorias em armazenamento, rede e estabilidade.
Arquitetura
Principais benefícios
O Sandboxed Container V2 é o runtime de container seguro de próxima geração da Alibaba Cloud, baseado em tecnologia de VM leve. Em comparação com a versão V1, ele mantém um forte isolamento enquanto reduz a sobrecarga em 90%, aumenta a velocidade de inicialização em 3 vezes e melhora a densidade por máquina em 10 vezes.
Garante forte isolamento entre sandboxes por meio de VMs leves.
Oferece compatibilidade de aplicação com containers runC tradicionais.
Entrega até 90% do desempenho de aplicações em containers runC.
Suporta montagem e compartilhamento de NAS, discos de nuvem e OSS Volumes via virtiofs. O NAS também permite anexação direta.
Proporciona uma experiência de usuário consistente com o runC para monitoramento, logs e armazenamento.
Compatível com RuntimeClass (runC e runV).
Fácil de usar, sem necessidade de vasta especialização técnica.
Apresenta maior estabilidade em comparação ao Kata Containers da comunidade.
Containers sandboxed do ACK vs. Kata Containers
|
Desempenho |
Categoria de desempenho |
Sandboxed Container V2 do ACK |
Kata Containers da comunidade |
|
Velocidade de inicialização da sandbox |
Cerca de 150 ms |
Cerca de 500 ms |
|
|
Sobrecarga adicional da sandbox |
Baixa |
Alta |
|
|
RootFS do container |
virtio-fs, Desempenho: ☆☆☆☆ |
|
|
|
Volumes do container |
HostPath/EmptyDir |
virtio-fs, Desempenho: ☆☆☆☆ |
|
|
Armazenamento em bloco de disco de nuvem |
virtio-fs, Desempenho: ☆☆☆☆ Não suporta recursos como dimensionamento online (Resize), monitoramento de I/O do container, dispositivos block/raw ou configurações de fila de disco de nuvem. |
||
|
Armazenamento de arquivos NAS |
Não suporta recursos como montagem e desmontagem Samba, lixeira, controle de capacidade Quota, monitoramento de capacidade/I/O ou dimensionamento online. |
||
|
OSS Object Storage |
virtio-fs, Desempenho: ☆☆☆☆ |
||
|
Plugin de rede |
|
Flannel |
|
|
Monitoramento e alertas |
|
Não possui métricas de monitoramento de disco e rede para pods de containers sandboxed. |
|
|
Estabilidade |
☆☆☆☆☆ |
☆☆ |
|
Casos de uso
Cenário 1: Isolar aplicações não confiáveis com containers sandboxed (runV)
-
Riscos de segurança dos containers runC
Containers que utilizam isolamento de namespace e cgroup possuem uma grande superfície de ataque.
Todos os containers em um nó compartilham o kernel do host. Se uma vulnerabilidade do kernel for explorada, códigos maliciosos podem escapar para o host, penetrar na rede privada, executar código privilegiado, interromper serviços e roubar dados.
Vulnerabilidades na aplicação também podem permitir que invasores penetrem na rede privada.
Mitigue os riscos de segurança dos containers runC com as seguintes medidas:
Seccomp: Filtra chamadas de sistema.
SELinux: Restringe permissões para processos, arquivos e usuários do container.
Capability: Limita as capacidades dos processos do container.
Modo Rootless: Impede a execução do runtime de container e dos containers como root.
Essas medidas aumentam a segurança dos containers runC, mas não conseguem impedir escapes de container que explorem vulnerabilidades do kernel do host.
-
Isole riscos de segurança com containers sandboxed (runV)
As aplicações em uma sandbox de VM executam em um kernel de sistema operacional convidado independente. Mesmo que o kernel convidado seja comprometido, o impacto permanece dentro dessa sandbox e não afeta o host ou outros containers. Combine containers sandboxed (runV) com o NetworkPolicy do Terway para configurar políticas de acesso no nível do pod, garantindo isolamento total de sistema, dados e rede.
Cenário 2: Resolver problemas de containers runC, como amplificação de falhas, contenção de recursos e interferência de desempenho
O Kubernetes colocaliza containers nos nós, mas os cgroups não resolvem totalmente a contenção de recursos. Aplicações que demandam muitos recursos, como cargas de trabalho intensivas em CPU ou I/O, competem por eles, causando flutuações no tempo de resposta. Problemas como vazamentos de memória ou core dumps aumentam a carga do nó. Um container que acione um bug no kernel do host pode derrubar o nó, e as falhas podem se propagar para todo o cluster. Os containers sandboxed (runV) usam kernels de sistema operacional convidado e hipervisores independentes para resolver a amplificação de falhas, a contenção de recursos e a interferência de desempenho presentes nos containers runC.
Cenário 3: Serviços multilocatários
Empresas com múltiplas linhas de negócio (LOBs) ou departamentos frequentemente exigem forte isolamento entre locatários. Por exemplo, cargas de trabalho financeiras podem necessitar de ambientes dedicados, separados de aplicações não sensíveis à segurança. Os containers runC tradicionais não conseguem prevenir eficazmente os riscos de segurança de aplicações não confiáveis. As abordagens comuns incluem:
Múltiplos clusters monolocatários: Clusters financeiros separados de clusters não sensíveis à segurança.
-
Um único cluster multilocatário: Separação das aplicações das LOBs em namespaces, com nós dedicados por LOB. O isolamento multilocatário depende de cotas de recursos, políticas de rede e outros recursos. Essa abordagem utiliza menos planos de controle e tem custos de gerenciamento menores do que múltiplos clusters, mas não resolve o desperdício de recursos de nós causado pela baixa utilização por parte de alguns locatários.
Os containers sandboxed (runV) isolam aplicações não confiáveis em sandboxes de VM, eliminando riscos de escape de container e permitindo cargas de trabalho mistas em todos os nós:
Reduz a complexidade do agendamento de recursos.
Os nós atendem a múltiplos negócios, reduzindo a fragmentação de recursos, melhorando a utilização e diminuindo os custos do cluster.
Os containers sandboxed (runV) utilizam VMs leves e entregam desempenho comparável ao runC.
Limitações
|
Restrição |
Detalhes |
|
Tipo de cluster |
Apenas clusters gerenciados ACK e clusters dedicados ACK |
|
Versão do cluster |
1,16–1,34. Atualize o cluster se sua versão estiver fora desse intervalo. |
|
Sistema operacional |
Imagens personalizadas não são suportadas. Consulte a matriz de suporte de SO. |
|
Tipos de instância |
|
|
Plugins de rede |
Flannel e Terway (modos limitados). O Terway não suporta o modo ENI exclusivo ou Datapath V2. |
Matriz de suporte de SO
|
Versão do cluster |
SO suportado |
|
Anterior à 1,30 |
Alibaba Cloud Linux 3 e Alibaba Cloud Linux 2 (não mais mantido) |
|
1,30 e posterior |
Apenas Alibaba Cloud Linux 3 |