Vai al contenuto principale
Questo documento descrive come verificare le firme crittografiche e le attestazioni create dalla pipeline di pubblicazione delle immagini vantage-packager.

Panoramica

La pipeline vantage-packager crea diversi artefatti di sicurezza per ogni immagine pubblicata:
  • Container Image Signature: firma crittografica tramite Cosign
  • SPDX SBOM Attestation: attestazione della Software Bill of Materials (SBOM) in formato SPDX 2.3
  • Vulnerability Scan Attestation: attestazione dei risultati della scansione di sicurezza in formato SARIF Tutti gli artefatti sono firmati con la stessa chiave privata e possono essere verificati utilizzando la corrispondente chiave pubblica.

Prerequisiti

Sono necessari i seguenti strumenti:
  • cosign - per la verifica delle firme e delle attestazioni
  • jq - per l’analisi e l’elaborazione di JSON
  • curl - per scaricare gli artefatti (opzionale)

Verifica della firma

Verifica di base

Verifica la firma di un’immagine utilizzando la chiave pubblica:
# Verifica la firma (ignora il log di trasparenza per i registry privati)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Con la verifica TLS disabilitata

Per i registry che utilizzano certificati autofirmati:
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
Risultato previsto:
[{
  "critical": {
    "identity": {
      "docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
    },
    "image": {
      "docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
    },
    "type": "cosign container image signature"
  }
}]

Verifica dell’attestazione

Attestazione SBOM SPDX

Verifica l’attestazione della Software Bill of Materials (SBOM) in formato SPDX:
# Verifica l'attestazione SPDX
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Attestazione della scansione di vulnerabilità

Verificare l’attestazione della scansione di vulnerabilità:
# Verifica l'attestazione di scansione delle vulnerabilità
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Recuperare i dati di attestazione

Scarica la SBOM SPDX

Estrai la SBOM SPDX dall’attestazione:
# Scarica ed estrai SPDX SBOM
cosign download attestation --predicate-type spdx \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1 | \
  jq -r '.payload' | base64 -d | jq -r '.predicate' > sbom.json

Scaricare la scansione delle vulnerabilità

Estrai i risultati della scansione delle vulnerabilità:
# Scarica ed estrai la scansione delle vulnerabilità
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

Analisi dei dati SBOM in formato SPDX

Informazioni di base sulla SBOM

# Visualizza i metadati SBOM
jq '{
  name: .name,
  spdxVersion: .spdxVersion,
  creationInfo: .creationInfo,
  packageCount: (.packages | length)
}' sbom.json

Elencare tutti i pacchetti

# Elenca tutti i pacchetti con le versioni
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort

Individuare i pacchetti con vulnerabilità note

# Elenca i pacchetti con identificatori CPE (riferimenti a vulnerabilità)
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
  "\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json

Informazioni sulla licenza

# Mostra i pacchetti con licenze dichiarate
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
  "\(.name): \(.licenseDeclared)"' sbom.json

Analisi dei dati di scansione delle vulnerabilità

Informazioni di base sulla scansione

# Visualizza metadati della scansione
jq '{
  version: .version,
  tool: .runs[0].tool.driver.name,
  toolVersion: .runs[0].tool.driver.version,
  resultCount: (.runs[0].results | length)
}' vuln-scan.sarif

Elenco delle vulnerabilità

# Elenca tutte le vulnerabilità rilevate
jq -r '.runs[0].results[] |
  "\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif

Vulnerabilità con gravità elevata

# Mostra solo le vulnerabilità ad alta gravità
jq -r '.runs[0].results[] | select(.level == "error") |
  "\(.ruleId): \(.message.text)"' vuln-scan.sarif

Strumenti per la visualizzazione delle SBOM

Strumenti a riga di comando (CLI)

Utility SBOM CycloneDX

Installa e utilizza l’utility CycloneDX SBOM per effettuare analisi avanzate:
# Installa sbom-utility (se disponibile)
go install github.com/CycloneDX/sbom-utility@latest

# Convalida SPDX SBOM
sbom-utility validate --input-file sbom.json

# Genera report dei componenti
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"

Analisi personalizzata con jq

# Crea una vista ad albero delle dipendenze
jq -r '.packages[] |
  select(.name != null) |
  "\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
  sort | uniq

Visualizzazione web

Visualizzatore SBOM.sh online

  1. Accedi a https://sbom.sh/
  2. Carica il file sbom.json
  3. Esplora la visualizzazione interattiva di componenti e dipendenze

Rilevamento dei riferimenti agli artefatti

Trovare artefatti di firma

# Trova il riferimento dell'artefatto di firma
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Trova gli artefatti di attestazione

# Trova il riferimento dell'artefatto di attestazione
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1