O Kubernetes (K8s) está, sem dúvida, em ascensão. De acordo com o relatório State of Cloud Development da SlashData, essa plataforma de orquestração de contêineres de código aberto já está sendo usada por 31% ou cerca de 5,6 milhões de desenvolvedores de back-end em todo o mundo. Além disso, uma pesquisa da Cloud Native Computing Foundation revela que 69% das empresas já estão usando o Kubernetes em produção.
Essa popularidade crescente significa apenas que as organizações já devem estar atentas às implicações de segurança cibernética de ter K8s integrados em suas operações. No entanto, à medida que os agentes de ameaças se concentram nos K8s, não é suficiente conhecer o básico. Também é hora de subir de nível.
Segurança do Kubernetes
A segurança do Kubernetes é essencialmente uma coleção de técnicas, estratégias e tecnologias criadas para proteger a plataforma Kubernetes e os contêineres que ela manipula. Isso significa proteger as cargas de trabalho do contêiner. É diferente das soluções de segurança convencionais porque envolve o uso de um novo conjunto de métodos e tecnologias projetados especificamente para lidar com as ameaças específicas que visam contêineres ou procedimentos de recursos isolados projetados para trabalhar com programas e suas dependências.
A segurança do Kubernetes aborda três preocupações principais: a API K8s, as práticas recomendadas para segurança de contêiner de pod e os 4 Cs de segurança nativa da nuvem, ou seja, contêiner, cluster, código e a própria nuvem.
Garantir que a interface de programação de aplicativos K8s seja segura é crucial para garantir que a plataforma Kubernetes seja segura. Isso permite que as organizações aproveitem ao máximo as vantagens de extensibilidade e escalabilidade do Kubernetes, verificando se a ampliação das superfícies de ataque não resulta no enfraquecimento da postura geral de segurança da organização.
Por outro lado, é importante adotar as melhores práticas para contêineres de pod. Isso inclui o uso de controle de acesso baseado em função (RBAC) , isolamento de nós K8s, monitoramento de tráfego de rede para detectar e remover acesso malicioso, uso de lista de permissões de processos, registro de auditoria e configuração de firewall e TLS para proteger etcd aglomerados .
Embora a segurança do K8 seja principalmente sobre proteção de camada de cluster, ela também busca alcançar segurança de ponta a ponta. É igualmente importante prestar atenção à defesa dos contêineres, código e nuvem. Da mesma forma, há uma necessidade de reduzir as oportunidades de erro humano e garantir configurações seguras dimensionadas programaticamente.
Kubernetes e testes shift-left
Seria preciso mais do que conhecer e aplicar o mínimo ou o básico da segurança do Kubernetes para ser realmente seguro. Até agora, os agentes de ameaças persistentes já estão aprendendo mais sobre os pontos fracos do K8 e encontrando novas maneiras de ter sucesso com seus ataques.
Como tal, existem especialistas em segurança que pressionam por uma estratégia de deslocamento à esquerda. O engenheiro de software e empresário de tecnologia Sylvain Kalache , por exemplo, diz que “devido à sua natureza declarativa, o Kubernetes é uma ótima ferramenta onde uma estratégia de deslocamento à esquerda pode ser implementada”. A segurança do Kubernetes pode ser aprimorada movendo o processo de teste mais cedo, para o estágio de desenvolvimento.
Essa abordagem de deslocamento à esquerda significa que cada desenvolvedor se torna essencialmente uma unidade de teste, pois os testes de segurança teriam que ser realizados em seu nível. Eles se envolvem mais na detecção e no tratamento de configurações incorretas, em vez de deixar que uma equipe diferente assuma a responsabilidade.
Em contraste, a abordagem shift-right, que tem sido a convenção na indústria de software, adia o teste de segurança para o estágio de produção ou pré-implantação do ciclo de vida do software. As avaliações e correções de segurança só são realizadas quando o software está pronto para implantação, o que parece lógico. Afinal, problemas de desempenho, problemas de experiência do usuário e outras preocupações podem ser testados melhor quando o software está realmente pronto para os usuários finais, não em um ambiente de teste.
No entanto, há argumentos que apoiam o deslocamento para a esquerda. Por um lado, fazer isso tem o efeito imediato de ampliar a cobertura de testes e detectar problemas antes que eles se agravem. Isso significaria mais trabalho para a equipe de desenvolvimento, mas resulta em melhor segurança. Ao mesmo tempo, aumenta a velocidade de entrega de aplicativos e permite que os desenvolvedores façam algo para evitar a frustração potencial de ver seu código em pré-produção sem poder resolver possíveis problemas de segurança.
“Tanto as estratégias shift-right quanto shift-left têm prós e contras, mas a estratégia shift-left está surgindo, que geralmente é onde as empresas precisam melhorar”, explica Kalache.
Mudar para a esquerda é mais fácil dizer do que fazer, no entanto. Um dos maiores obstáculos é o compromisso das organizações de fazer os testes mais cedo durante o estágio de desenvolvimento. Esta seria uma decisão importante que também tem implicações de custo de material e eficiência operacional.
Além disso, a proficiência da equipe de desenvolvimento para realmente fazer testes competentes também é um desafio. Nem todos estão equipados com o conhecimento certo e atualizado para isso. Seria necessário ter as ferramentas certas para fazer os testes.
“Organizar sessões de brainstorming para criar uma linha de base de teste que todos estejam cientes e concordem é uma obrigação. Fornecer ferramentas amigáveis aos desenvolvedores para detectar erros de configuração também aumentará a chance de ter a equipe a bordo”, afirma Kalache.
Simplificando em direção a uma melhor segurança K8s
Um relatório recente diz que quase um milhão de instâncias de console do Kubernetes foram expostas na Internet. A principal razão para isso é a configuração incorreta, que acontece quase inevitavelmente devido às complexidades do gerenciamento do K8s. Muitos concordam que lidar com o Kubernetes não é fácil. Uma rápida pesquisa no Google mostraria os muitos artigos e vídeos que discutem essa realidade.
A antítese da complexidade é a simplicidade, e é disso que as organizações precisam para se sair melhor. Simplificar o Kubernetes pode não ser tão simples quanto parece, mas é factível. As dicas a seguir devem ajudar.
- Afastando-se de vários clusters – Ter vários clusters sob um plano de controle comum complica o gerenciamento de K8s, especialmente quando se trata de armazenamento, rede e segurança. É aconselhável manter o número de clusters o mais baixo possível.
- Usando serviços gerenciados do K8s – Uma das razões pelas quais o Kubernetes é um desafio para gerenciar é a realidade de lidar com um amplo conjunto de servidores. Isso pode ser facilmente resolvido com a utilização de serviços gerenciados do K8s, como EKS e AWS, que lidam automaticamente com o gerenciamento de infraestrutura e fornecem um plano de controle gerenciado para o software K8s para facilitar a configuração do cluster.
- Aproveitando o escalonamento automático do K8s – O escalonamento automático de nó opcional geralmente faz parte da maioria dos serviços gerenciados do Kubernetes. Ele elimina a necessidade de adicionar ou remover nós de clusters de forma manual e tediosa, pois pode executar essas tarefas automaticamente com base nas alterações de demanda.
- Usando Helm – Helm é um sistema de gerenciamento de pacotes de código aberto projetado especificamente para Kubernetes. Ele permite a instalação, atualização e remoção de aplicativos no Kubernetes sem a necessidade de gravar arquivos de implantação do zero. Ele faz o trabalho com alguns comandos, assim como dnf ou apt funcionam no Linux.
- Definindo vários namespaces – o K8s oferece suporte à definição de vários namespaces, que são ambientes virtuais que separam as cargas de trabalho umas das outras. Ter vários namespaces permite que os desenvolvedores executem e gerenciem um conjunto de contêineres separadamente de outros conjuntos. Isso simplifica o gerenciamento de cargas de trabalho porque permite a configuração de diferentes políticas de controle de acesso e outras regras ancoradas em namespaces separados específicos.
Esquerda e simples
Mudar para a esquerda tem sido uma palavra de ordem comum no campo da segurança cibernética recentemente. Não é exatamente o único foco em tornar o Kubernetes mais seguro, mas aplicá-lo à segurança do K8 tem benefícios reais. Em conjunto com os esforços para simplificar o gerenciamento do Kubernetes, as organizações podem aproveitar ao máximo os K8s sem as vulnerabilidades ou fraquezas de segurança indesejadas.
FONTE: HELPNET SECURITY