Hardening Aplicado do Kubernetes: Um Playbook Prático
Um guia prático para hardening de clusters Kubernetes, cobrindo RBAC, segurança de pods, políticas de rede e controles de cadeia de suprimentos.
Kubernetes é entregue com flexibilidade, não segurança, como sua postura padrão. Cada porta aberta, função RBAC permissiva e pod irrestrito é um convite. Hardening de um cluster significa fechar sistematicamente essas lacunas sem quebrar as cargas de trabalho que dependem delas. Isso não é um exercício de checklist—é uma disciplina contínua que toca camadas de identidade, rede, carga de trabalho e cadeia de suprimentos.
Trancafie o Control Plane Primeiro
O servidor de API é o alvo mais valioso em qualquer cluster. Comece desabilitando autenticação anônima e aplicando métodos de autenticação fortes—integração OIDC com seu provedor de identidade é preferível a tokens estáticos ou certificados de cliente que nunca expiram. Restrinja o acesso ao datastore etcd, pois ele contém todos os objetos de segredo e config em texto simples a menos que criptografia em repouso esteja habilitada. Habilite criptografia para segredos usando um provedor KMS em vez de depender de codificação base64, que oferece zero proteção real. Logging de auditoria deve ser ativado desde o primeiro dia; sem ele, você não tem rastro forense quando algo dá errado.
RBAC: Privilégio Mínimo, Não Conveniência
A misconfiguration mais comum em clusters de produção é binding RBAC muito amplo—cluster-admin concedido a contas de serviço que só precisam ler pods em um namespace. Construa funções em torno de funções de trabalho reais e as escope para namespaces sempre que possível. Evite verbos curinga e recursos em definições de Role e ClusterRole. Audite regularmente bindings com ferramentas como kubectl auth can-i --list ou rbac-lookup para detectar aumento de privilégio. Contas de serviço merecem o mesmo escrutínio que usuários humanos—desabilite a montagem automática de tokens de contas de serviço para pods que não precisam de acesso à API.
Segurança de Pod: Assuma Comprometimento
Pod Security Admission (que substituiu a deprecated PodSecurityPolicy) permite que você aplique perfis baseline ou restritos no nível de namespace. No mínimo, proíba containers privilegiados, compartilhamento de namespace do host e escalonamento de privilégio. Defina runAsNonRoot: true e solte todas as capacidades Linux por padrão, adicionando apenas o que é explicitamente necessário. Filesystems de raiz somente leitura impedem que atacantes escrevam binários maliciosos em um container em execução. Esses controles importam porque um container escape ou vulnerabilidade de aplicação explorada não deve se traduzir em comprometimento completo do nó.
Políticas de Rede Não São Opcionais
Por padrão, todo pod em um cluster Kubernetes pode falar com todo outro pod. Esse modelo de rede plana é um sonho de movimento lateral para atacantes. Implemente recursos de NetworkPolicy para aplicar default-deny de ingresso e egresso, depois permita explicitamente apenas os fluxos de tráfego que suas aplicações requerem. Isso requer um plugin CNI que realmente suporte aplicação de NetworkPolicy—Calico, Cilium e outros preenchem esse papel já que o modelo de rede Kubernetes base não aplica nada por conta própria. Segmentar namespaces por limite de confiança e colocar políticas em camadas lhe dá defesa em profundidade real.
Integridade de Imagem e Cadeia de Suprimentos
Hardening não para na configuração de tempo de execução—começa com o que você implanta. Escaneie imagens de container para vulnerabilidades conhecidas antes que cheguem ao seu registry, e aplique que apenas imagens assinadas e verificadas possam rodar em seu cluster usando admission controllers como Kyverno ou OPA Gatekeeper. Fixe tags de imagem a digests em vez de tags mutáveis como latest, que podem mudar silenciosamente por baixo de você. Restrinja quais registries pods podem fazer pull, fechando um caminho comum para ataques de cadeia de suprimentos onde imagens comprometidas ou typosquatted escorregam para produção.
Gerenciamento de Segredos Além dos Padrões Kubernetes
Kubernetes Secrets nativos são melhor que nada, mas não são uma verdadeira solução de gerenciamento de segredos. Considere integrar um gerenciador externo de segredos—Vault, AWS Secrets Manager ou similar—e injetar segredos em tempo de execução em vez de armazená-los como objetos de cluster. Se você deve usar Secrets nativos, garanta que criptografia etcd esteja habilitada e RBAC restrinja fortemente o acesso de leitura, pois qualquer pod ou usuário com permissão get em segredos em um namespace pode exfiltrar credenciais.
Verificação Contínua, Não Configuração Única
Configurations de hardening derivam ao longo do tempo conforme novas cargas de trabalho são implantadas e prioridades se deslocam para velocidade sobre segurança. Ferramentas como kube-bench verificam conformidade contra o CIS Kubernetes Benchmark, enquanto kube-hunter pode simular reconhecimento de atacante contra seu cluster. Incorpore essas verificações em pipelines de CI/CD para que misconfigurações sejam detectadas antes que cheguem à produção em vez de durante uma chamada de resposta a incidente.
Hardening de Kubernetes é menos sobre um único controle silver-bullet e mais sobre colocar defesas em camadas entre identidade, rede, carga de trabalho e cadeia de suprimentos—para que uma falha em uma camada não cascateie em comprometimento completo. Para mais sobre padrões de segurança de infraestrutura em nuvem e ferramentas defensivas, explore segmentos relacionados na plataforma DEFENSE_GRID do Korra Studio.
Escrito com assistência de IA, revisado e publicado por Michal Pilch (CISSP), Korra Studio.
Esta é uma anotação da base de conhecimento da Korra Studio — a plataforma associa cada tema com mentoria 1-para-1.
Começar gratuitamentearrow_forward