Les conteneurs sont la norme pour exécuter des applications serveur de nos jours, aussi vous avez probablement de très nombreux SBOM à transférer vers Dependency Track SaaS. Heureusement, l’extraction de logiciels packagés sous forme de conteneurs ou de conteneurs Docker est à la fois rapide et très facile.

Dans l’exemple ci-dessous, nous illustrerons la génération de SBOM à partir d’une image Docker et son transfert vers Dependency Track SaaS. Pour générer le SBOM à partir de n’importe quel logiciel, utilisez l’une des approches décrites dans cette fiche de triche.

Transfert d’un SBOM Docker

Afin d’automatiser le transfert, nous devons associer le fichier SBOM à un projet dans Dependency Track. Il existe pour cela plusieurs méthodes, y compris la création automatique d’un nouveau projet.

Dans le scénario le plus probable, nous supposerons que vous avez déjà un projet dans Dependency Track et que vous souhaitez mettre à jour sa liste de composants. Pour cela, le plus simple est de lier le SBOM avec l’UUID du projet de Dependency Track.

Le script ci-dessous extraira le SBOM à partir d’un registre Docker local et le transférera vers votre instance Dependency Track. Vous pouvez le lancer avec la commande extract-sbom.sh alpine:latest 29cd2fb7-db8c-4513-8c6c-ffb4443be67f. L’UUID du projet Dependency Track à utiliser se trouve dans l’identifiant d’objet des détails du projet.

De toute évidence, vous devriez modifier le script et remplacer votre <YourPrefixDomain> et <YourApiKey> aux lignes 9 et 10 par les valeurs que vous avez reçues lors de votre commande de notre service SaaS.

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "$0 <dockerImage> <depTrackProjectUuid>"
  exit -1
fi

# REPLACER ICI-------------------------
companyPrefix=<YourPrefixDomain>
apiKey=<YourApiKey>
# FIN DU REMPLACEMENT------------------

SCRIPT_PATH=$(dirname -- "$(readlink -f "${BASH_SOURCE}")")
project="$2"
sbom="$(uuidgen).sbom"

echo -n "Extracting SBOM..." 
 && $SCRIPT_PATH/syft.sh scan "registry:$1" -o cyclonedx-json > $sbom 
 && echo -ne " done\nSending SBOM..." 
 && curl -X POST -H "X-API-Key: $apiKey" 
         -H 'Content-Type: multipart/form-data; boundary=__X_BOM__' 
         -F "bom=@$sbom" 
         -F "project=$project" 
         "https://$companyPrefix.deptrack.yoursky.blue/api/v1/bom" 
 && echo -e " sent\n\nCleaning..." 
 && rm $sbom

Le script ci-dessus n’utilise pas la commande docker scout sbom qui ne supporte plus les SBOMs au format cyclonedx. Il utilise notre script syft.sh.

Plugins CI/CD

Dans votre CI/CD, vous pouvez facilement réutiliser la partie de transfert curl du script ci-dessus. Le transfert du SBOM peut même être encore simplifié avec l’un des plugins open-source suivants:

De plus, les plugins suivants peuvent être utiles pour d’autres scénarios d’automatisation, par exemple pour mettre en œuvre des politiques basées sur l’analyse des vulnérabilités logicielles :

  • dtapac audite les résultats de Dependency Track et les violations via des policy en tant que code
  • DTrackAuditor pour faire échouer la build CI selon la gravité des vulnérabilités logicielles ou des violations détectées

Autres scénarios possibles

Avec l’exemple de Docker SBOM présenté ci-dessus, nous avons à peine effleuré la surface, de très nombreux autres scénarios d’automatisation sont possibles. Utiliser cette page comme modèle pour faciliter vos recherches. Avec quelques adaptations, vous pouvez générer le SBOM à partir d’autres sources comme décrit dans la fiche de triche.

D’autres options de transfert sont possibles, veuillez vous référer à notre documentation API.

Nous sommes ravis de vous aider pour tout problème de transfert de SBOM.
Faites-nous savoir comment nous pouvons vous aider !

Contactez-nous