Partager via


Démarrage rapide : Restez à jour avec les mises à jour et la sécurité des dépendances d’image conteneur à l’aide de Dependabot et copacetic

Dans ce guide de démarrage rapide, nous allons vous guider tout au long du processus de configuration et d’utilisation de Dependabot et de Copacetic pour simplifier, gérer et rester à jour avec les mises à jour des dépendances logicielles et améliorer la sécurité des images conteneur dans la chaîne d’approvisionnement sécurisée des conteneurs.

Ces outils automatisent le processus, ce qui garantit que vos images conteneur sont toujours actuelles et sécurisées.

Dans ce guide de démarrage rapide, vous apprenez à :

Mettez à jour les dépendances d’image conteneur et la sécurité à l’aide de Dependabot. Surveillez, analysez et corrigez en continu des images conteneur à l’aide de Copa.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • La dernière version d’Azure CLI installée et configurée pour votre abonnement.
  • Azure Container Registry (ACR) existant dans votre abonnement.

Mettre à jour les dépendances d’image conteneur et la sécurité à l’aide de Dependabot

Dependabot est un outil qui automatise le processus de mise à jour des dépendances logicielles. Il fonctionne en analysant vos référentiels pour détecter les dépendances obsolètes et en créant des demandes de tirage pour les mettre à jour vers la dernière version. Il case activée des mises à jour de vos dépendances quotidiennement et crée des demandes de tirage pour les mettre à jour. Vous pouvez configurer Dependabot pour créer des demandes de tirage pour tous les types de dépendances, y compris les images Docker. Nous vous recommandons d’utiliser dependabot pour contourner automatiquement les dépendances dans vos fichiers Dockerfiles, les fichiers yaml Kubernetes et les valeurs de graphique Helm pour obtenir les derniers correctifs de sécurité et réduire les risques de sécurité.

Utiliser Dependabot avec GitHub

  • Suivez les instructions pour configurer Dependabot avec GitHub ici

Utiliser Dependabot avec Azure DevOps

  • Suivez les instructions pour configurer Dependabot avec Azure DevOps :
  1. Accordez des autorisations en créant un compte de service avec le nom YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) avec les autorisations suivantes :

    -Forcer l’envoi (push) -Contribuer aux demandes de tirage -Créer une branche

Autorisations du service de génération

  1. Configurez Dependabot en ajoutant un dependabot fichier de configuration similaire à cet exemple :

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

  2. Créez un pipeline Azure DevOps en ajoutant un azure-pipeline.yaml fichier avec le contenu suivant :

     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. Exécutez le pipeline Créer et vérifier le nouveau pipeline ADO à partir du fichier ci-dessus azure-pipelines.yaml .

Actuellement, Dependabot prend en charge la mise à jour des dépendances d’image conteneur dans différents scénarios, notamment Dockerfile, Kubernetes YAML et Helm values.yaml. Lorsque vous spécifiez des images dans vos fichiers de configuration, vous pouvez suivre cette syntaxe :

-Dockerfile -Kubernetes YAML -Helm values.yaml

Remarque

La syntaxe permet à Dependabot d’identifier et de mettre à jour les dépendances d’image conteneur au sein de vos fichiers de configuration, ce qui vous permet de rester à jour avec les dernières versions et correctifs de sécurité.


# 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

Helm values.yamlVous pouvez également utiliser le version champ pour spécifier la version de l’image :

foo:
  image:
    repository: sql/sql
    version: 1.2.3

Surveiller, analyser et corriger en continu des images conteneur à l’aide de Copacetic

Copacetic (copa) est un projet open source CNCF soutenu par Microsoft qui corrige directement les vulnérabilités du package de système d’exploitation Linux dans les images conteneur en fonction des résultats de l’analyse des vulnérabilités provenant des outils de scanneurs populaires. Copacetic permet de corriger rapidement les conteneurs sans passer amont pour une reconstruction complète. Cela aidera les images conteneur à redéployer rapidement en production. Copacetic est uniquement destiné aux vulnérabilités du système d’exploitation Linux. Pour les vulnérabilités au niveau de l’application, les correctifs doivent être effectués avant la génération de l’image.

Utiliser copacétique

  1. Suivez le guide de démarrage rapide pour commencer à utiliser Copa.

  2. Exemple de pipeline ADO :

    -Vous trouverez un exemple de pipeline Azure DevOps pour utiliser Copa ici.

Copa peut également être intégré aux workflows Github Actions pour corriger les vulnérabilités d’image à l’aide de l’action copacétique. Cette action met à jour un ensemble d’images désignées pour un référentiel à l’aide de leurs rapports de vulnérabilité associés.

Étapes suivantes