Ilustração do Kubernetes
Ir para seção

Práticas recomendadas de segurança do Kubernetes

Copiar URL

Para implementar as práticas recomendadas de segurança do Kubernetes, é preciso corrigir vulnerabilidades conhecidas durante a fase de criação, redefinir configurações incorretas durante a fase de criação/implantação, responder a ameaças no runtime e proteger a infraestrutura inteira do Kubernetes. 

Essas foram as principais preocupações quanto à segurança mencionadas na edição mais recente do relatório "O estado da segurança do Kubernetes". Foi constatado que mais de 50% dos entrevistados estão preocupados com configurações incorretas e vulnerabilidades resultantes da natureza altamente personalizável do Kubernetes e da complexidade da segurança de containers. Para superar esses desafios e evitar atrasos na implantação de aplicações, as empresas devem fazer da segurança do Kubernetes a principal prioridade durante todo o ciclo de vida do desenvolvimento.

Os containers estão em toda parte

O Kubernetes é uma plataforma open source de orquestração de containers usada para gerenciar centenas (às vezes, milhares) de containers Linux® agrupados em clusters do Kubernetes. Ele depende muito das interfaces de programação de aplicações (APIs) que conectam microsserviços em containers. Essa natureza distribuída dificulta investigar rapidamente quais containers podem ter vulnerabilidades, estar mal configurados ou representar os maiores riscos para sua empresa.

A solução é desenvolver uma visão abrangente das implantações de containers que capturem eventos críticos no nível do sistema em cada container.

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.

Imagens e registros podem ser utilizados incorretamente

As imagens dos containers (também conhecidas como imagens base) são templates imutáveis usados para criar novos containers. As imagens de container recém-copiadas podem então ser modificadas para servir a outros propósitos.

A solução é definir políticas que determinam como as imagens são criadas e armazenadas nos registros de imagem. As imagens base precisam ser testadas, aprovadas e escaneadas regularmente. Além disso, apenas as imagens de registros permitidos devem ser usadas para lançar containers em um ambiente do Kubernetes.

Comunicação habilitada de containers

Os containers e pods precisam interagir entre si nas implantações, bem como com outros endpoints internos e externos para funcionar adequadamente. Se um container for violado, a capacidade de um hacker se mover dentro do ambiente estará diretamente relacionada a quanto esse container consegue se comunicar com outros containers e pods. Em um ambiente de containers em expansão, implantar segmentação de rede pode ser muito difícil, dada a complexidade de configurar essas políticas manualmente.

A solução é rastrear o tráfego que se desloca entre os namespaces, implantações e pods e determinar quanto desse tráfego é realmente permitido.

Mais informações como a Red Hat pode ajudar a preservar a segurança na comunicação entre containers

Políticas padrão de rede de containers

Por padrão, as implantações do Kubernetes não aplicam uma política de rede a um pod, que é a menor unidade de uma aplicação do Kubernetes. Essas políticas de rede se comportam como regras de firewall. Elas controlam a forma como os pods se comunicam. Sem políticas de rede, qualquer pod consegue interagir com outro pod. 

A solução é definir políticas de rede que limitem a comunicação de pods apenas a ativos definidos e criar segredos em volumes somente leitura de dentro de containers, em vez de enviá-los como variáveis de ambiente.

Conformidade para containers e Kubernetes

Os ambientes nativos em nuvem viabilizados pelo Kubernetes devem (como todos os outros ambientes de TI) obedecer às práticas recomendadas de segurança, padrões do setor e de referência e políticas organizacionais internas e provar essa conformidade. Às vezes, isso significa adaptar estratégias de conformidade para que os ambientes do Kubernetes atendam aos controles originalmente escritos para arquiteturas de aplicação.

A solução é monitorar aderência à conformidade e automatizar auditorias.

Runtime

O Kubernetes é uma infraestrutura imutável. Não é possível aplicar patchs durante o runtime dos containers. Os containers em execução devem ser destruídos e recriados. Containers comprometidos podem executar processos maliciosos, como mineração criptográfica e varredura de portas.

A solução é destruir qualquer container corrompido ou em execução, reconstruir uma imagem de container íntegra e, em seguida, relançá-la.

A segurança do Kubernetes começa na fase de criação, gerando imagens base fortes e adotando processos de varredura de vulnerabilidade.

  • Use imagens base mínimas: evite usar imagens com gerenciadores de pacotes de sistema operacional ou shells, que poderiam conter vulnerabilidades desconhecidas, ou remova o gerenciador de pacotes depois.
  • Use fontes confiáveis: escolha somente imagens base de fontes confiáveis e hospedadas em um registro de renome.
  • Não adicione componentes desnecessários: como regra geral, ferramentas comuns podem se tornar riscos de segurança quando incluídas em imagens.
  • Use apenas imagens atualizadas: atualize as versões dos componentes.
  • Use um verificador de imagens: identifique as vulnerabilidades em imagens, detalhadas por camadas.
  • Integre a segurança em pipelines de CI/CD: automatize uma faceta de segurança repetível que interromperá criações de integração contínua e emitirá alertas quanto a vulnerabilidades graves e reparáveis.
  • Rotule as vulnerabilidades permanentes: adicione imediatamente a uma lista de permissões vulnerabilidades conhecidas que não possam ou não precisem ser corrigidas ou que não sejam críticas. 
  • Implemente defesa em profundidade: padronize verificações de políticas e fluxos de trabalho de remediação para detectar e atualizar imagens vulneráveis.

