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.

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.

O que Ă© segurança de contĂȘineres?

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.

Por que a segurança de contĂȘineres Ă© importante?

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.

Muitas camadas = muitas necessidades

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.

Armazenamento inteligente de segredos

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.

A importĂąncia da segurança de runtime de contĂȘiner

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.

A tecnologia de nuvem nativa exige maior responsabilidade

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.

As diretrizes do NIST para segurança de contĂȘineres

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.

Saiba mais sobre segurança de contĂȘineres

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.

Mais de 50% das empresas Fortune 100 confiam no GitLab

Comece a entregar software melhor, mais rapidamente

Descubra o que sua equipe pode fazer com a

plataforma DevSecOps inteligente.