fbpx

 O que é segurança do Kubernetes? Como proteger seu ambiente Kubernetes 

Kubernetes é hoje a plataforma de orquestração de contêineres  mais utilizada no mundo, Kubernetes é um sistema de orquestração de contêineres open-source que automatiza a implantação, o dimensionamento e a gestão de aplicações em contêineres, permitindo a execução de aplicativos escalonáveis e confiáveis. Com sua API fácil de usar e características amigáveis ao desenvolvedor, o Kubernetes se tornou uma parte indispensável do ecossistema de nuvem. 

Como uma plataforma popular, Kubernetes se torna também muito visada por hackers e criminosos.

A segurança do Kubernetes é uma coleção de práticas recomendadas projetadas para manter o ambiente do Kubernetes protegido contra ameaças e vulnerabilidades na nuvem. 

A mudança de paradigma na arquitetura e nas operações de software inspirou mudanças significativas na segurança. Com aplicativos de microsserviços e contêineres implantados em plataformas de nuvem, como Kubernetes, são necessários princípios de segurança nativos da nuvem. Isto porque, ao contrário dos data centers tradicionais, a nuvem tem perímetros de segurança ampmpliados, o que leva a novos desafios.

Vulnerabilidades de segurança mais comuns do Kubernetes

Os desenvolvedores precisam ficar atentos as  vulnerabilidades na nuvem que podem impactar negativamente a segurança do Kubernetes durante todo o ciclo de vida de desenvolvimento, que inclui as partes de construção, implantação e tempo de execução do processo.

  1. Criar vulnerabilidades : uso de código não confiável com malware oculto que pode conceder acesso a agentes de ameaças sem o seu conhecimento. Além disso, os aplicativos em contêineres às vezes possuem pacotes ou bibliotecas em excesso que não são necessários e podem ser comprometidos. Remover esses pacotes excedentes é um bom ponto de partida. 
  2. Vulnerabilidades de implantação : não ter uma solução de gerenciamento de acesso de identidade pode significar que suas equipes estão concedendo privilégios desnecessários a usuários que não precisam de acesso e podem estar comprometidos ou ter intenções maliciosas. Isto abre a porta para um mundo de vulnerabilidades, como ameaças internas ou ataques cibernéticos que podem facilmente se espalhar através de movimentos laterais.
  3. Vulnerabilidades em tempo de execução : durante o tempo de execução, todos os elementos da infraestrutura Kubernetes contêm sua própria superfície de ataque, o que pode ser um desafio para acompanhar.

    Superfície de ataque do Kubernetes

Um cluster Kubernetes consiste em nós e componentes do plano de controle.

 

O plano de controle é o cérebro dos clusters Kubernetes, onde as definições e o estado de todos os recursos do Kubernetes são gerenciados e armazenados. É um vetor crítico para os invasores. Se um hacker obtiver acesso aos componentes do seu plano de controle, ele poderá implantar contêineres, ler segredos ou até mesmo excluir todo o cluster.

Os nós são onde a carga de trabalho real do Kubernetes é executada. Todos os seus aplicativos e bibliotecas são implantados como contêineres e executados nos nós, o que significa que eles, além da camada de aplicativos, também precisam de proteção. Se o sistema operacional do nó tiver vulnerabilidades, isso pode levar a acessos indesejados. Da mesma forma, se qualquer dependência ou biblioteca nos contêineres do seu aplicativo tiver vulnerabilidades, os invasores poderão explorá-las para acessar seu aplicativo e seus dados.

O terceiro e último vetor é onde os clusters Kubernetes são executados: a nuvem. O acesso a serviços em nuvem, como gerenciamento de usuários ou um serviço gerenciado do Kubernetes, poderia conceder-lhes privilégios iguais aos de um operador do Kubernetes.

Na seção a seguir, discutiremos cada etapa do ciclo de vida de um aplicativo em um cluster Kubernetes para proteger a superfície de ataque.

O que proteger em cada estágio do ciclo de vida do Kubernetes

O ciclo de vida de segurança do Kubernetes cobre a jornada completa de um aplicativo, desde o código-fonte até uma implantação em execução no Kubernetes. Cada etapa tem seus problemas específicos de vulnerabilidade e requer muito cuidado.

Antes do cluster Kubernetes

Kubernetes executa aplicativos empacotados como contêineres. Isso significa que você precisa criar imagens de contêiner com um executável de aplicativo e dependências. Com as últimas tendências em desenvolvimento de software, a construção e o lançamento de aplicativos e imagens de contêiner são feitos em pipelines como Jenkins , GitHub Actions ou GitLab CI/CD para entregar mais rápido e com menos esforço.

Além disso, a varredura de imagens é um processo de segurança de contêiner tratado como parte de pipelines de CI/CD para a detecção precoce de problemas de segurança. Deve incluir as seguintes etapas:

  • Verifique os arquivos e configurações do seu sistema operacional, pacotes de software, bibliotecas e binários
  • Analise o Dockerfile em busca de falhas de segurança, como portas expostas ou acesso privilegiado

Existem ferramentas populares de código aberto e comercialmente disponíveis para digitalização de imagens de contêineres, como Anchore Engine , CoreOS/Clair , OpenSCAP e Falcon Image Assessment . Essas ferramentas também possuem um rico conjunto de pontos de integração para serem usados como parte de pipelines de CI/CD.

Resumindo, há duas coisas que você precisa proteger antes de iniciar sua jornada no Kubernetes:

  • Pipelines de CI/CD
  • Imagens de contêiner

Dentro do cluster Kubernetes

