Intégrer Docker Scout avec les Pipelines Microsoft Azure DevOps
L'exemple suivant s'exécute dans un dépôt connecté à Azure DevOps contenant la définition et le contenu d'une image Docker. Déclenché par un commit sur la branche principale, le pipeline construit l'image et utilise Docker Scout pour créer un rapport CVE.
D'abord, configurez le reste du workflow et configurez les variables disponibles pour toutes les étapes du pipeline. Ajoutez ce qui suit à un fichier azure-pipelines.yml :
trigger:
- main
resources:
- repo: self
variables:
tag: "$(Build.BuildId)"
image: "vonwig/nodejs-service"
Ceci configure le workflow pour utiliser une image de conteneur particulière pour l'application et taguer chaque nouvelle construction d'image avec l'ID de construction.
Ajoutez ce qui suit au fichier YAML :
stages:
- stage: Build
displayName: Construire l'image
jobs:
- job: Build
displayName: Construire
pool:
vmImage: ubuntu-latest
steps:
- task: Docker@2
displayName: Construire une image
inputs:
command: build
dockerfile: "$(Build.SourcesDirectory)/Dockerfile"
repository: $(image)
tags: |
$(tag)
- task: CmdLine@2
displayName: Trouver les CVE sur l'image
inputs:
script: |
# Installer le CLI Docker Scout
curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --
# Connexion à Docker Hub requise pour le CLI Docker Scout
echo $(DOCKER_HUB_PAT) | docker login -u $(DOCKER_HUB_USER) --password-stdin
# Obtenir un rapport CVE pour l'image construite et faire échouer le pipeline quand des CVE critiques ou élevés sont détectés
docker scout cves $(image):$(tag) --exit-code --only-severity critical,high
Ceci crée le flux mentionné précédemment. Il construit et tague l'image en utilisant
le Dockerfile extrait, télécharge le CLI Docker Scout, puis exécute la
commande cves
contre le nouveau tag pour générer un rapport CVE. Il ne montre que
les vulnérabilités de gravité critique ou élevée.