*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*
- Repositório Dockerfile : https://github.com/jatinmehrotra/log4jpoc
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?