Configure a segurança da infraestrutura do Kubernetes antes que as cargas de trabalho sejam implantadas. Primeiro, é preciso saber o máximo possível sobre o processo de implantação: o que está sendo implantado (imagem, componentes, pods), onde (clusters, namespaces e nós) e como os elementos estão sendo implantados (privilégios, políticas de comunicação, garantias aplicadas), o que ele pode acessar (segredos, volumes) e as normas de conformidade.

  • Use namespaces: a separação das cargas de trabalho em namespaces pode ajudar a conter ataques e limitar o impacto de erros ou ações destrutivas por parte de usuários autorizados.
  • Use políticas de rede: o Kubernetes permite que cada pod interaja com todos os outros pods por padrão, mas as políticas de segmentação de rede e os plugins que controlam a entrada e saída de tráfego da aplicação podem substituir essa definição.
  • Restrinja as permissões a segredos: somente crie segredos que sejam necessários para as implantações.
  • Avalie os privilégios de containers: somente habilite os recursos, funções e privilégios que permitam ao container desempenhar sua função. 
  • Avalie a origem da imagem: use imagens de registros conhecidos.
  • Implantações de verificação: aplique políticas com base nos resultados das verificações. 
  • Use rótulos e anotações: rotule ou anote as implantações com os dados de contato da equipe responsável por uma aplicação em container para otimizar a triagem.
  • Viabilize o controle de acesso baseado em função (RBAC): o RBAC controla a autorização de conta de usuário e serviço para acessar o servidor da API do Kubernetes de um cluster.

A ocorrência de incidentes de segurança diminui quando as práticas recomendadas do Kubernetes são aplicadas durante as fases de criação e implantação. No entanto, identificar e responder a ameaças no runtime requer um monitoramento contínuo das atividades de processos e das comunicações em rede.

  • Use informações contextuais: use as informações de tempo de criação e de implantação no Kubernetes para avaliar a atividade observada em relação à esperada durante o runtime, a fim de detectar atividades suspeitas.
  • Verifique as implantações em execução: monitore as implantações em execução para detectar as vulnerabilidades recém-descobertas em imagens de containers.
  • Use controles integrados: configure o contexto de segurança para os pods, a fim de limitar as capacidades deles.
  • Monitore o tráfego da rede: observe e compare o tráfego de rede em tempo real àquele permitido pelas políticas de rede do Kubernetes para identificar comunicações inesperadas.
  • Use listas de permissão: identifique os processos realizados durante o curso normal do runtime da aplicação para criar uma lista de permissões.
  • Compare a atividade de execução em pods implantados de forma semelhante: as réplicas com desvios significativos requerem investigação.
  • Reduza os pods suspeitos a zero: use os controles nativos do Kubernetes para conter violações, instruindo automaticamente o Kubernetes a reduzir a zero os pods suspeitos ou destruir e reiniciar instâncias.

A segurança do Kubernetes vai além das imagens e cargas de trabalho. Ela inclui toda a infraestrutura do Kubernetes: clusters, nós, plataforma do container e até nuvens.

  • Aplique as atualizações do Kubernetes: atualizar as distribuições do Kubernetes aplicará patches e instalará novas ferramentas de segurança.
  • Proteja o servidor da API do Kubernetes: o servidor da API do Kubernetes é o gateway para o control plane do Kubernetes. Desative o acesso não autenticado/anônimo e use a criptografia de TLS para conexões entre kubelets e o servidor da API. Também é recomendável fazer a auditoria da geração de logs para identificar chamadas de API atípicas.
  • Proteja o etcd: o etcd é um armazenamento de chave/valor usado pelo Kubernetes para acesso a dados. Proteja o kubelet para minimizar a superfície exposta a ataques. Desabilite o acesso anônimo ao kubelet iniciando-o com o sinalizador --anonymous-auth=false e use o controlador de admissão NodeRestriction para limitar o que o kubelet pode acessar.

Segurança em nuvem

Não importa o tipo de nuvem (pública, privada, híbrida ou multicloud) que hospeda os containers ou executa o Kubernetes: o usuário (não o provedor da nuvem) é sempre responsável por proteger a carga de trabalho do Kubernetes, incluindo:

  • Imagens de container: origens, conteúdo e vulnerabilidades
  • Implantações: serviços de rede, armazenamento e privilégios
  • Gerenciamento de configurações: funções, grupos, vinculações de funções e contas de serviço
  • Aplicação: gerenciamento de segredos, rótulos e anotações do Kubernetes
  • Segmentação de rede: políticas de rede no cluster do Kubernetes
  • Runtime: detecção de ameaças e resposta a incidentes

Usar containers e o Kubernetes não muda seus objetivos de segurança, que é minimizar as vulnerabilidades e os riscos.

  • Incorpore as práticas recomendadas de segurança o quanto antes ao ciclo de vida dos containers: com o Kubernetes protegido, desenvolvedores e equipes de DevOps podem criar e implantar com confiança aplicações prontas para produção.
  • Use os controles de segurança nativos do Kubernetes: os controles nativos impedem que os controles de segurança entrem em conflito com o orquestrador
  • Deixe o Kubernetes priorizar a correção.

A proteção de aplicações nativas em nuvem e da infraestrutura subjacente requer mudanças significativas na abordagem de segurança. As empresas devem aplicar controles no início do ciclo de vida do desenvolvimento de aplicações, usar controles integrados para impor políticas que evitem problemas operacionais e de escalabilidade e acompanhar o ritmo cada vez mais acelerado dos cronogramas de lançamento.

O Red Hat® Advanced Cluster Security for Kubernetes é a plataforma de segurança nativa do Kubernetes do setor. Ele prepara as organizações para criar, implantar e executar aplicações nativas em nuvem de forma mais segura em qualquer lugar. A solução ajuda a aprimorar a segurança do processo de criação da aplicação, a proteger a plataforma de aplicação e suas configurações e a detectar e responder problemas no runtime. 

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