O que são contêineres de nuvem e como eles funcionam?

O que são contêineres de nuvem e como eles funcionam? Os contêineres na computação em nuvem evoluíram de um chavão de segurança. A implantação de contêineres em nuvem agora é um elemento essencial da proteção da infraestrutura de TI.

Os contêineres de nuvem continuam sendo um tema importante no mundo da TI em geral, especialmente na segurança. Todas as principais empresas de tecnologia do mundo, incluindo Microsoft, Google e Facebook, os utilizam. Por exemplo, o Google disse que tudo o que possui é executado em contêineres e que opera vários bilhões de contêineres por semana .

Os contêineres aumentaram seu uso em ambientes de produção na última década. Eles continuam a modularização do DevOps, permitindo que os desenvolvedores ajustem recursos separados sem afetar o aplicativo inteiro. Os contêineres prometem um método simplificado, fácil e seguro de implementação de requisitos de infraestrutura específicos e são uma alternativa leve às VMs.

O artigo que trazemos hoje a nossos leitores foi primeiramente publicado pelo TechTarget e representa uma boa visão “geral” dos contêineres para aqueles que ainda não são familiarizados com o tema.

Como funcionam os contêineres de nuvem?

A tecnologia de contêiner tem raízes no particionamento e no isolamento do processo chroot desenvolvido como parte do Linux. As formas modernas de contêineres são expressas em contêineres de aplicativos , como Docker, e em contêineres de sistema, como Linux Containers (LXC). Ambos permitem que uma equipe de TI abstraia o código do aplicativo da infraestrutura subjacente para simplificar o gerenciamento de versões e permitir a portabilidade em vários ambientes de implantação.

Os contêineres contam com isolamento virtual para implantar e executar aplicativos que acessam um kernel do sistema operacional compartilhado sem a necessidade de VMs. Os contêineres contêm todos os componentes necessários, como arquivos, bibliotecas e variáveis ​​de ambiente, para executar o software desejado sem se preocupar com a compatibilidade da plataforma. O sistema operacional do host restringe o acesso do contêiner aos recursos físicos, de forma que um único contêiner não consuma todos os recursos físicos de um host.
A principal coisa a reconhecer com os contêineres de nuvem é que eles são projetados para virtualizar um único aplicativo. Por exemplo, você tem um contêiner MySQL, e isso é tudo que ele faz – ele fornece uma instância virtual desse aplicativo. Os contêineres criam um limite de isolamento no nível do aplicativo, e não no nível do servidor. Esse isolamento significa que, se algo der errado naquele único contêiner – por exemplo, consumo excessivo de recursos por um processo – isso afetará apenas aquele contêiner individual e não toda a VM ou servidor inteiro. Ele também elimina problemas de compatibilidade entre aplicativos em contêineres que residem no mesmo sistema operacional.
Os principais fornecedores de nuvem oferecem produtos de contêineres como serviço, incluindo Amazon Elastic Container Service , AWS Fargate, Google Kubernetes Engine, Microsoft Azure Container Instances, Azure Kubernetes Service e IBM Cloud Kubernetes Service. Os contêineres também podem ser implantados em infraestrutura de nuvem pública ou privada sem o uso de produtos dedicados de um fornecedor de nuvem.
Ainda há perguntas importantes que precisam de respostas: Como exatamente os contêineres diferem das VMs baseadas em hipervisor tradicionais? E, só porque os contêineres são tão populares, isso significa que eles são melhores?

Contêineres de nuvem vs. VMs

O principal diferencial dos contêineres é a natureza minimalista de sua implantação. Ao contrário das VMs, eles não precisam de um sistema operacional completo para ser instalado no contêiner e não precisam de uma cópia virtual do hardware do servidor host. Os contêineres podem operar com uma quantidade mínima de recursos para realizar a tarefa para a qual foram projetados – isso pode significar apenas alguns softwares, bibliotecas e o básico de um sistema operacional. Isso resulta na capacidade de implantar de duas a três vezes mais contêineres em um servidor do que as VMs, e eles podem ser escalados muito mais rápido do que as VMs.

Os contêineres de nuvem também são portáteis . Depois que um contêiner é criado, ele pode ser facilmente implantado em diferentes servidores. Do ponto de vista do ciclo de vida do software, isso é ótimo, pois os contêineres podem ser copiados rapidamente para criar ambientes de desenvolvimento, teste, integração e produção. De uma perspectiva de teste de software e segurança, isso é vantajoso porque garante que o sistema operacional subjacente não esteja causando uma diferença nos resultados do teste. Os contêineres também oferecem um ambiente mais dinâmico, pois a TI pode aumentar e diminuir mais rapidamente com base na demanda, mantendo os recursos sob controle.

Uma desvantagem dos contêineres é o problema de dividir a virtualização em muitos pedaços menores. Quando há apenas alguns contêineres envolvidos, é uma vantagem porque você sabe exatamente qual configuração está implantando e onde. No entanto, se você investir totalmente em contêineres, logo será possível ter tantos contêineres que eles se tornarão difíceis de gerenciar. Imagine a implantação de patches em centenas de contêineres diferentes. Se uma biblioteca específica precisa ser atualizada dentro de um contêiner devido a uma vulnerabilidade de segurança, você tem uma maneira fácil de fazer isso? Problemas de gerenciamento de contêineres são uma reclamação comum , mesmo com sistemas de gerenciamento de contêineres, como o Docker, que visam fornecer uma orquestração mais fácil para a TI.

