> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Validación de firmas y atestaciones de imágenes

> Verifique las firmas de Cosign, el SBOM SPDX y las atestaciones de análisis de vulnerabilidades de las imágenes de contenedor autoalojadas de ABBYY Vantage para confirmar la integridad de la cadena de suministro.

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

<div id="overview">
  ## Descripción general
</div>

El flujo `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 están firmados con la misma clave privada y se pueden verificar con la clave pública correspondiente.

<div id="prerequisites">
  ## Requisitos previos
</div>

Necesitarás tener instaladas las siguientes herramientas:

* `cosign` - para verificar firmas y atestaciones
* `jq` - para el análisis y parseo de JSON
* `curl` - para descargar artefactos (opcional)

<div id="signature-verification">
  ## Verificación de firmas
</div>

<div id="basic-verification">
  ### Verificación básica
</div>

Verifique la firma de una imagen con la clave pública:

```bash theme={null}
# 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
```

<div id="with-tls-verification-disabled">
  ### Con la verificación TLS desactivada
</div>

Para registros que usan certificados autofirmados:

```bash theme={null}
cosign verify --key cosign.key.pub --insecure-ignore-tlog --allow-insecure-registry \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

Resultado esperado:

```json theme={null}
[{
  "critical": {
    "identity": {
      "docker-reference": "abyvtgonprm27.azurecr.io/vantage-installer"
    },
    "image": {
      "docker-manifest-digest": "sha256:a4190ad9d5289d7ad2d02d05749c10713a7aac217e8010b5e4ef15161b181c94"
    },
    "type": "cosign container image signature"
  }
}]
```

<div id="attestation-verification">
  ## Verificación de atestaciones
</div>

<div id="spdx-sbom-attestation">
  ### Atestación de SBOM SPDX
</div>

Verifique la atestación del SBOM SPDX:

```bash theme={null}
# Verificar la atestación SPDX
cosign verify-attestation --key cosign.key.pub --type spdx --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

<div id="vulnerability-scan-attestation">
  ### Atestación de análisis de vulnerabilidades
</div>

Verifique la atestación de análisis de vulnerabilidades:

```bash theme={null}
# Verificar la atestación del análisis de vulnerabilidades
cosign verify-attestation --key cosign.key.pub --type vuln --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

<div id="retrieving-attestation-data">
  ## Obtención de datos de atestación
</div>

<div id="download-spdx-sbom">
  ### Descargar SBOM SPDX
</div>

Obtenga el SBOM SPDX de la atestación:

```bash theme={null}
# Descargar y extraer 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
```

<div id="download-vulnerability-scan">
  ### Descargar el análisis de vulnerabilidades
</div>

Extraiga los resultados del análisis de vulnerabilidades:

```bash theme={null}
# Descargar y extraer el análisis 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
```

<div id="analyzing-spdx-sbom-data">
  ## Análisis de datos de la SBOM SPDX
</div>

<div id="basic-sbom-information">
  ### Información básica sobre la SBOM
</div>

```bash theme={null}
# Ver metadatos del SBOM
jq '{
  name: .name,
  spdxVersion: .spdxVersion,
  creationInfo: .creationInfo,
  packageCount: (.packages | length)
}' sbom.json
```

<div id="list-all-packages">
  ### Listar todos los paquetes
</div>

```bash theme={null}
# Listar todos los paquetes con versiones
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort
```

<div id="find-packages-with-known-vulnerabilities">
  ### Buscar paquetes con vulnerabilidades conocidas
</div>

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

<div id="license-information">
  ### Información sobre License
</div>

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

<div id="analyzing-vulnerability-scan-data">
  ## Análisis de los datos del análisis de vulnerabilidades
</div>

<div id="basic-scan-information">
  ### Información básica del escaneo
</div>

```bash theme={null}
# Ver metadatos del scan
jq '{
  version: .version,
  tool: .runs[0].tool.driver.name,
  toolVersion: .runs[0].tool.driver.version,
  resultCount: (.runs[0].results | length)
}' vuln-scan.sarif
```

<div id="list-vulnerabilities">
  ### Lista de vulnerabilidades
</div>

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

<div id="high-severity-vulnerabilities">
  ### Vulnerabilidades de alta gravedad
</div>

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

<div id="sbom-visualization-tools">
  ## Herramientas para visualizar SBOM
</div>

<div id="cli-tools">
  ### Herramientas de línea de comandos
</div>

<div id="cyclonedx-sbom-utility">
  #### Utilidad de SBOM de CycloneDX
</div>

Instala y usa la utilidad de SBOM de CycloneDX para realizar análisis avanzados:

```bash theme={null}
# Instalar sbom-utility (si está disponible)
go install github.com/CycloneDX/sbom-utility@latest

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

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

<div id="custom-analysis-with-jq">
  #### Análisis personalizado con jq
</div>

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

<div id="web-based-visualization">
  ### Visualización web
</div>

<div id="sbomsh-online-viewer">
  #### Visor en línea de SBOM.sh
</div>

1. Visita [https://sbom.sh/](https://sbom.sh/)
2. Carga tu archivo `sbom.json`
3. Explora la visualización interactiva de los componentes y sus dependencias

<div id="artifact-reference-discovery">
  ## Detección de referencias a artefactos
</div>

<div id="find-signature-artifacts">
  ### Buscar artefactos de firma
</div>

```bash theme={null}
# Buscar referencia de artefacto de firma
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

<div id="find-attestation-artifacts">
  ### Buscar artefactos de atestación
</div>

```bash theme={null}
# Buscar referencia de artefacto de atestación
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```
