Jump to section

O que é segurança de containers?

Copiar URL

Red Hat é líder segundo relatório Magic Quadrant™ do Gartner® de 2023

A Red Hat ficou em primeiro lugar na categoria Gestão de Containers do relatório Magic Quadrant™ do Gartner® de 2023, devido à sua visão abrangente e capacidade de execução.

A segurança de containers envolve definir e seguir práticas de criação, implantação e runtime que protegem um container Linux, das aplicações suportadas à infraestrutura da qual dependem.

À medida que as organizações adotam padrões de design de microsserviços e tecnologias de container, como Docker e Kubernetes, as equipes de segurança são desafiadas a desenvolver soluções de segurança de container que facilitem essas mudanças de infraestrutura. A segurança dos containers precisa ser integrada e contínua, além de oferecer suporte à estratégia geral de segurança da empresa. 

O orquestrador dos containers (o Kubernetes) desempenha um papel essencial na segurança deles, além de oferecer acesso a dados contextuais avançados para aprimorar a visibilidade e a conformidade, a caracterização de risco baseada em contexto, a rede e a detecção do runtime. Uma estratégia de segurança de containers eficaz é baseada em construções do Kubernetes, como implantações, pods, políticas de rede e assim por diante. Por exemplo, as políticas de rede do Kubernetes são uma funcionalidade integrada de segurança usada para controlar a comunicação entre os pods e para reduzir o raio de impacto do invasor.

Em geral, a segurança contínua de containers na empresa está relacionada à:

  • Proteção da aplicação e do pipeline de containers
  • Proteção da infraestrutura e dos ambientes de implantação de containers
  • Proteção das cargas de trabalho em containers no runtime

Descubra como as empresas estão implementando iniciativas de segurança em container.

No desenvolvimento de software tradicional, a revisão da segurança é uma série de testes realizados ao final do processo. Mas com fluxos de trabalho modernos de desenvolvimento nativo em nuvem, a superfície de ataque é muito maior, e a segurança se torna uma questão mais complexa. Nos ambientes nativos em nuvem, em que os containers são o formato padrão de entrega de aplicações, o código é atualizado com frequência e ingerido de vários repositórios. Os erros humanos, como a definição incorreta de configurações, abrem uma brecha para o acesso não autorizado em várias partes do ciclo de desenvolvimento e implantação. As vulnerabilidades de segurança podem surgir em praticamente qualquer lugar. Por isso, a segurança precisa ser um trabalho contínuo.

Assim como usamos a automação na implantação de containers (por meio de ferramentas de orquestração como o Kubernetes), ela também deve ser aplicada à segurança. Seguindo os princípios do DevSecOps (conceito criado para implementar a segurança ao DevOps), é possível verificar o código de maneira contínua em todo o ciclo de desenvolvimento. Assim, você descobre e corrige vulnerabilidades com rapidez e antecedência, antes que elas se transformem em problemas inesperados e demorados. Como os containers são imutáveis, a segurança deles está relacionada à aplicação de patches no estágio da compilação, e não durante a execução. Isso evita que as vulnerabilidades reapareçam quando os containers são destruídos ou recriados.

Uma etapa crucial é verificar as imagens de container em busca de malware e outras vulnerabilidades de segurança: uma das várias camadas de proteção a serem adotadas. É necessário que as organizações considerem a segurança de toda a cadeia de suprimentos de software. Em outras palavras, você precisa incorporá-la a todas as etapas do desenvolvimento e implantação de softwares em containers, incluindo os ambientes de runtime e dependências. 

Confira a seguir algumas estratégias específicas de desenvolvimento em containers que levam em consideração a segurança da cadeia de suprimentos:

  • Com conteúdo confiável e um repositório de nível empresarial, é possível entregar imagens pré-fortalecidas com controles de acesso e segurança avançada.
  • Com uma abordagem sem toque, você atribui os menores níveis de acesso possíveis a recursos importantes.
  • Com a política como código, é possível incorporar controles de segurança ao pipeline de CI/CD.
  • A assinatura e as verificações oferecem comprovação e estabelecem a confiança ao confirmar que as imagens de container não foram adulteradas.
  • As práticas de GitOps ajudam a gerenciar as configurações de segurança das aplicações e containers.

Colete as imagens

Os containers são criados a partir de camadas de arquivos chamadas de imagens de container. 

Uma ferramenta como o Buildah permite criar imagens compatíveis com OCI e Docker a partir do zero, com ou sem uma imagem de container inicial existente.

