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

Views: 1016
0 0
Read Time:8 Minute, 21 Second

Os contêineres em computação em nuvem evoluíram de uma palavra da moda 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 em nuvem continuam sendo um tópico quente no mundo da TI em geral, especialmente na segurança. As principais empresas de tecnologia do mundo, incluindo Microsoft, Google e Facebook, todas as usam. Por exemplo, o Google disse que tudo o que tem é executado em contêineres e que executa vários bilhões de contêineres por semana.

Os contêineres viram um aumento no 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 todo o aplicativo. Os contêineres prometem um método simplificado, fácil de implantar e seguro de implementar requisitos específicos de infraestrutura e são uma alternativa leve às VMs.

Como funcionam os contêineres em nuvem?

A tecnologia Container tem raízes no particionamento e isolamento do processo chroot desenvolvido como parte do Linux. As formas modernas de contêineres são expressas na contentorização de aplicativos, como o Docker, e na conteinerização do sistema, como o 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 dependem do isolamento virtual para implantar e executar aplicativos que acessam um kernel de 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 host restringe o acesso do contêiner a recursos físicos para que um único contêiner não possa consumir todos os recursos físicos de um host.

A principal coisa a reconhecer com contêineres em nuvem é que eles são projetados para virtualizar um único aplicativo. Por exemplo, você tem um contêiner MySQL, e isso é tudo o 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 nesse único contêiner — por exemplo, consumo excessivo de recursos por um processo — isso afeta apenas esse contêiner individual e não toda a VM ou servidor inteiro. Também elimina problemas de compatibilidade entre aplicativos em contêiner 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-chave que precisam de respostas: Como exatamente os contêineres diferem das VMs tradicionais baseadas em hipervisor? E, só porque os contêineres são tão populares, isso significa que eles são melhores?

Recipientes de nuvem vs. VMs

O principal diferencial com contêineres é a natureza minimalista de sua implantação. Ao contrário das VMs, elas não precisam de um sistema operacional completo para serem instaladas 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 executar a tarefa para a qual foram projetados — isso pode significar apenas alguns softwares, bibliotecas e os conceitos básicos de um sistema operacional. Isso resulta em ser capaz de implantar de dois a três vezes mais contêineres em um servidor do que as VMs, e eles podem ser girados muito mais rápido do que as VMs.

Os contêineres em 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 para desenvolvimento, teste, integração e produção. Do ponto de vista dos testes de software e segurança, isso é vantajoso porque garante que o sistema operacional subjacente não esteja causando 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 sua 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, é bem possível em breve ter tantos contêineres que eles se tornem difíceis de gerenciar. Imagine implantar patches em centenas de contêineres diferentes. Se uma biblioteca específica precisa ser atualizada dentro de um contêiner por causa de 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 proporcionar orquestração mais fácil para 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 no Docker Hub. Embora o Docker seja de longe a maior e mais popular plataforma de contêineres, existem alternativas. No entanto, Docker tornou-se sinônimo de conteinerização. Originalmente construído no LXC, o Docker se tornou a força predominante no mundo dos contêineres.

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

Segurança de contêiner na nuvem

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

Uma segunda opção para minimizar problemas de acesso é implantar contêineres sem root. Esses contêineres adicionam uma camada de segurança adicional porque não exigem privilégios de root. Portanto, se um contêiner sem raiz for comprometido, o invasor não obterá acesso root. Outro benefício dos contêineres sem root é que usuários diferentes podem executar contêineres no mesmo ponto final. O Docker atualmente suporta contêineres sem raiz, 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 necessariamente ser garantida. O Docker abordou 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 quanto a vulnerabilidades. Isso vai de alguma forma para fornecer garantia, mas seus processos de verificação podem não ser minuciosos o suficiente se você estiver usando contêineres para aplicativos particularmente sensíveis. Nesse caso, seria sensato criar a imagem você mesmo para garantir que suas políticas de segurança tenham sido 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 fazem. O treinamento adequado para aqueles que criam imagens é fundamental.

Contêineres para aplicações de produção sensíveis devem ser tratados da mesma forma que qualquer outra implantação quando se trata de segurança. Dentro do contêiner há 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 desativar um contêiner MySQL e, portanto, colocar um site offline.

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 resto do endpoint, eles raramente são endurecidos a ponto de fornecer tanto isolamento quanto as VMs. Com 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 inteligentes, desenvolvendo variedades de malware que podem atrasar o telefone para casa ou detectar se está em um ambiente virtualizado.

Independentemente disso, se um contêiner começar a agir estranhamente ou consumir mais recursos do que o necessário, é fácil desligá-lo e reiniciá-lo. E, embora não seja uma verdadeira experiência sandbox, os contêineres fornecem uma maneira de manter aplicativos não confiáveis separados e inconscientes de outros aplicativos no endpoint. O kernel Linux também possui modo de computação segura (seccomp). Um método de sandboxing de aplicativos, o seccomp monitora e restringe as chamadas do sistema em processos de contêiner. Se software malicioso se infiltrar no contêiner, ele só poderá fazer chamadas de sistema limitadas.

Como sempre, certifique-se de que os membros da equipe priorizem ameaças e vulnerabilidades à segurança. Siga as melhores práticas de segurança de contêineres e esteja ciente das vulnerabilidades e ataques de segurança de contêineres. Implantação e gerenciamento adequados são fundamentais. A digitalização regular de contêineres 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 contêineres. Docker tem ótimos conselhos em seu site para proteger contêineres.

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

A utilidade dos contêineres em nuvem

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

No entanto, não é necessariamente uma decisão ou outra. Será 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 se complementar em vez de competir.

FONTE: TECHTARGET

POSTS RELACIONADOS