Saltar al contenido principal
Este documento describe cómo verificar las firmas criptográficas y las atestaciones creadas por el pipeline de publicación de imágenes vantage-packager.

Descripción general

El pipeline de vantage-packager crea varios artefactos de seguridad para cada imagen publicada:
  • Firma de imagen de contenedor: Firma criptográfica con Cosign
  • Atestación de SBOM SPDX: Lista de materiales de software en formato SPDX 2.3
  • Atestación de análisis de vulnerabilidades: Resultados del análisis de seguridad en formato SARIF
Todos los artefactos se firman con la misma clave privada y pueden verificarse con la clave pública correspondiente.

Requisitos previos

Necesitarás tener instaladas las siguientes herramientas:
  • cosign - para la verificación de firmas y atestaciones
  • jq - para el análisis y procesamiento de JSON
  • curl - para la descarga de artefactos (opcional)

Verificación de firma

Verificación básica

Verifique la firma de una imagen con la clave pública:
# Verificar firma (omitir el registro de transparencia para registros privados)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Con la verificación de TLS desactivada

Para registros con certificados autofirmados:
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
Resultado esperado:
[{
  "critical": {
    "identity": {
      "docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
    },
    "image": {
      "docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
    },
    "type": "cosign container image signature"
  }
}]

Verificación de la atestación

Atestación de SBOM SPDX

Verifique la atestación del SBOM SPDX:
# Verificar atestación SPDX
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Atestación del análisis de vulnerabilidades

Verifique la atestación del análisis de vulnerabilidades:
# Verificar la atestación de escaneo de vulnerabilidades
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Obtención de datos de atestación

Descargar SBOM SPDX

Extraiga el SBOM SPDX de la atestación:
# Descargar y extraer el 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

Descargar el análisis de vulnerabilidades

Extraer los resultados del análisis de vulnerabilidades:
# Descargar y extraer el escaneo de vulnerabilidades
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

Análisis de datos de SBOM en formato SPDX

Información básica sobre el SBOM

# Ver metadatos de SBOM
jq '{
  name: .name,
  spdxVersion: .spdxVersion,
  creationInfo: .creationInfo,
  packageCount: (.packages | length)
}' sbom.json

Listar todos los paquetes

# Listar todos los paquetes con versiones
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort

Buscar paquetes con vulnerabilidades conocidas

# Listar paquetes con identificadores CPE (referencias de vulnerabilidad)
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
  "\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json

Información sobre la licencia

# Mostrar paquetes con licencias declaradas
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
  "\(.name): \(.licenseDeclared)"' sbom.json

Análisis de los datos de escaneo de vulnerabilidades

Información básica del análisis de vulnerabilidades

# Ver metadatos del análisis
jq '{
  version: .version,
  tool: .runs[0].tool.driver.name,
  toolVersion: .runs[0].tool.driver.version,
  resultCount: (.runs[0].results | length)
}' vuln-scan.sarif

Listar vulnerabilidades

# Listar todas las vulnerabilidades encontradas
jq -r '.runs[0].results[] |
  "\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif

Vulnerabilidades de alta gravedad

# Mostrar solo las vulnerabilidades de alta gravedad
jq -r '.runs[0].results[] | select(.level == "error") |
  "\(.ruleId): \(.message.text)"' vuln-scan.sarif

Herramientas para visualizar SBOM

Herramientas de línea de comandos

Herramienta SBOM de CycloneDX

Instale y use la herramienta SBOM de CycloneDX para análisis avanzados:
# Instalar sbom-utility (si está disponible)
go install github.com/CycloneDX/sbom-utility@latest

# Validar SBOM de SPDX
sbom-utility validate --input-file sbom.json

# Generar informe de componentes
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"

Análisis personalizado con jq

# Crear una vista de árbol de dependencias
jq -r '.packages[] |
  select(.name != null) |
  "\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
  sort | uniq

Visualización web

Visor en línea de SBOM.sh

  1. Visite https://sbom.sh/
  2. Cargue su archivo sbom.json
  3. Explore la visualización interactiva de componentes y dependencias

Búsqueda de referencias de artefactos

Buscar artefactos de firma

# Buscar referencia del artefacto de firma
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1

Buscar artefactos de atestación

# Buscar referencia del artefacto de atestación
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1