Kubernetes é um sistema complexo com arquitetura em camadas e APIs bem definidas. Ele foi projetado como uma plataforma extensível com múltiplos pontos de extensão . Eles permitem desenvolver novos plug-ins de rede para oferecer suporte à infraestrutura de rede personalizada ou criar operadores Kubernetes para transformar a experiência humana em código. No entanto, esta extensibilidade torna todo o cluster vulnerável em vários locais.

Existem cinco locais importantes que você precisa garantir para obter segurança dentro de um cluster Kubernetes: o plano de controle do Kubernetes, o acesso à API do Kubernetes, a rede, os nós e o contêiner e o tempo de execução.

1. Plano de controle do Kubernetes

O plano de controle do Kubernetes consiste nos serviços principais que mantêm todo o cluster em funcionamento. A especificação e o estado dos recursos do Kubernetes são gerenciados por componentes do plano de controle e armazenados no etcd , um banco de dados de chave/valor distribuído de código aberto. Para proteger o plano de controle, execute as seguintes ações:

  • Torne o etcd acessível apenas por meio da API Kubernetes com permissões corretas, colocando restrições em firewalls como iptables e netfilters para instâncias do etcd e acesso autenticado entre API e etcd.
  • Use e configure controladores de admissão no Kubernetes upstream ou escreva seus próprios controladores de admissão e implemente regras de segurança personalizadas.
  • Configure uma política de auditoria no cluster para definir quais eventos serão registrados e armazenar os logs no sistema de arquivos ou enviá-los para sistemas externos por meio de webhooks.

2. Acesso à API Kubernetes

A API Kubernetes é a interface do plano de controle para usuários externos, tornando a autenticação e autorização partes cruciais da segurança.

  • Para autenticar usuários reais, você precisa se conectar a serviços LDAP ou serviços de identidade em nuvem. Kubernetes fornece OpenID Connect (OIDC) para uso como provedor de autenticação externo. Isso permite que você use a instalação LDAP em sua empresa e faça com que todos façam login no Kubernetes com suas contas de usuário de trabalho. É altamente recomendável proteger o acesso ao cluster Kubernetes por meio de autenticação com um provedor OIDC.
  • Use  o controle de acesso baseado em função (RBAC) para definir especificações de controle de acesso com ações como leitura, atualização e exclusão em cada objeto e namespace do Kubernetes. Você precisa projetar a hierarquia de usuários, grupos de usuários e níveis de acesso com muito cuidado e criar definições de RBAC correspondentes em clusters Kubernetes.

3. Rede

Os pods em execução em clusters do Kubernetes podem se conectar facilmente a outros pods com recursos de rede do Kubernetes. Para criar uma comunicação segura dentro do cluster, você deve:

  • Configure políticas de rede e especificações nativas do Kubernetes para criar firewalls com pods e namespaces.
  • Implante plug-ins de rede de terceiros, como Calico ou Weaveworks , e uma malha de serviço como Istio . Se você instalar algum plugin de rede, é vital configurar todas as opções de segurança e mantê-las atualizadas.

4. Nós

Os nós do Kubernetes executam a carga de trabalho real do Kubernetes – seu software como aplicativos em contêineres. Em cada nó do Kubernetes, existe um agente chamado kubelet para comunicação entre o plano de controle e o mecanismo de contêiner no nó. Portanto, você precisa proteger os dois lados do kubelet:

  • Comunicação entre a API Kubernetes e o kubelet, que deve se conectar à API Kubernetes usando certificados com função de cluster limitada.
  • Comunicação entre o kubelet e o mecanismo de contêiner. O kubelet e o mecanismo de contêiner, como o daemon Docker, são executados no sistema operacional do nó, portanto, é altamente recomendável usar um sistema operacional host mínimo. Também é fundamental ter os patches de sistema e de segurança mais recentes instalados.

Em ambientes de nuvem, os nós são considerados efêmeros, pois podem ser criados e excluídos sob demanda. Isso significa que é vital não deixar dados essenciais no sistema de arquivos do nó. Além disso, sugere-se usar solicitações e limites de recursos para manter os nós saudáveis e com capacidade suficiente.

5. O contêiner e o tempo de execução

A última etapa no ciclo de vida de um aplicativo em contêiner é implantá-lo como um pod e executá-lo como um contêiner em um nó do Kubernetes. Mesmo que você tenha feito tudo corretamente, vulnerabilidades como configurações incorretas , vulnerabilidades de dia zero , escalações de privilégios e malwarec podem surgir durante o tempo de execução.

Para se proteger contra ameaças ativas enquanto os contêineres estão em execução, você pode adotar ferramentas de código aberto como seccomp , AppArmor ou SELinux , que se concentram em escalações de privilégios e na limitação do acesso aos binários em sistemas Linux. Embora isso ofereça alguma proteção, não é suficiente para proteção em tempo de execução contra malware.

Para proteção total, fale com o time Infomach e utilize uma solução moderna e nativa da nuvem como CrowdStrike Falcon Cloud Security , uma solução de isolamento de segurança que pode funcionar em vários provedores de nuvem e proteger nós e contêineres em execução nos nós.

 Entre em contato com a Infomach para iniciar agora mesmo um projeto de proteção de seu ambiente Kubernetes ou mesmo de todo seu ambiente de Nuvem. https://info.infomach.com.br/contato_especialista 

 

Procurar

Encontre o conteúdo que deseja

Categorias

Newsletter

Assine nossa newsletter e receba diretamente em seu e-mail nossos informativos.

Redes Sociais