Skip to main content

Segurança no registro de contêineres

Escrito por

Michael Komraz

Security in The Container Registry small

21 de fevereiro de 2019

0 minutos de leitura

Um dos princípios fundamentais da Snyk é o que chamamos de “desenvolvedor em primeiro lugar”. Na nossa visão de produto, isso significa se integrar ao fluxo de trabalho e às ferramentas que os desenvolvedores já usam, com integrações poderosas, para tornar o mais simples possível a responsabilidade dos desenvolvedores pela segurança.

Em outras palavras, queremos oferecer a opção de cuidar da segurança onde os desenvolvedores já estão, por exemplo:

  • No IDE, por exemplo, com nosso plugin do IntelliJ, lançado no fim de 2018

  • No nível do Git, onde os desenvolvedores podem abrir pull requests para corrigir problemas atuais e prevenir problemas futuros

  • Na etapa de build, que, como um gate, costuma complementar o Git de forma mais voltada a DevOps

  • Em PaaS e no runtime, por exemplo, com nossas integrações de droplet, buildpack e broker do Pivotal

  • Em ferramentas de gerenciamento de projetos e mensagens, como JIRA, Slack e outras

Camadas de contêineres e riscos ocultos

Os contêineres (usando o termo de forma ampla) estão entre as mudanças mais importantes do setor de TI e trazem novos desafios de segurança, tanto para o desenvolvimento quanto para as operações. Por exemplo, no mundo “antigo” de servidores e máquinas virtuais, muitas equipes corporativas usam uma metodologia de “imagem dourada” para manter o controle de Operações sobre a camada base (sistema operacional e pacotes) de seus aplicativos. A forma como as imagens Docker são criadas, distribuídas e usadas torna inviável para qualquer equipe que trabalha na nuvem seguir essa metodologia, já que as imagens de contêiner têm várias camadas cuja origem ou robustez nem sempre é clara.

O gerenciamento de vulnerabilidades em contêineres da Snyk verifica imagens Docker, inspecionando pacotes do sistema operacional e binários importantes, e cruza os dados com nosso banco de dados proprietário de vulnerabilidades. Assim, oferece uma visão das dependências diretas e indiretas ocultas nas camadas da imagem. Na captura de tela abaixo, vemos a funcionalidade da Snyk analisando até cinco camadas de profundidade para sinalizar um problema de alta gravidade:

Captura de tela do terminal que relata uma vulnerabilidade de negação de serviço de alta gravidade no libidn11 e mostra a cadeia de dependências do pacote no Dockerfile.

Encontrar riscos é só o primeiro passo: o próximo desafio é corrigi-los sem interromper o fluxo de trabalho. Por isso, oferecemos orientações para remediação na ferramenta. Outro ponto importante é basear tudo isso em informações confiáveis e minimizar os falsos positivos — algo que o banco de dados de vulnerabilidades da Snyk, referência no setor, oferece.

Mas um desenvolvedor que prioriza a segurança não deve parar por aí. O próximo passo também traz um desafio: enviar uma imagem potencialmente comprometida para o seu registro de contêineres. Fazer isso manualmente, com uma análise de segurança rigorosa, pode ser ineficiente; automatizar essa etapa sem as proteções necessárias pode dificultar muito o controle operacional e a auditoria. A abordagem da Snyk busca automatizar o processo com base em boas práticas de segurança, como mostra o exemplo a seguir.

Hello-ACR-world

Criamoseste app de demonstração para verificar todas as imagens Docker enviadas ao Azure Container Registry (ACR). Em vez de desacelerar o ciclo de desenvolvimento, integramos a verificação e as orientações para remediação ao fluxo do ACR Tasks. No arquivo .yaml abaixo, vemos que, entre as tarefas padrão BUILD e PUSH do ACR Tasks, adicionamos um script que verifica vulnerabilidades tanto na imagem quanto no aplicativo (binários):

Editor de código com tema escuro exibindo um pipeline de build em YAML com comandos de imagem Docker, testes de vulnerabilidade do Snyk, variáveis de ambiente e uma etapa de envio.

A configuração faz com que o PUSH falhe se forem encontradas vulnerabilidades de alta gravidade no sistema operacional e/ou vulnerabilidades de gravidade média-alta no “aplicativo”. Quando isso acontece, a verificação falha e não é possível continuar para o PUSH. Veja um pouco mais do processo neste vídeo curto:

Em resumo

O modelo de contêineres traz riscos adicionais de segurança e conformidade. Com o gerenciamento de vulnerabilidades em contêineres da Snyk, podemos encontrar e corrigir vulnerabilidades diretas e — o que é ainda mais importante neste caso — indiretas nas imagens de contêiner. Também podemos automatizar ainda mais o DevOps adicionando a Snyk como gate antes que uma imagem não corrigida seja enviada ao nosso registro de contêineres. Essas etapas, junto aos recursos da Snyk para controle de código-fonte, CI/CD e PaaS, formam um caso de uso completo e convincente para contêineres.

Conte para nós quais registros de contêineres você já usa e como funciona sua automação para equilibrar eficiência e segurança!

Segurança de contêineres que prioriza os desenvolvedores

O Snyk encontra e corrige automaticamente vulnerabilidades em imagens de contêiner e workloads do Kubernetes.