Um guia de segurança de contêineres para iniciantes
As equipes de DevOps nunca utilizaram tanto os contêineres como hoje em dia, mas muitas vezes a proteção deles fica em segundo plano. Aqui está o que você precisa saber sobre segurança de contêineres.
Contêineres que economizam recursos e são altamente portáteis estão se tornando cada vez mais a escolha preferida para o desenvolvimento de software moderno. De fato, até 2023, mais de 70% das empresas executarão mais de duas aplicações conteinerizadas, de acordo com a Gartner, uma empresa de pesquisa de mercado.
Mas os contêineres têm suas desvantagens, especialmente quando se trata de segurança. A Pesquisa Global de DevSecOps de 2022 do GitLab descobriu que apenas 64% dos profissionais de segurança tinham um plano de segurança para contêineres, e muitas equipes de DevOps não têm um plano em vigor para outras tecnologias de software de ponta, incluindo as de nuvem nativa/sem servidor, APIs e microsserviços.
A solução é as equipes de DevOps mudarem para a esquerda e integrarem as práticas de segurança em cada etapa do processo de desenvolvimento de software. Confira um passo a passo de como as equipes podem alcançar esse objetivo.
Um contêiner é uma unidade leve que contém todos os componentes necessários para executar uma aplicação, como o código da aplicação, o runtime, as bibliotecas e as configurações. Além disso, a segurança do contêiner refere-se às medidas e práticas adotadas para garantir a proteção e integridade deles. A segurança de contêineres é abrangente e inclui das aplicações dentro dos contêineres até a infraestrutura em que eles são executados. A segurança e a qualidade da imagem base são essenciais para garantir que todas as imagens derivadas venham de uma fonte confiável. Integre a segurança ao seu pipeline de contêineres reunindo imagens confiáveis, gerenciando o acesso com o uso de um registro privado, integrando testes de segurança, automatizando a implantação e defendendo continuamente sua infraestrutura. A proteção de contêineres é o processo de usar ferramentas de análise de contêineres para detectar possíveis vulnerabilidades e resolvê-las para minimizar o risco de ataques.
A segurança robusta dos contêineres reduz o risco de implantar um contêiner que contenha uma falha de segurança ou um código mal-intencionado em um ambiente de produção.
A segurança de contêineres difere dos métodos tradicionais de segurança devido ao aumento da complexidade e do dinamismo do ambiente de contêineres. Em outras palavras, há muito mais componentes envolvidos e diferentes riscos de segurança.
Embora os contêineres pareçam se comportar como pequenas máquinas virtuais (VMs), isso não é verdade. Por isso, exigem uma estratégia de segurança diferente. O tráfego entre aplicações em um contêiner não atravessa o perímetro de segurança da rede, mas deve ser monitorado quanto ao tráfego mal-intencionado entre as aplicações e suas imagens. Seu orquestrador pode ser usado para definir políticas de segurança para processos e recursos, mas uma estratégia de segurança completa exige mais.
As imagens de contêiner definem o que é executado em cada um deles. Os desenvolvedores devem garantir que as imagens não contenham vulnerabilidades de segurança ou códigos comprometidos e devem evitar a criação de imagens desnecessárias para minimizar a superfície de ataque do contêiner. As ferramentas de validação de imagens podem ser usadas para proibir imagens não confiáveis, mas geralmente não são ativadas por padrão. As imagens também podem ser analisadas depois de criadas para detectar imagens dependentes que também podem ter vulnerabilidades.
Ao contrário das máquinas virtuais, vários contêineres podem ser executados no mesmo sistema operacional, e um ataque pode acontecer em qualquer nível. Um sistema operacional com host vulnerável coloca seus contêineres em risco, e um contêiner vulnerável pode abrir um caminho de ataque para o sistema operacional do host. Implemente o isolamento de namespaces para limitar a interação entre o contêiner e o kernel do sistema operacional do host, e automatize a aplicação de patches para se alinhar com os lançamentos de patches do fornecedor. O sistema operacional também deve ser o mais simples possível, livre de componentes desnecessários (como aplicações ou bibliotecas que não são realmente necessárias para executar o orquestrador).
A orquestração de contêiner coordena e gerencia contêineres, permitindo que aplicações em contêineres atendam a milhares de usuários e lidem com um grande número de acessos simultâneos. Seu orquestrador pode ter seus próprios recursos de segurança prontos para uso, possivelmente permitindo que você crie regras para o Kubernetes aplique imposições automaticamente em todos os pods dentro do cluster. Esse tipo de recurso básico é útil, mas é só a primeira etapa para um conjunto de políticas mais sólidas.
Os contêineres podem ser distribuídos por vários sistemas e provedores de nuvem, tornando o gerenciamento de acesso ainda mais importante. Os segredos, que incluem chaves de API, credenciais de login e tokens, devem ser gerenciados com rigor para garantir que o acesso ao contêiner seja limitado a usuários autorizados. O acesso do usuário também pode ser definido pelo controle de acesso baseado em função, permitindo que você limite o acesso conforme necessário.
Após a implantação, a atividade do contêiner deve ser monitorada, e as equipes precisam ser capazes de detectar e responder a qualquer ameaça de segurança. O Nordcloud sugere o monitoramento de comportamentos suspeitos, como chamadas de rede, chamadas de API e tentativas incomuns de login. As equipes devem ter etapas de mitigação predefinidas para os pods e devem ser capazes de isolar o contêiner em uma rede diferente, reiniciá-lo ou interrompê-lo até que a ameaça seja identificada. Isso pode oferecer uma camada adicional de segurança contra malware.
Os provedores de nuvem também assumem parte do trabalho, garantindo a segurança do hardware subjacente e das redes básicas usadas para oferecer serviços de nuvem, mas os usuários ainda compartilham essa responsabilidade, incluindo o acesso, configuração e atualização das aplicações, bem como a aplicação de patches e o acesso aos sistemas.
Em 2017, o Departamento de Comércio dos EUA publicou seu Application Container Security Guide. Embora este guia já tenha alguns anos, as equipes que apenas adotam contêineres ainda podem se beneficiar das seguintes recomendações:
-
Adapte a cultura operacional e os processos técnicos da empresa para apoiar a nova forma de desenvolver, executar e manter as aplicações possibilitada pelos contêineres: adotar contêineres pode ser disruptivo para a sua cultura e metodologias de desenvolvimento existentes, e suas práticas atuais podem não ser diretamente aplicáveis em um ambiente com contêineres. Incentive, instrua e treine sua equipe para repensar como eles codificam e operam.
-
Use sistemas operacionais de host específicos do contêiner em vez de uso geral para reduzir as superfícies de ataque: Um sistema operacional de host específico do contêiner é um sistema operacional minimalista projetado para executar apenas contêineres. O uso desses sistemas operacionais reduz muito as superfícies de ataque, diminuindo as oportunidades para que seus contêineres sejam comprometidos.
-
Agrupe apenas contêineres com o mesmo propósito, confidencialidade e abordagem de segurança em um único kernel do SO do host para permitir uma defesa mais robusta: Segmentar contêineres proporciona uma defesa adicional e mais forte. O agrupamento de contêineres dessa maneira dificulta para um invasor expandir possíveis ataques para outros grupos. Também aumenta a probabilidade de que ataques sejam detectados e contidos.
-
Adote ferramentas e processos de gerenciamento de vulnerabilidades específicos do contêiner para imagens para evitar invasões: as ferramentas tradicionais fazem muitas suposições que não se aplicam a um modelo em contêiner e, muitas vezes, não conseguem detectar vulnerabilidades dentro dos contêineres. As empresas devem adotar ferramentas e processos para validar e impor a conformidade com as melhores práticas de configuração segura para imagens – incluindo relatórios centralizados, monitoramento de cada imagem e prevenção de execução de imagens não conformes.
-
Considere o uso de contramedidas baseadas em hardware para fornecer uma base para a computação confiável: estenda as práticas de segurança para todas as camadas da tecnologia do contêiner, baseando a segurança em uma raiz de hardware de confiança, como o Trusted Platform Module (TPM).
-
Use ferramentas de defesa de runtime com reconhecimento de contêiner: implante e use uma solução de segurança de contêiner dedicada capaz de monitorar o ambiente do contêiner e fornecer detecção precisa de atividades anômalas e mal-intencionadas dentro dele.
Aprenda os termos e coloque a mão na massa.
Mergulhe nos conceitos básicos de segurança de DevSecOps.
Comece a usar o DevSecOps com o GitLab.
Tudo pronto para começar?
Descubra o que sua equipe pode fazer com uma plataforma DevSecOps unificada.