Garantindo que as imagens de contêiner estejam livres de vulnerabilidades conhecidas antes da implantação.
→Integrar um scanner de imagens como Trivy, Clair ou Grype no pipeline de CI/CD para escanear imagens e falhar a compilação se vulnerabilidades críticas forem encontradas.
Por quê: Automatiza a detecção de vulnerabilidades precocemente ("shift left"), impedindo que código vulnerável chegue à produção.
Garantindo que apenas imagens de contêiner confiáveis e não modificadas sejam implantadas no cluster.
→Assinar imagens com uma ferramenta como Cosign no pipeline de CI. Usar um controlador de admissão validador (por exemplo, Kyverno, Gatekeeper) para verificar a assinatura no momento da implantação.
Por quê: Fornece prova criptográfica da integridade da imagem (não foi adulterada) e proveniência (veio de uma fonte confiável).
Detectando atividade maliciosa dentro de um contêiner em execução (por exemplo, shell criado, acesso a arquivos sensíveis).
→Implantar uma ferramenta de segurança em tempo de execução como Falco, que usa eBPF para monitorar chamadas de sistema e alertar sobre comportamento suspeito com base em um conjunto de regras definido.
Por quê: Fornece visibilidade da atividade em tempo de execução, que a varredura estática e o controle de admissão não conseguem ver. É crucial para detectar violações ativas.
Impondo políticas de segurança personalizadas e específicas da organização (por exemplo, "todas as imagens devem vir do nosso registro corporativo").
→Usar um motor de políticas como OPA Gatekeeper ou Kyverno como controlador de admissão validador para impor políticas escritas em Rego ou YAML.
Por quê: Permite a aplicação flexível, declarativa e automatizada de políticas de segurança que vão além dos controles embutidos do Kubernetes.
Criptografando e autenticando todo o tráfego de serviço para serviço dentro do cluster.
→Implementar uma service mesh (por exemplo, Istio, Linkerd) para fornecer automaticamente TLS mútuo (mTLS) para todos os serviços na mesh.
Por quê: Alcança uma rede zero-trust, garantindo que todo o tráfego dentro do cluster seja criptografado e que os serviços verifiquem mutuamente a identidade uns dos outros.
Executando workloads não confiáveis ou multi-tenant que exigem isolamento mais forte do que contêineres padrão.
→Usar um runtime de contêiner em sandbox como gVisor ou Kata Containers, que fornecem uma camada adicional de isolamento entre o contêiner e o kernel do host.
Por quê: Reduz a superfície de ataque do kernel do host, tornando a fuga do contêiner significativamente mais difícil.
Controle granular sobre as permissões de um contêiner no nível do kernel.
→Usar perfis Seccomp para filtrar chamadas de sistema permitidas e perfis AppArmor/SELinux para impor controles de acesso obrigatórios (MAC) no acesso a arquivos e redes.
Por quê: Esses recursos de segurança nativos do Linux fornecem uma camada profunda de defesa, restringindo o que um processo de contêiner comprometido pode fazer fundamentalmente.
Reduzindo a superfície de ataque dentro de uma imagem de contêiner.
→Construir imagens de aplicação usando imagens base mínimas ou "distroless" que contenham apenas a aplicação e suas dependências diretas.
Por quê: Remove shells, gerenciadores de pacotes e outras utilidades que são desnecessárias para produção e poderiam ser usadas por um atacante após um comprometimento.