Kubernetes: Avaliando a Segurança do Cluster – Part 1

Kubernetes: Avaliando a Segurança do Cluster – Part 1

A ampla utilização do Kubernetes (K8S) em ambientes produtivos traz uma alerta, de como esses ambientes estão sendo usados em relação as configurações e boas práticas de segurança da informação.

Ou seja, apenas usar o Kubernetes não garante que seu ambiente, ou mesmo os manifests (arquivos para gerenciar os recursos do K8S), estão com as configurações voltadas para Segurança da Informação em dia.

Sendo assim, o intuito desse post é mostrar como avaliar o ambiente Kubernetes em busca de problemas de segurança e ter, a partir disso, um direcionamento de como solucionar esses problemas.

Vale ressaltar que a apresentação desse post pode servir como um dos inúmeros meios de implantação do DevSecOps.

Saiba mais sobre DevSecOps no post: DevSecOps – Implementação em 6 passos

Mas como fazer essas avaliações? Para isso vamos usar ferramentas Opensource super práticas:

  • Minikube: Formas mais simples de ter um cluster Kubernetes básico.
  • Kube-bench: Ferramenta para avaliar se o ambiente Kubernetes segue as boas práticas de segurança da informação

Preparando o Laboratório

Para que todos possam fazer esse laboratório, vamos utilizar o Minikube. O Minikube tem como propósito criar um ambiente de desenvolvimento ou de testes, virtualizado de forma simples e rápida.

Já que o foco é a parte de Segurança, vamos seguir os passos de instalação do Minikube e Kubectl mencionados no post abaixo:

Então, após garantir a instalação do Minikube e o kubectl (binário para controlar os recursos do K8S) vamos fazer os seguintes comandos:

minikube start
kubectl get node

O resultado esperado é semelhante ao seguinte:

Com isso, já temos uma laboratório simples para que nossa avaliação da segurança seja efetiva.

Kube-bench

Vamos começar pelo Kube-bench!

Esse é um projeto, da Aqua Security, que visa avaliar as configurações gerais do cluster Kubernetes. E isso significa que ele tenta identificar desde configurações nos serviços, nodes e até na forma que as aplicações estão sendo configuradas.

Para isso, esse projeto usa como referência a CIS (Center for Internet Security) que disponibiliza gratuitamente documentos com boas práticas de configuração para inúmeras plataformas.

Saiba mais em CIS Benchmarks

Dessa forma, o Kube-bench executa uma avaliação usando o CIS Benchmark voltado para Kubernetes, e te traz o resultado de quais são as configurações que estão em compliance com as boas práticas apontadas pela CIS e, obviamente, as configurações que precisam de atenção.

Execução Kube-bench no cluster Kubernetes

O Kube-bench é executado em formato de contêiner, sendo assim basta fazer a criação de um objeto do tipo Job dentro cluster. Para facilitar, vamos usar o manifest já pronto dentro do projeto do Kube-bench (https://github.com/aquasecurity/kube-bench).

Agora, com o minikube ativo e com o kubectl já configurado podemos executar o seguinte comando:

# kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml
job.batch/kube-bench created

Dessa forma, o Job criou um Pod para executar a tarefa de avaliar o ambiente. Para sabermos o resultado, basta olharmos o Log do Pod criado pelo Job, e para isso devemos seguir os passos abaixo:

# kubectl get pod -o name
pod/kube-bench-gqjbj

O comando mostrou o nome do pod criado. É importante coletar essa informação, porque o nome do pod será diferente para cada execução ficando apenas com padrão kube-bench-xxxxx

Sendo assim, vamos usar esse nome do pod para coletar o resultado da avaliação:

 kubectl logs kube-bench-gqjbj 

Após isso, sairá na tela todo o resultado, semelhante ao print abaixo:

Conclusão

Podemos ver que existem 13 validações que falharam, ou seja, não estão em compliance, e um total 46 validações que precisam de uma análise mais específica. Para resolver esses pontos ou avaliá-los melhor, basta pegar a documentação gratuita da CIS para Kubernetes, identificar os tópicos numerados e executar dentro do documento os comandos e direcionamento para correção de cada etapa.

Atenção: Cada procedimento de correção tem que ser bem avaliado, já que alguns tópicos podem não ser adequados para a configuração no ambiente.

É importante lembrar que o projeto pode ser usado em um cluster on-premises ou mesmo em Cloud. Além disso, é aconselhado que o kube-bech seja executado após a criação de um cluster, para validar e garantir que o cluster entre em produção de acordo com as boas práticas de Segurança.

Mas, como avaliar a segurança, não apenas do ambiente, mas também dos manifests de deploy de objetos? Segura aí, que a continuação desse post vem em breve, para complementarmos as verificações de segurança em um Cluster Kubernetes.

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Instalando o Nextcloud com Docker Compose
Próxima Monitorando o serviço OpenVPN PfSense com Prometheus e Grafana.

About author

Yago Ésquines
Yago Ésquines 4 posts

Yago Ésquines, atua como Coordenador de TI em Software Livre, formado em Ciência da Computação pela Universidade Paulista (UNIP) e em Segurança da Informação pela FATEC São Caetano. Atua com foco em Linux, Automação, DevOps e DevSecOps, possuindo mais de 10 anos de experiência profissional em Tecnologia da Informação. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, Infraestrutura Ágil, DevSecOps e Kubernetes, além ser Certificado Linux Engineer(LPIC-2), CKA (Certified Kubernetes Administrator) e DevOps Essentials.

View all posts by this author →

Você pode gostar também

Desenvolvimento

Git: Adicione ciclos de vida aos seus arquivos

Git é um versionador de código fonte fácil de usar, isso quase todos sabem, entretanto sua experiência de uso pode ser bem confusa em alguns casos. Convido-os a uma breve

Infraestrutura TI

Teoria do Terraform

Primeiramente, uma breve descrição sobre o que é “Infraestrutura como Código” ? Infraestrutura como Código, Infra as Code, ou simplesmente IaC, é tratar a infra como um software, desenvolvendo, versionando, testando, depurando

DevOps

Containers – por que você precisa aprender para não ficar obsoleto ?

Docker, Kubernetes, Openshift, enfim … escalabilidade! A tecnologia de containers está moldando o futuro do desenvolvimento de software e está causando uma mudança estrutural no mundo da computação, principalmente quando