Os contêineres são implantados de duas maneiras: criando uma imagem para ser executada em um contêiner ou baixando uma imagem pré-criada, como do Docker Hub. Embora o Docker seja de longe a maior e mais popular plataforma de contêiner, existem alternativas. No entanto, o Docker se tornou sinônimo de conteinerização. Construído originalmente no LXC, o Docker se tornou a força predominante no mundo dos contêineres.

imagem explicando a diferença entre contêineres em nuvem e VMs
Comparando contêiner e infraestrutura de VM
 

Segurança de contêiner em nuvem

Depois que os contêineres em nuvem se tornaram populares, o foco voltou-se para como mantê-los seguros. Os contêineres do Docker costumavam ser executados como um usuário privilegiado no sistema operacional subjacente, o que significava que, se partes importantes do contêiner fossem comprometidas, o acesso root ou de administrador poderia ser obtido no sistema operacional subjacente, ou vice-versa. O Docker agora oferece suporte a namespaces de usuário, que permitem que os contêineres sejam executados como usuários específicos.

Uma segunda opção para minimizar os problemas de acesso é implantar contêineres rootless (sem root). Esses contêineres adicionam uma camada de segurança adicional porque não requerem privilégios de root. Portanto, se um contêiner rootless for comprometido, o invasor não obterá acesso de root. Outro benefício dos containers rootless é que diferentes usuários podem executar containers no mesmo endpoint. No momento, o Docker oferece suporte a contêineres rootless , mas o Kubernetes não.

Outro problema é a segurança das imagens baixadas do Docker Hub. Ao baixar uma imagem desenvolvida pela comunidade, a segurança de um contêiner não pode ser necessariamente garantida. O Docker resolveu isso a partir da versão 1.8 com um recurso chamado Docker Content Trust , que verifica o editor da imagem. As imagens também podem ser verificadas em busca de vulnerabilidades. Isso de certa forma fornece garantia, mas seus processos de verificação podem não ser completos o suficiente se você estiver usando contêineres para aplicativos particularmente sensíveis. Nesse caso, seria sensato criar você mesmo a imagem para garantir que suas políticas de segurança sejam aplicadas e que as atualizações sejam feitas regularmente.

Observe, no entanto, que as imagens feitas pela empresa são tão seguras quanto seus funcionários as tornam. O treinamento adequado para quem está criando imagens é fundamental.

Os contêineres para aplicativos de produção confidenciais devem ser tratados da mesma maneira que qualquer outra implantação quando se trata de segurança. Dentro do contêiner está o software que pode ter vulnerabilidades. Embora um contêiner comprometido possa não conceder acesso ao sistema operacional do servidor subjacente, ainda pode haver problemas como negação de serviço, por exemplo, que podem desabilitar um contêiner MySQL e, portanto, colocar um site off-line.

Certifique-se de que os membros da equipe entendam que os contêineres não fornecem tanto isolamento quanto as VMs. Embora os contêineres ofereçam segmentação do restante do endpoint, eles raramente são reforçados a ponto de fornecer tanto isolamento quanto as VMs. Com as VMs, os usuários podem abrir anexos e aplicativos não confiáveis ​​para testar sua segurança. No entanto, os desenvolvedores de malware ficaram mais espertos, desenvolvendo variedades de malware que podem atrasar a ligação para casa ou detectar se está em um ambiente virtualizado.

Independentemente disso, se um contêiner começar a agir de maneira estranha ou consumir mais recursos do que o necessário, é fácil encerrá-lo e reiniciá-lo. E, embora não seja uma verdadeira experiência de sandbox, os contêineres fornecem uma maneira de manter os aplicativos não confiáveis ​​separados e sem conhecimento de outros aplicativos no terminal. O kernel Linux também apresenta modo de computação seguro (seccomp). Um método de sandbox de aplicativo, seccomp monitora e restringe chamadas de sistema em processos de contêiner. Se um software malicioso se infiltrar no contêiner, ele poderá, portanto, fazer apenas chamadas de sistema limitadas.

Como sempre, certifique-se de que os membros da equipe priorizem as ameaças e vulnerabilidades à segurança. Siga as práticas recomendadas de segurança de contêiner e esteja ciente das vulnerabilidades e ataques de segurança de contêiner. A implantação e o gerenciamento adequados são essenciais. A verificação regular do contêiner para garantir que as imagens e os contêineres ativos permaneçam atualizados e seguros também é importante.

Além disso, não se esqueça da segurança do servidor que hospeda os containers. A Docker tem ótimos conselhos em seu site para proteger contêineres.

Por último, é importante lembrar que, só porque os contêineres são um tipo de tecnologia mais recente, isso não significa que as políticas e procedimentos de segurança tradicionais não devam ser aplicados a eles.

A utilidade dos contêineres de nuvem

Não existem muitas organizações que não se beneficiem da introdução de contêineres de nuvem em sua infraestrutura. Sua portabilidade, tanto internamente quanto na nuvem, juntamente com seu baixo custo, os torna uma ótima alternativa para VMs completas.

No entanto, não é necessariamente uma decisão ou-ou. Acontece que, na maioria das empresas, há necessidade de contêineres e VMs . Cada um tem seus próprios pontos fortes e fracos, e os dois podem complementar-se em vez de competir.

Fonte: TechTarget 

Veja também:

 

Sobre mindsecblog 1765 Artigos
Blog patrocinado por MindSec Segurança e Tecnologia da Informação Ltda.

2 Trackbacks / Pingbacks

  1. Relatório de Segurança da Força de Trabalho Remota 2021
  2. Micropatches para PrintNightmare estão disponíveis na plataforma 0patch

Deixe sua opinião!