O uso de contêineres continua crescendo. Seja por meio de aplicativos nativos da nuvem e sem servidor ou pelo desejo de modernizar monólitos, os contêineres estão rapidamente se tornando a plataforma preferida para implantação de aplicativos.
A Sysdig lançou recentemente seu relatório de uso de contêineres de 2019 com base em dados coletados de clientes de seus serviços de nuvem pública e locais. Os dados cobriram mais de dois milhões de contêineres.
Além da descoberta realmente empolgante (se você for como eu) de que 60% desses contêineres estão executando o NGINX, a Sysdig revelou algumas estatísticas de segurança bastante preocupantes.
Considere isto: 54% dos contêineres duraram menos de cinco minutos. Em 2018, isso ocorreu em apenas 20%.
Por que isso é preocupante? Segurança, é claro. Se você estiver tentando proteger o acesso (e deveria estar) e tentar proteger o aplicativo ou a API em execução naquele contêiner, precisará garantir que seus serviços de segurança estejam constantemente ajustando as políticas para corresponder ao estado atual do cluster. Isso significa que as políticas precisam ser aplicadas aos contêineres quando eles são iniciados e removidas quando eles são desativados. São muitas mudanças acontecendo, o que significa muita sobrecarga operacional. Já é bastante difícil obter a segurança correta em um aplicativo relativamente estático. É muito difícil fazer isso em alta velocidade com um altamente volátil.
Se isso não te incomoda, tente esta estatística: embora 60% das imagens de contêiner sejam extraídas de registros privados (bom trabalho!), 52% delas falham nas verificações de imagem. Isso significa que eles tinham vulnerabilidades conhecidas com gravidade alta ou maior.
Eca. Eu nem consigo.
Acontece que muitas pessoas estão executando o contêiner como root (mediana por host: 21) ou em modo privilegiado (mediana por host: 4). Outros não têm privilégios restritos (mediana de 28 por host). Isso é particularmente frustrante porque o Docker (o ambiente de execução de contêiner mais predominante) começa com um conjunto restrito de recursos por padrão. Isso significa que alguém alterou propositalmente as configurações de segurança padrão. Executar sem restrições pode resultar na capacidade de escalar privilégios ou quebrar o contêiner (permitindo acesso ao sistema).
Agora faremos uma pausa para relembrar os princípios básicos da segurança de contêineres:
É absolutamente essencial para a segurança dos aplicativos — e, portanto, dos negócios — que boas práticas de segurança de contêineres sejam realmente colocadas em prática. Nosso próximo relatório State of Application Services de 2020 descobriu que os microsserviços/nativos da nuvem representam, em média, 15% de um portfólio de aplicativos corporativos. Essa porcentagem ocorre apesar de descobertas que indicam longos atrasos para novos pedidos. Isso significa que os aplicativos em contêineres só vão crescer. E se não conseguimos proteger uma pequena porcentagem de aplicativos, como podemos esperar escalar para proteger uma porcentagem significativa deles?
Pratique a conteinerização segura.
Se você estiver interessado em uma atualização sobre os conceitos básicos de segurança de contêineres, confira esta série baseada na experiência do meu colega da F5, Jordan Zebor: