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
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 :
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
Configurez Dependabot en ajoutant un
dependabot
fichier de configuration similaire à cet exemple :version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
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 }
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.yaml
Vous 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
Suivez le guide de démarrage rapide pour commencer à utiliser Copa.
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.