詳細検索

Construa, Publique, Segure: AWS CodePipeline Agora Simplifica a Publicação de ECR e Varreduras de Vulnerabilidades

Avatar
por Jatin Mehrotra
6 min de leitura

Construa, Publique, Segure: AWS CodePipeline Agora Simplifica a Publicação de ECR e Varreduras de Vulnerabilidades
Traduzido do English • Ver original

*Cansado de configurar o CodeBuild só para enviar imagens no Docker ou rodar varreduras de vulnerabilidades? *

Com as novas ações ECRBuildAndPublish e InspectorScan do AWS CodePipeline, agora você pode construir, publicar e proteger suas imagens diretamente dentro do seu pipeline — sem necessidade de configuração extra. Curioso para saber como funciona? Vamos mergulhar no que faz!

Motivação

26 de novembro de 2024 – Pouco antes do re:Invent 2024, a AWS lançou uma atualização empolgante apresentando as ações ECRBuildAndPublish e InspectorScan. Essa atualização simplifica a construção e publicação de imagens do Docker, permitindo que seu pipeline gerencie tudo de forma fluida.

O que essa atualização significa para você?

Antes da Atualização 😭

Para incorporar builds de imagens Docker e varreduras de vulnerabilidades no seu pipeline, era necessário configurar manualmente um projeto CodeBuild. Isso envolvia:

  • Configuração de configurações de projetos CodeBuild.
  • Gerenciar os papéis e permissões do IAM para garantir acesso seguro ao ECR e outros recursos.
  • Escrever e manter um arquivo buildspec.yml com comandos para construir e enviar imagens Docker.
  • Integração de ferramentas de segurança de terceiros para escaneamento de imagens ou código-fonte, exigindo configuração e custo adicionais.
  • Lidar com a curva de aprendizado associada e a sobrecarga operacional, que podem atrasar a entrega do pipeline.

Após a Atualização 🤩

Com as novas ações ECRBuildAndPublish e InspectorScan no CodePipeline, toda essa complexidade é removida:

  • Você simplesmente define o nome do repositório ECR e aponta para o Dockerfile no seu repositório de código-fonte.
  • O CodePipeline constrói automaticamente a imagem, a envia para ECR e até integra uma varredura de vulnerabilidades — tudo isso sem exigir um projeto CodeBuild separado.
  • Isso significa menos tempo gasto na configuração, menor complexidade e menos recursos consumidos.

*Esta atualização não só simplifica a configuração do pipeline, mas também reduz a barreira de entrada para automatizar fluxos de trabalho conteinerizados, permitindo que as equipes foquem mais na inovação do que nos detalhes operacionais. *

Notas Principais sobre Essas Ações

  • A ação ECRBuildAndPublish não é a mesma que a ação de código fonte ECR da Amazon no CodePipeline, que aciona o pipeline quando ocorre uma mudança no seu repositório de código-fonte ECR da Amazon.
  • Ambas as ações utilizam computação CodeBuild gerenciada pelo CodePipeline, incorrendo em cobranças separadas do CodeBuild da AWS.

Veja em Ação: Configurando ECRBuildAndPublish e InspectorScan no CodePipeline

Diagrama de Arquitetura

  • O usuário verifica o código.
  • Pipeline é acionado.
  • A ação SourceCodeScan do InspectorScan é executada para verificar vulnerabilidades no código-fonte.
  • Se aprovado, a imagem docker é construída e enviada para ECR.
  • Depois, a verificação final do ECRImageScan do InspectorScan para verificar vulnerabilidades na imagem do docker empurrada no repositório ECR.

Pré-requisitos

  • Acesso à conta AWS
  • Já criei um repositório Amazon ECR
  • Dockerfile

Nota: Estou usando um DockerFile vulnerável contendo o Log4j cve para este blog para mostrar os resultados da varredura de vulnerabilidades por ação de pipeline de código. *** NÃO USE EM PRODUÇÃO*

Crie o repositório ECR

  • Crie um novo repositório, você pode nomear o que quiser

Crie o Pipeline

  • Criar um novo codepipline usando a opção Construir pipeline personalizado .

  • Estou usando o GitHub como fornecedor de código-fonte, o que significa que qualquer alteração no meu repositório vai acionar a execução do pipeline. Você vai precisarconfigurar a conexão do Codestar.

  • Adicionar a ação ECRBuildAndPublish e especificar seu repositório ECR

  • Pular a fase de implantação e criar o pipeline.
  • O pipeline será executado automaticamente e enviará a imagem para ECR

