Passer au contenu principal
Ce document décrit comment vérifier les signatures cryptographiques et les attestations créées par le pipeline de publication d’images vantage-packager.

Vue d’ensemble

Le pipeline « vantage-packager » génère plusieurs artefacts de sécurité pour chaque image publiée :
  • Signature d’image de conteneur : signature cryptographique à l’aide de Cosign
  • Attestation SPDX SBOM : liste des composants logiciels (Software Bill of Materials) au format SPDX 2.3
  • Attestation d’analyse des vulnérabilités : résultats d’analyse de sécurité au format SARIF Tous les artefacts sont signés avec la même clé privée et peuvent être vérifiés à l’aide de la clé publique correspondante.

Prérequis

Les outils suivants doivent être installés :
  • cosign - pour la vérification des signatures et des attestations
  • jq - pour l’analyse et le traitement de JSON
  • curl - pour le téléchargement des artefacts (facultatif)

Vérification de la signature

Vérification de base

Vérifiez la signature d’une image à l’aide de la clé publique :
# Vérifier la signature (ignorer le journal de transparence pour les registres privés)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Avec la vérification TLS désactivée

Pour les registres utilisant des certificats auto-signés :
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
Résultat attendu :
[{
  "critical": {
    "identity": {
      "docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
    },
    "image": {
      "docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
    },
    "type": "cosign container image signature"
  }
}]

Vérification de l’attestation

Attestation de la SBOM SPDX

Vérifiez l’attestation de la nomenclature logicielle SPDX (SBOM) :
# Vérifier l'attestation SPDX
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Attestation d’analyse de vulnérabilités

Vérifiez l’attestation d’analyse de vulnérabilités :
# Vérifier l'attestation d'analyse de vulnérabilité
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Récupération des données d’attestation

Télécharger le SBOM SPDX

Extrayez le SBOM SPDX à partir de l’attestation :
# Télécharger et extraire le SBOM SPDX
cosign download attestation --predicate-type spdx \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
  jq -r '.payload' | base64 -d | jq -r '.predicate' > sbom.json

Télécharger l’analyse de vulnérabilité

Extrayez les résultats de l’analyse de vulnérabilité :
# Télécharger et extraire l'analyse des vulnérabilités
cosign download attestation --predicate-type vuln \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
  jq -r '.payload' | base64 -d | jq -r '.predicate' > vuln-scan.sarif

Analyse des données SBOM au format SPDX

Informations de base sur le SBOM

# Afficher les métadonnées SBOM
jq '{
  name: .name,
  spdxVersion: .spdxVersion,
  creationInfo: .creationInfo,
  packageCount: (.packages | length)
}' sbom.json

Répertorier tous les packages

# Lister tous les packages avec leurs versions
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort

Rechercher les packages présentant des vulnérabilités connues

# Lister les packages avec des identifiants CPE (références de vulnérabilité)
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
  "\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json

Informations de licence

# Afficher les packages avec licences déclarées
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
  "\(.name): \(.licenseDeclared)"' sbom.json

Analyse des données issues des analyses de vulnérabilité

Informations de base sur l’analyse

# Afficher les métadonnées de l'analyse
jq '{
  version: .version,
  tool: .runs[0].tool.driver.name,
  toolVersion: .runs[0].tool.driver.version,
  resultCount: (.runs[0].results | length)
}' vuln-scan.sarif

Répertorier les vulnérabilités

# Lister toutes les vulnérabilités détectées
jq -r '.runs[0].results[] |
  "\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif

Vulnérabilités de gravité élevée

# Afficher uniquement les vulnérabilités de gravité élevée
jq -r '.runs[0].results[] | select(.level == "error") |
  "\(.ruleId): \(.message.text)"' vuln-scan.sarif

Outils de visualisation de SBOM

Outils CLI

Utilitaire CycloneDX SBOM

Installez et utilisez l’utilitaire CycloneDX SBOM pour effectuer des analyses avancées :
# Installer sbom-utility (si disponible)
go install github.com/CycloneDX/sbom-utility@latest

# Valider le SBOM SPDX
sbom-utility validate --input-file sbom.json

# Générer le rapport des composants
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"

Analyse personnalisée à l’aide de jq

# Créer une vue arborescente des dépendances
jq -r '.packages[] |
  select(.name != null) |
  "\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
  sort | uniq

Visualisation sur le Web

Visionneuse en ligne SBOM.sh

  1. Rendez-vous sur https://sbom.sh/
  2. Chargez votre fichier sbom.json
  3. Explorez la visualisation interactive des composants et des dépendances

Découverte des références d’artefacts

Rechercher les artefacts de signature

# Rechercher la référence de l'artefact de signature
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Rechercher les artefacts d’attestation

# Trouver la référence de l'artefact d'attestation
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1