Segurança de container — Tempo de execução
A segurança em tempo de execução oferece proteção ativa aos contêineres durante a execução. E no que isso importa ?
A ideia é detectar e evitar que atividades maliciosas ocorram em seus contêineres durante o voo.
Então aqui vai algumas dicas…
Forneça apenas os recursos de que cada container precisa para operações normais, para que containers não autorizados não consumam todos os recursos.
- No ECS, isso é feito pelo dimensionamento de tarefas (tasks)
- No EKS, isso é feito com “resource limits, namespace limit ranges, and namespace resource quotas”
Restringir privilégios root aos containers
A menos que você especifique um usuário, seus containers serão executados como o mesmo usuário do Docker
Isso significa ROOT
Containers priviligiados são um risco à segurança.
Para o Amazon ECS:
- ECS_DISABLE_PRIVILEGED = true
Contexto de segurança de container Kubernetes
- Não execute como root
- Não permitir escalonamento de privilégios
- Sistema de arquivos com somente leitura
- Tire todos os recursos desnecessarios do Linux
Práticas recomendadas de segurança em tempo de execução do Kubernetes
- Negar “mounting host path” (exceto para EmptyDir)
- Restringir o uso da rede de host
- Habilitar o perfil Seccomp fornecido pelo runtime do container
• Recurso do kernel Linux que restringe chamadas de sistema não autorizadas
• Imponha políticas de segurança usando Política como código (PaC)
- OPA, Gatekeeper, Kyverno
- Os PSPs estão limitados a pods (em breve também serão descontinuados — versão 1.25.1)
- Soluções PaC pode gerenciar todos os recursos do Kubernetes
Perícia forense de tempo de execução de containers com Falco
Falco é um OSS “… Ferramenta cloud native open source da CNCF de segurança”.
- Um shell está sendo executado dentro de um container ou pod no Kubernetes.
- Um container está sendo executado no modo privilegiado ou está montando um caminho sensível, como /proc, a partir do host.
- Um processo do servidor está gerando um processo filho de um tipo inesperado.
- Leitura inesperada de um arquivo confidencial, como/etc/shadow.
- Um arquivo que não seja do dispositivo é gravado em /dev.
- Um binário de sistema, como ls, está fazendo uma conexão de rede de saída.
- Um pod privilegiado é iniciado em um cluster do Kubernetes.
Segurança de runtime com soluções de terceiros
- Análise dinâmica de ameaças para containers
- Avaliação dinâmica de riscos de cargas de trabalho em um cluster Kubernetes
- Varreduras estáticas e dinâmicas para examinar imagens no pipeline de CI/CD
- Evite desvios e imponha a imutabilidade dos containers em funcionamento
- Injeção de segredos sem persistência no disco
Referências
https://docs.aws.amazon.com/pt_br/AmazonECS/latest/bestpracticesguide/security-runtime.html