Nota: Se você vir o erro 'toomuchrequests: Você atingiu seu limite de taxa de puxada. Você pode aumentar o limite autenticando e atualizando', então tente usar a imagem base da galeria pública do AWS ECR

Um Grande Problema 🚨

  • No momento em que escrevo este blog, quando você cria pipeline a partir do console (essa tem sido a opção padrão por muito tempo), quando crio o pipeline a partir do console, ele é executado automaticamente.

  • Agora, isso é um problema muito grande apenas no caso da ação ECRBuildAndPublish porque se uma imagem do docker vulnerável for enviada para ECR, e se o sistema downstream como o K8 implantar o container a partir dessa imagem e então uma aplicação vulnerável será implantada, o que pode causar um grande problema.
  • Isso é um problema porque, durante a criação do Pipeline a partir do console, você não pode adicionar nenhum outro estágio ou ação para verificar vulnerabilidades, falhando assim na execução do pipeline e impedindo que a imagem seja publicada no repositório ECR.

  • Aconselho as pessoas a usarem o IaC para ter mais controle até que isso seja resolvido no console.

Testando AWS InspectorScan

  • Você pode usar a ação InspectorScan em dois modos: SourceCodeScan ou ECRImageScan
  • Usei o Repositório que contém tanto vulnerabilidades do código-fonte quanto vulnerabilidades da imagem do Docker.
  • Para mim, o lugar ideal para adicionar ambas as ações e proteger meu CI/CD seria o seguinte:
    • Adicionar o SourceCodeScan da ação InspectorScan antes da ação ECRBuildAndPublish (Etapa de compilação)
    • Adicionar ECRImageScan da ação InspectorScan após a ação ECRBuildAndPublish

Testando o SourceCodeScan do InspectorScan

  • Editar o pipeline
  • Adicione o palco, estou usando o nome como código de varredura

  • adicionar grupo de ação ao palco e editá-lo
  • Adicionar provedor de ação como Aspru do Inspetor Aws

  • Selecione modo de execução como Varredura do Código-Fonte
  • Especifique valores de limiar para Crítico, Alto, Médio, Baixo como 0. Isso é muito importante para falhar no pipeline, pois significa o número de vulnerabilidades de gravidade Crítica, Alta, Média, Baixa encontradas no seu código-fonte, além das quais o CodePipeline deve falhar na ação.
  • especifique o nome do artefato de saída de sua escolha, salve as alterações do pipeline e execute manualmente o pipeline.
  • Como você pode ver, o pipeline falhou antes da execução atingir a ação ECRBuildAndPublish (Estágio de Construção)

Testando o ECRImageScan do InspectorScan

  • ECRImageScan escaneia as imagens presentes no repositório ECR. Se a imagem com tag não estiver presente, a ação falhará automaticamente.
  • Precisamos adicionar uma ação após a ação ECRBuildAndPublishing, para que os passos permaneçam os mesmos da Análise do Código-Fonte.

  • Vou adicionar um novo estágio e ação para escanear imagens pushadas no docker dentro do repertório ECR.

  • Para passar pelo pipeline, vou remover os valores limiar do Source Code Scan para passar a execução até o ECRImageScan.
  • Salvar e rodar manualmente o Pipeline

Da perspectiva do Arquiteto de Soluções

  • A introdução das ações ECRBuildAndPublish e InspectorScan , juntamente com ações de comandos (lançadas em outubro) no AWS CodePipeline, representa um avanço significativo na simplificação dos fluxos de trabalho conteinerizados. Ao eliminar a necessidade de configurações adicionais de CodeBuild e integrar as varreduras de segurança de forma fluida, a AWS tornou os pipelines mais rápidos e acessíveis.
  • No entanto, a execução automática dos pipelines criados via console levanta preocupações válidas de segurança, especialmente com imagens vulneráveis potencialmente sendo enviadas para o ECR. Até que a AWS introduza uma correção, o Infrastructure as Code (IaC) continua sendo a melhor forma de manter o controle sobre seu pipeline.

Essa atualização é um divisor de águas para equipes que buscam inovar mais rápido, garantindo medidas de segurança robustas.

📣 O que vocês acham dessas atualizações?

🔍 Você já enfrentou desafios semelhantes ou encontrou soluções criativas?

 

Related Articles