As imagens de container são o formato padrão de disponibilização de aplicações em ambientes nativos em nuvem, mas até mesmo as empresas nativas em nuvem misturam as cargas de trabalho entre provedores de nuvem. A solução de segurança de containers ideal precisa ser compatível com todas as arquiteturas, mesmo que você execute sua infraestrutura em um hardware privado, em um data center compartilhado ou em uma nuvem pública como o Amazon Web Services (AWS), Microsoft Azure e Google Cloud Platform.

A imagem base ou golden image (imagem dourada) é uma das mais importantes para a segurança, porque ela é usada como ponto de partida para criar imagens derivadas. Encontrar fontes confiáveis de imagens base é o começo da implantação da segurança de containers. Confirme se a imagem vem de uma empresa conhecida ou grupo open source, está hospedada em um registro com boa reputação e se o código-fonte de todos os componentes na imagem está disponível.

No entanto, mesmo com o uso de imagens confiáveis, a adição de aplicações e as alterações na configuração apresentarão novas variáveis. Ao trazer conteúdo externo para criar suas aplicações, tenha em mente o gerenciamento proativo de vulnerabilidades:

  • Use um verificador de imagens autônomo ou integrado ao registro para examinar todas as imagens com frequência. Escolha um verificador que faça essas avaliações com base em camadas de imagem, pacotes e linguagens específicas.
  • Identifique imagens de container modificadas que violam políticas ou práticas recomendadas documentadas, conhecidas como configurações incorretas de container, para reduzir a probabilidade e o impacto de possíveis comprometimentos.

Previsão e correção de vulnerabilidades

Os containers são muito usados porque facilitam a criação, o empacotamento e a divulgação de uma aplicação ou serviço e de todas as respectivas dependências. Isso acontece durante todo o ciclo de vida dos containers e em destinos de implantação e fluxo de trabalho distintos. No entanto, há alguns desafios para incorporar a segurança nos containers. Os containers podem ajudar você a implementar uma segurança mais refinada no nível da carga de trabalho, mas também introduzem novos componentes de infraestrutura e superfícies de ataque desconhecidas. A solução de segurança de containers certa deve ajudar a proteger a infraestrutura do cluster e o orquestrador, bem como as aplicações em containers que eles executam.

Não é possível escalar os checklists e as políticas de segurança estáticas para os containers na empresa.

  • A cadeia de suprimentos precisa de mais serviços relacionados à política de segurança.
  • As equipes de segurança precisam equilibrar as necessidades de rede e governança de um ambiente de containers.
  • As ferramentas usadas durante os estágios de criação, manutenção e serviço precisam ter políticas de permissão diferentes.

Um programa eficaz de segurança de containers busca corrigir vulnerabilidades em tempo real e reduzir a superfície de ataque antes que as imagens sejam implantadas, preservando os detalhes da procedência. Ao incorporar a segurança no pipeline e proteger a infraestrutura, você assegura que os containers sejam confiáveis e escaláveis.

Ao coletar imagens de container, pergunte a si mesmo:

  • Elas estão assinadas e foram feitas por fontes confiáveis?
  • De onde vem a imagem e como ela pode ser recriada?
  • Qual é a data da última verificação de uma determinada imagem?
  • As camadas do sistema operacional e do runtime estão atualizadas?
  • Com que frequência e rapidez o container será atualizado?
  • Os riscos à segurança são identificados e como eles serão rastreados?

Depois de obter as imagens, a próxima etapa é gerenciar a divulgação e o acesso de todas as imagens de container usadas pela equipe. Ou seja, proteger as imagens obtidas por download e as que você cria. Use um registro privado para controlar o acesso por meio de atribuições de funções, além de gerenciar o conteúdo designando metadados relevantes ao container. Esses metadados ajudarão você a identificar e rastrear vulnerabilidades conhecidas. Com o registro de containers privado, você também automatiza e atribui políticas nas imagens de container armazenadas. Isso diminui os erros humanos que podem gerar vulnerabilidades no ambiente de containers. Os registros de container com recursos de segurança de nível empresarial também têm verificadores de vulnerabilidades integrados.

