Melhore a segurança do seu ambiente Kubernetes com práticas eficazes

Melhore a segurança do seu ambiente Kubernetes com práticas eficazes

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 Guia completo para instalar e configurar o Nextcloud em seu sistema
Próxima Guia Completo: Monitorando OpenVPN no Firewall pfSense com Prometheus e Grafana

About author

Yago Ésquines
Yago Ésquines 5 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

DevOps

Guia completo: Como automatizar a coleta de dados na web com Python e Selenium

Muita gente na internet tem dúvida de como fazer robôs que buscam coisas em sites, baixam conteúdo ou simplesmente executam ações para testar alguma funcionalidade do site, sistema ou algo

DevOps

Migrando dados do Moodle de PostgreSQL para Elasticsearch: um guia passo a passo

Recebi a missão de gerar relatórios e estatísticas com os dados do Moodle. Porém, o LMS trabalha somente com bancos de dados relacionais como PostgreSQL e MySQL. O ambiente que

Infraestrutura TI

Entenda o Git: O que é, como funciona e como começar a usar

GIT? O que é? Git é um sistema de controle de versões distribuído, ou seja, ele não precisa de um servidor central para funcionar. É uma ferramenta open source, criada