Security Question #019e3a4f
Qual das seguintes opções é um hábito de segurança recomendado no Kubernetes?
Executar os containers como o usuário com ID de grupo 0 (root) e qualquer ID de usuário.
Desabilitar a escalação de privilégios dentro de um container como opção padrão.
Executar os containers como o usuário com ID de usuário 0 (root) e qualquer ID de grupo.
Permitir a escalação de privilégios dentro de um container como opção padrão.
Official Explanation / Community Explanations
Resumo
Desabilitar a escalação de privilégios dentro de um container é um hábito de segurança recomendado no Kubernetes. Essa configuração impede que processos dentro do container obtenham mais privilégios do que seu processo pai, o que é uma defesa fundamental contra ataques de fuga do container.
Como Funciona
No Kubernetes, o campo SecurityContext na especificação de um Pod ou container permite que administradores controlem configurações relacionadas à segurança. A flag AllowPrivilegeEscalation, quando definida como false, garante que nenhum processo no container possa ganhar privilégios adicionais (por exemplo, via binários setuid ou capabilities) além daqueles inicialmente concedidos. Isso é aplicado pelo kernel Linux através da flag no_new_privs, que bloqueia operações como setuid ou setgid que elevariam privilégios.
Por que a Resposta Correta está Correta
Definir allowPrivilegeEscalation: false é uma prática recomendada de segurança porque limita o impacto de um container comprometido. Mesmo que um invasor obtenha acesso ao container, ele não pode escalar para root ou obter capabilities adicionais. Isso é recomendado pela documentação do Kubernetes e por benchmarks de segurança como o CIS Kubernetes Benchmark.
Por que as Respostas Incorretas estão Erradas
- Executar containers como root (ID de usuário 0): Isso é inseguro porque o root dentro de um container tem amplas capabilities e pode potencialmente escapar para o host se não for devidamente restrito. As práticas recomendadas de segurança do Kubernetes sugerem executar containers com um usuário não root.
- Permitir escalação de privilégios como padrão: Isso é perigoso porque permite que processos ganhem mais privilégios, aumentando o risco de fuga do container. O padrão no Kubernetes é permitir a escalação de privilégios, mas deve ser explicitamente desabilitado por segurança.
- Executar containers com ID de grupo 0 (root): Similar a executar como usuário root, usar o grupo root pode conceder privilégios desnecessários. O princípio do menor privilégio determina o uso de um grupo não root.
Conclusão Principal
Sempre desabilite a escalação de privilégios (allowPrivilegeEscalation: false) nos contextos de segurança do seu Pod e evite executar containers como root ou com associação ao grupo root. Use um usuário e grupo não root, e remova todas as capabilities desnecessárias para uma implantação Kubernetes mais segura.