Guia de início rápido: mantenha-se atualizado com as atualizações e a segurança da dependência de imagem de contêiner usando o Dependabot e o Copacetic
Neste guia de início rápido, orientaremos você pelo processo de configuração e uso do Dependabot e do Copacetic para simplificar, manter e manter-se atualizado com as atualizações de dependência de software e aprimorar a segurança da imagem do contêiner na cadeia de suprimentos segura de contêineres.
Essas ferramentas automatizarão o processo, garantindo que suas imagens de contêiner estejam sempre atualizadas e seguras.
Neste guia de início rápido, você aprende a:
Atualize as dependências e a segurança da imagem de contêiner usando o Dependabot. Monitore, digitalize e corrija continuamente imagens de contêiner usando o Copa.
Pré-requisitos
- Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- A versão mais recente da CLI do Azure instalada e configurada para sua assinatura.
- Um Registro de Contêiner do Azure (ACR) existente em sua assinatura.
Atualizar dependências e segurança de imagem de contêiner usando Dependabot
O Dependabot é uma ferramenta que automatiza o processo de manter as dependências de software atualizadas. Ele funciona verificando seu repositório em busca de dependências desatualizadas e criando solicitações pull para atualizá-las para a versão mais recente. Ele verifica se há atualizações para suas dependências diariamente e cria solicitações pull para atualizá-las. Você pode configurar o Dependabot para criar solicitações pull para todos os tipos de dependências, incluindo imagens do Docker. Recomendamos o uso do dependabot para aumentar automaticamente as dependências em seus arquivos Dockerfiles, arquivos yaml do Kubernetes e arquivos yaml de valores do gráfico Helm para obter os patches de segurança mais recentes e reduzir os riscos de segurança.
Usar o Dependabot com o GitHub
- Siga as instruções para configurar o Dependabot com o GitHub aqui
Usar o Dependabot com o Azure DevOps
- Siga as instruções para configurar o Dependabot com o Azure DevOps:
Conceda permissões criando uma conta de serviço com nome
YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME)
com as seguintes permissões:-Force Push -Contribua para pull requests -Criar ramificação
Configure o Dependabot adicionando um arquivo de
dependabot
configuração semelhante a este exemplo:version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
Crie um Pipeline de DevOps do Azure adicionando um
azure-pipeline.yaml
arquivo com o seguinte conteúdo:schedules: - cron: '0 14 * * *' displayName: 'Every day at 7am PST' branches: include: [main] always: true trigger: none jobs: - job: steps: - script: | git clone https://github.com/dependabot/dependabot-core.git cd dependabot-core DOCKER_BUILDKIT=1 docker build \ --build-arg "USER_UID=$(id -u)" \ --build-arg "USER_GID=$(id -g)" \ -t "dependabot/dependabot-core" . cd .. displayName: build dependabot-core Docker image - script: | git clone https://github.com/dependabot/dependabot-script.git cd dependabot-script docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor displayName: install dependencies - script: | #!/bin/bash SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"` PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME" echo "path: $PROJECT_PATH" docker run -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \ -w '/home/dependabot/dependabot-script' \ -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \ -e PACKAGE_MANAGER=docker \ -e PROJECT_PATH=$PROJECT_PATH \ -e DIRECTORY_PATH=/ \ -e OPTIONS="$OPTIONS" \ dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb displayName: "run dependabot" env: OPTIONS: | { "kubernetes_updates": true }
Execute o pipeline Crie e verifique o novo pipeline ADO a partir do arquivo acima
azure-pipelines.yaml
.
Atualmente, o Dependabot oferece suporte à atualização de dependências de imagem de contêiner em vários cenários, incluindo Dockerfile, Kubernetes YAML e Helm values.yaml. Ao especificar imagens em seus arquivos de configuração, você pode seguir esta sintaxe:
-Dockerfile -Kubernetes YAML -Helm valores.yaml
Observação
A sintaxe permite que o Dependabot identifique e atualize as dependências de imagem de contêiner dentro de seus arquivos de configuração, garantindo que você permaneça atualizado com as versões mais recentes e os patches de segurança.
# Dockerfile
foo:
image:
repository: sql/sql
tag: 1.2.3
registry: docker.io
# Helm values.yaml
foo:
image:
repository: sql/sql
tag: 1.2.3
registry: docker.io
Como alternativa, para Helm values.yaml
, você pode usar o version
campo para especificar a versão da imagem:
foo:
image:
repository: sql/sql
version: 1.2.3
Monitore, digitalize e corrija continuamente imagens de contêiner usando o Copacetic
Copacetic (copa) é um projeto de código aberto CNCF apoiado pela Microsoft que corrige diretamente vulnerabilidades do pacote do sistema operacional Linux em imagens de contêiner, dados os resultados da varredura de vulnerabilidades de ferramentas de scanner populares. O Copacetic permite corrigir contêineres rapidamente sem ir a montante para uma reconstrução completa. Isso ajudará as imagens do contêiner a serem reimplantadas rapidamente na produção. Copacetic é apenas para vulnerabilidades do sistema operacional Linux. Para vulnerabilidades no nível do aplicativo, os patches devem ser feitos antes que a imagem seja criada.
Use Copacetic
Siga o guia de início rápido para começar a usar a Copa.
Pipeline ADO de exemplo:
-Você pode encontrar um exemplo de pipeline de DevOps do Azure para usar a Copa aqui.
O Copa também pode ser integrado aos fluxos de trabalho do Github Actions para corrigir vulnerabilidades de imagem usando o Copacetic Action. Essa ação corrige um conjunto de imagens designadas para um repositório usando seus relatórios de vulnerabilidade associados.