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 daremos algumas dicas de como ter segurança em contêineres.
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 desnecessários 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 Seccompfornecido 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
E por hoje mantemos seguros os containers, acompanhe nosso blog para ficar por dentro dos próximos artigos sobre o assunto.
Referências
https://docs.aws.amazon.com/pt_br/AmazonECS/latest/bestpracticesguide/security-runtime.html