Ao decidir como será o gerenciamento do acesso, pergunte a si mesmo:

  • Que controles de acesso baseado em função você pode usar para gerenciar imagens de container?
  • Há um recurso de aplicação de tags para classificar as imagens? É possível aplicar tags a imagens aprovadas para uma determinada etapa, como os ambientes de desenvolvimento, teste e produção?
  • O registro oferece metadados visíveis para rastrear vulnerabilidades conhecidas?
  • É possível usar o registro para atribuir e automatizar políticas (por exemplo, verificar assinaturas, códigos de aplicações etc.)?

A última etapa do pipeline é a implantação. Depois que você concluir as compilações, será necessário gerenciá-las de acordo com os padrões da indústria, incluindo as normas estabelecidas pelo Center for Internet Security (CIS) e pelo National Institute of Standards and Technology (NIST) dos Estados Unidos. O segredo é entender como automatizar políticas para sinalizar compilações que têm problemas de segurança, principalmente ao encontrar novas vulnerabilidades. Embora a verificação de vulnerabilidades continue sendo importante, ela é apenas parte de um conjunto maior de iniciativas de segurança usadas para proteger seus ambientes de containers.

Como aplicar patches aos containers não é uma solução tão boa quanto recriá-los, a integração do teste de segurança precisa levar em conta políticas que acionem recompilações automatizadas. Para isso, o primeiro passo é executar ferramentas de análise de componentes que rastreiem e sinalizem problemas. Depois, é necessário estabelecer ferramentas de implantação automatizada baseada em políticas.

Ao integrar o teste de segurança e automatizar a implantação, pergunte a si mesmo:

  • Algum container tem vulnerabilidades que devem ser corrigidas antes da implantação dele em um ambiente de produção?
  • Minhas implantações foram configuradas corretamente? Há containers com privilégios muito elevados sem necessidade? Estou usando um sistema de arquivos raiz somente leitura?
  • Qual é minha estratégia de conformidade com relação aos CIS Benchmarks e NIST SP 800-190?
  • Estou isolando as cargas de trabalho consideradas confidenciais por meio de funcionalidades integradas, como namespaces e políticas de rede?
  • Estou usando funcionalidades integradas de fortalecimento e segurança, como perfis seccomp, AppArmor e SELinux?

A segurança dos containers continua após o teste e a implantação, chegando até mesmo à execução das aplicações em containers. Fatores como detecção de ameaça, proteção de rede e resposta a incidentes se tornam mais relevantes.

No runtime, as aplicações enfrentam ameaças reais e imprevisíveis, quando as vulnerabilidades e configurações incorretas não percebidas durante a compilação podem ser exploradas. A segurança do runtime precisa incluir o monitoramento das aplicações que demonstrem um comportamento inesperado. Com a detecção de anomalias no runtime, você identifica escalonamentos de privilégios, criptomining, fluxos de rede inesperados, fugas de container e outros comportamentos não seguros.

A segmentação da rede é outra maneira de minimizar a superfície de ataque. No Kubernetes, as políticas de rede padrão permitem que os pods se comuniquem entre si dentro de um cluster. Quando você aplica políticas de confiança zero, um pod que foi violado não fará com que todos os outros também sejam comprometidos nesse cluster.

Por fim, com estratégias de resposta a incidentes, as equipes podem reagir aos eventos do jeito apropriado. As respostas incluem o encaminhamento dos eventos para um sistema de Gerenciamento de eventos e informações de segurança (SIEM), a notificação do proprietário da aplicação com as etapas e os detalhes sobre qual implantação deve ser corrigida e até mesmo o encerramento e reinicialização automáticos dos pods. Com relação às respostas, você precisa seguir a prática de reconstruir e reimplantar os containers problemáticos, em vez de aplicar patches aos containers em execução.

Outra camada da segurança de containers é o isolamento proporcionado pelo sistema operacional host ou pelo nó do container. Você precisa de um sistema host que forneça isolamento máximo do container. Essa é uma parte importante para proteger o ambiente de implantações de containers. Em um ambiente Kubernetes conteinerizado, o sistema operacional host é compartilhado entre os containers e gerenciado por um runtime. Esse runtime interage com o Kubernetes para criar e gerenciar os containers (ou os pods deles). 

É necessário separar o sistema operacional host e o container, para impedir que um container que foi violado comprometa esse sistema e todos os outros containers. Para que a plataforma de aplicações em containers seja resiliente, use namespaces de rede para isolar aplicações e ambientes, além de anexar armazenamento por meio de ativações seguras. Não configure o runtime do container para compartilhar o namespace do UPC, do IPC ou da rede host. Escolha um sistema operacional host que seja otimizado para containers e pré-fortalecido, além de usar a verificação de vulnerabilidades no host.

