Guia de início rápido: atualize e proteja dependências de imagem de contêiner com Dependabot e Copacetic
Neste guia de início rápido, você será apresentado às etapas necessárias para configurar o Dependabot e o Copacetic, que o ajudarão a automatizar as atualizações de dependência de software e reforçar a segurança das imagens de contêiner em um ambiente seguro da cadeia de suprimentos. Usando essas ferramentas, você pode garantir 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.
- O Dependabot automatiza o processo de manter as dependências das imagens do contêiner atualizadas, reduzindo o risco de vulnerabilidades.
- Monitore, digitalize e corrija continuamente imagens de contêiner usando o Copacetic.
- A Copacetic fornece monitoramento e varredura contínuos de suas imagens de contêiner, garantindo que elas estejam seguras e corrigidas contra vulnerabilidades conhecidas.
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 orientações e recomendações para gerenciar com eficiência as solicitações pull geradas pelo Dependabot, usar as Ações do GitHub para melhorar o desempenho do Dependabot e solucionar erros comuns do Dependabot.
- Configure 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, garantindo que suas dependências de imagem de contêiner permaneçam atualizadas com as versões mais recentes e os aprimoramentos de segurança.
- Conceder Permissões: Crie uma conta de serviço com o nome
YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME)
e conceda-lhe as seguintes permissões:
- Forçar Push
- Colaborar para solicitações de pull
- Criar branch
Certifique-se de substituir YOUR-PROJECT-NAME
e YOUR-ORGANIZATION-NAME
com os nomes reais do seu projeto e organização.
Configurar o Dependabot: Para configurar o Dependabot, adicione um
dependabot.yml
arquivo de configuração ao seu repositório. Aqui está um exemplo de como seu arquivo de configuração pode parecer:version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
Essa configuração configura o Dependabot para um projeto que usa o Docker, especificando que o diretório raiz ("/") é onde os arquivos do Docker estão localizados e atribuindo o Dependabot para manipular as atualizações. Você pode personalizar a configuração para atender às necessidades do seu projeto.
Criar um Pipeline de DevOps do Azure: para criar um Pipeline de DevOps do Azure, adicione um
azure-pipeline.yml
arquivo ao seu repositório 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 }
Executar o pipeline: crie e verifique o novo pipeline ADO a partir do arquivo acima
azure-pipelines.yaml
.
O Dependabot pode atualizar dependências de imagem de contêiner em vários cenários, como:
- Dockerfile
- Kubernetes YAML
- Valores de leme.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.
Ao especificar imagens em seus arquivos de configuração, use a seguinte sintaxe:
# 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 Copacetic fornece instruções para corrigir imagens de contêiner utilizando resultados de verificação de vulnerabilidade.
Analise o Pipeline ADO de Exemplo para obter um arquivo de configuração de pipeline do Azure DevOps de exemplo para usar o Copacetic. O pipeline foi projetado para integrar o Copacetic ao seu fluxo de trabalho de CI/CD, permitindo o monitoramento contínuo, a varredura e a aplicação de patches de imagens de contêiner em busca de vulnerabilidades.
O Copacetic 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.