Blog

Kubernetes 1.29: a perspectiva da segurança

Kubernetes 1.29 será  o último lançamento  da equipe Kubernetes para 2023. A nova versão tem 49 melhorias, com uma infinidade de beta e estáveis, além de um grande número de correções de bugs.

Como  profissionais de segurança do Kubernetes, exploramos o lançamento para encontrar os recursos e melhorias mais notáveis ​​centrados na segurança. Este blog foi feito sob medida para aqueles que têm um olhar atento à segurança, com o objetivo de detalhar como essas mudanças impactarão e melhorarão a postura de segurança dos clusters Kubernetes.

Compreender o significado destas melhorias requer não apenas uma compreensão do que são, mas também das suas implicações. Cada um fornece uma peça diferente do quebra-cabeça, contribuindo para uma visão mais ampla de um Kubernetes mais seguro, eficiente e confiável.

Melhorias gerais

O Kubernetes 1.29 traz uma coleção de melhorias gerais que, embora não sejam exclusivamente focadas na segurança, contribuem significativamente para a postura de segurança dos clusters Kubernetes, melhorando a confiabilidade, o gerenciamento de recursos e a eficiência operacional.

Ponto final de métricas de recursos ( estável )

Expor métricas de recursos de nós sobre recursos de primeira classe permite um gerenciamento de recursos mais eficiente. A segurança é reforçada, pois permite que os operadores detectem e evitem a escassez de recursos, o que pode ser um vetor para certos tipos de ataques. Ao garantir que os clusters operem de forma eficiente e que os recursos sejam alocados de forma adequada, as operadoras podem evitar cenários em que as cargas de trabalho críticas tenham poucos recursos e sejam potencialmente vulneráveis.

Ação do sono do ciclo de vida do pod ( Alfa )

A introdução de uma ação de suspensão para atrasar o encerramento dos pods é crucial para a depuração e pode ser benéfica para o encerramento normal dos serviços. Esse recurso permite que os administradores investiguem e capturem o estado dos pods antes de serem encerrados, o que pode ser útil para identificar e resolver problemas de segurança.

Com o novo recurso, você pode adicioná-lo à especificação do seu pod para atrasar o encerramento do pod:apiVersion: v1 kind: Pod metadata: name: my-debug-pod spec: containers: – name: my-container image: my-image ciclo de vida: preStop: sleep: duração: “60s” # Atraso o término em 60 segundos

Contêineres Sidecar ( Beta )

Sidecars são contêineres auxiliares que adicionam funcionalidade a um contêiner primário. Um melhor tratamento dos eventos do ciclo de vida dos contêineres secundários significa que o registro, o monitoramento e os agentes de segurança executados como sidecars podem ser gerenciados de maneira mais confiável; isto, por sua vez, garante que estes serviços críticos permaneçam operacionais durante todo o ciclo de vida da aplicação principal, aumentando a fiabilidade destes serviços de segurança.

Os contêineres secundários são definidos como parte dos contêineres init na especificação do pod com uma política de reinicialização específica de Always:apiVersion: v1 kind: Pod metadata: name: my-pod spec: initContainers: – name: proxy image: envoy:latest # Diferente de outros contêineres init, este contêiner init estará sempre em execução: restartPolicy: Always…

Nesta versão os contêineres do carro lateral agora estão desabilitados. Além disso, agora você pode encerrar sidecars na ordem inversa de sua inicialização.

Transição SPDY para WebSockets ( Alfa )

Esta mudança visa descontinuar o SPDY em favor dos WebSockets para comunicações do servidor API Kubernetes. WebSockets fornecem um protocolo mais moderno e escalonável que pode melhorar a confiabilidade geral e a capacidade de manutenção das comunicações do Kubernetes. Isso pode aumentar a segurança, garantindo que os protocolos de comunicação usados ​​pelo Kubernetes sejam robustos e bem suportados.

Essas melhorias gerais contribuem para um ambiente Kubernetes mais seguro e eficiente. Ao melhorar a confiabilidade, o desempenho e o controle operacional subjacentes do Kubernetes, os recursos acima estabelecem as bases para uma plataforma de infraestrutura mais segura, capaz de hospedar cargas de trabalho sensíveis e críticas.

Melhorias de segurança

Com uma base sólida de melhorias gerais no Kubernetes 1.29, agora podemos nos concentrar nos recursos explicitamente projetados para aumentar a segurança do ecossistema Kubernetes. Essas melhorias abordam alguns dos aspectos mais críticos da segurança nativa da nuvem, como autenticação, autorização e gerenciamento seguro de carga de trabalho.

Configuração de autorização estruturada ( alfa )

A autorização no Kubernetes tem sido tradicionalmente gerenciada por meio de RBAC (controle de acesso baseado em funções), que pode se tornar complicado à medida que o número de funções e políticas aumenta. Essa mudança propõe um modelo de configuração mais estruturado, que melhora a gerenciabilidade e a rastreabilidade. Com uma configuração de autorização mais clara, as auditorias de segurança são simplificadas, facilitando a aplicação e verificação de políticas de acesso.

Com a configuração a seguir, é possível proteger CRDs no namespace kube-system contra exclusão:apiVersion: apiserver.config.k8s.io/v1alpha1 kind: AuthorizationConfiguration autorizadores: – type: Webhook name: crd-protector webhook:… failedPolicy: Negar… matchConditions: – expressão: has (request.resourceAttributes) – expressão: request.resourceAttributes.namespace == ‘kube-system’ – expressão: request.resourceAttributes.verb em [ ‘update’ , ‘delete’ , ‘deletecollection’ ] – tipo: Nó – tipo: RBAC