A solução de gerenciamento de APIs precisa incluir autenticação e autorização, integração LDAP, controles de acesso a endpoints e limitação por taxa.

Ao decidir como proteger a infraestrutura de containers, pergunte a si mesmo:

  • Que containers precisam acessar outros? Como eles detectam os outros containers?
  • Como controlar o acesso aos recursos compartilhados (por exemplo, rede e armazenamento) e fazer o gerenciamento deles?
  • Como monitorar a integridade dos containers?
  • Como escalar automaticamente a capacidade das aplicações para atender à demanda?
  • Como gerenciar atualizações de host? Todos os containers precisarão ser atualizados ao mesmo tempo?

O Red Hat® OpenShift® inclui o Red Hat Enterprise Linux®. Ele automatiza o ciclo de vida da aplicação do container, integra a segurança ao pipeline do container e permite a transição de uma estratégia DevOps para uma estratégia DevSecOps. Com o catálogo de containers, você tem acesso a um grande número de imagens certificadas, ambientes de execução em linguagens diferentes, bancos de dados e middlewares que são executados no mesmo ambiente do Red Hat Enterprise Linux. As imagens da Red Hat são sempre assinadas e verificadas para assegurar origem e integridade.

Monitoramos as imagens de container em busca de vulnerabilidades recém-descobertas, incluindo um sumário de integridade atualizado constantemente e visível para o público. Também oferecemos atualizações de segurança e recompilações de containers que são enviadas ao registro público. O Red Hat Advanced Cluster Security for Kubernetes se integra ao DevOps e a ferramentas de segurança para reduzir as ameaças e reforçar as políticas de segurança que minimizam os riscos operacionais das suas aplicações.

O Red Hat Service Interconnect permite o acesso e a comunicação entre containers, minimizando o risco adicional à segurança da sua empresa ou aos dados do usuário.

Os parceiros de segurança da Red Hat podem ampliar e aprimorar os recursos de proteção de containers usando integrações certificadas. A segurança é integrada à plataforma do Red Hat OpenShift, o que complementa as soluções dos parceiros para proteger aplicações e containers durante o ciclo de vida do DevOps.

Além disso, também oferecemos estes recursos incríveis:

  • Gerenciamento e orquestração de containers em escala web
  • Console web avançado com funcionalidades para colaboração entre vários usuários
  • Interfaces de IDE e CLI
  • Integração com a CI
  • Source-to-image e automação da compilação
  • Automação da implantação
  • Compatibilidade com volumes de armazenamento remoto
  • Administração e instalação simplificadas
  • Grande conjunto de serviços, frameworks e linguagens de programação compatíveis
Container thumbnail image

Relatório KuppingerCole Leadership Compass: Container Security

Confira esta visão abrangente sobre o mercado de segurança de containers e Kubernetes para avaliar as opções e escolher a solução ideal para a sua empresa.

Leitura recomendada

ARTIGO

Containers x máquinas virtuais

Os containers Linux e as máquinas virtuais são ambientes de computação empacotados que combinam vários componentes de TI e os isolam do restante do sistema.

ARTIGO

O que é orquestração de containers?

A orquestração automatiza a implantação, o gerenciamento, a escala e a rede dos containers.

ARTIGO

O que é um container Linux?

Um container Linux é um conjunto de processos isolados do sistema. Esses processos são executados a partir de uma imagem distinta que oferece todos os arquivos necessários a eles.

Leia mais sobre containers

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

Conteúdo adicional

Datasheet

Red Hat OpenShift: tecnologia de container para nuvem híbrida

O Red Hat® OpenShift® é uma plataforma empresarial de containers Kubernetes que ajuda organizações em todo o mundo a criar, implantar, executar, gerenciar e proteger aplicações inovadoras em nuvens híbridas.

Datasheet

Red Hat OpenShift Kubernetes Engine

O Red Hat OpenShift Kubernetes Engine consiste em vários componentes essenciais e totalmente integrados para criação, implantação e gerenciamento de aplicações em containers.

Ebook

Transforme suas aplicações

Conheça as tendências atuais para a transformação de aplicações e como modernizar sua TI usando serviços em nuvem e plataformas de aplicações em nuvem híbrida.

Treinamentos Red Hat

Treinamento gratuito

Running Containers with Red Hat Technical Overview

Treinamento gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures