Partilhar via


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

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:
  1. 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

Permissões de serviço de compilação

  1. Configure o Dependabot adicionando um arquivo de dependabot configuração semelhante a este exemplo:

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. 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 }
    

  3. 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

  1. Siga o guia de início rápido para começar a usar a Copa.

  2. 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.

Próximas etapas