Melhorias no token da conta de serviço vinculada ( alfa )

Os tokens de conta de serviço representam um aspecto significativo da segurança do Kubernetes e são usados ​​para autenticar cargas de trabalho no cluster. O Kubernetes 1.29 aumenta a segurança desses tokens vinculando-os a instâncias de pod específicas, evitando seu uso indevido em caso de exfiltração. Isso vincula o uso de um token de conta de serviço ao ciclo de vida do pod, reduzindo a janela de oportunidade para um invasor explorar um token roubado.

Redução de tokens de conta de serviço baseados em segredo ( beta )

Além do aprimoramento das “Melhorias no token de conta de serviço vinculado” e da redução do escopo dos tokens de conta de serviço, essa melhoria busca reduzir a dependência de tokens de conta de serviço baseados em segredo de longa duração. Ao limitar o uso desses tokens, a superfície de ataque potencial é significativamente diminuída.

Essa mudança se alinha com a tendência mais ampla do setor de credenciais just-in-time de curta duração que minimizam as chances de vazamento de tokens levando ao acesso não autorizado.

Garanta imagens secretas extraídas ( alfa )

As imagens de contêiner  geralmente contêm componentes confidenciais, tornando crítica a segurança das operações de extração de imagens. O novo recurso alfa garante que as imagens sejam sempre extraídas usando os segredos do Kubernetes do pod que as utiliza. Isso é importante quando o Kubelet extrai uma imagem para um pod e outro pod está apontando para a mesma imagem. Até agora, a solicitação de imagem do segundo pod não precisava de autenticação, pois ainda usava as credenciais do primeiro. Isso pode levar a acesso não autorizado. Ao proteger o processo de extração de imagens, esse aprimoramento evita que invasores interceptem ou adulterem imagens de contêineres, o que é vital para manter a integridade das cargas de trabalho.

Suporte para Namespaces de Usuário ( Alfa )

Namespaces  no Linux atuam como uma forma de virtualização, fornecendo isolamento entre vários aspectos do kernel. Este aprimoramento alfa oferece suporte a namespaces de usuário e melhora a segurança do Kubernetes, permitindo um controle mais granular sobre processos em contêineres. Isso significa melhor isolamento e separação de cargas de trabalho, o que, por sua vez, reduzirá o risco de  ataques de escalonamento de privilégios . Você pode ativar um namespace de usuário para um pod definindo o  hostUsers campo:apiVersion: v1 kind: Pod metadata: name: my-pod especificação: hostUsers: contêineres falsos: – nome: comando shell: [“sleep”, “infinity”] imagem: debian

Configuração de autenticação estruturada ( alfa )

Semelhante à contraparte de autorização, o Kubernetes 1.29 fornece outro recurso alfa para configuração estruturada para mecanismos de autenticação. Esse aprimoramento oferece aos usuários uma abordagem mais sustentável e segura para gerenciar a autenticação, permitindo que os administradores implementem esquemas de autenticação complexos de forma mais eficiente e com menos espaço para erros.

Com a nova melhoria, agora é possível configurar vários provedores OIDC, clientes e regras de validação:apiVersion: apiserver.config.k8s.io/v1alpha1 kind: AuthenticationConfiguration jwt: – issuer: ClaimValidationRules: … – expression: ‘ claims.exp – Claims.nbf <= 86400′ mensagem: a vida útil total do token não deve exceder 24 horas ClaimMappings: nome de usuário: expressão: ‘claims.username + “:external-user”’ groups: expressão: ‘claims.roles.split(“,” )’ … userValidationRules: – expressão: “!user.username.startsWith(‘system:’)” mensagem: nome de usuário não pode ser usado sistema reservado: prefixo – expressão: “user.groups.all(group, !group.startsWith(‘system :’))” mensagem: grupos não podem usar sistema reservado: prefixo

Melhorias no KMS v2 ( estável )

O Kubernetes Key Management Service (KMS) é fundamental para o gerenciamento seguro e criptografia de segredos. Com a nova versão do Kubernetes, este se tornou um recurso estável que se concentra em melhorar a estrutura do plugin KMS, que é fundamental para o gerenciamento seguro de segredos. Essas melhorias garantem que os segredos do Kubernetes continuem sendo um método robusto e seguro para armazenar informações confidenciais.

Conclusão

A versão 1.29 do Kubernetes representa o compromisso da comunidade com a melhoria contínua, com diversas atualizações que melhoram a estabilidade e a eficiência. Do ponto de vista da segurança, destacamos como o lançamento contribui para o fortalecimento do Kubernetes, abordando ameaças emergentes no cenário.

Nossa exploração ressalta a natureza evolutiva do Kubernetes: cada versão é um avanço em termos de confiabilidade e desempenho para as diversas necessidades de sua base global de usuários. Para uma visão geral abrangente dos novos recursos da v1.29 e seu impacto, visite o  blog oficial do projeto Kubernetes  e o  repositório GitHub .

Artigo originalmente publicado em Blog CNCF

DNX Brasil – Soluções cloud-native

close
Start typing to see posts you are looking for.
Sidebar Scroll To Top
Instagram YouTube linkedin