> ## 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.

# Validierung von Image-Signaturen und Attestierungen

> Überprüfen Sie Cosign-Signaturen, SPDX SBOM und Attestierungen zu Schwachstellen-Scans für selbstgehostete Container-Images von ABBYY Vantage, um die Integrität der Softwarelieferkette zu bestätigen.

Dieses Dokument beschreibt, wie Sie die kryptografischen Signaturen und Attestierungen überprüfen, die von der Veröffentlichungspipeline des Images `vantage-packager` erstellt werden.

<div id="overview">
  ## Überblick
</div>

Die vantage-packager-Verarbeitungspipeline erstellt mehrere Sicherheitsartefakte für jedes veröffentlichte Container-Image:

* **Container-Image-Signatur**: Kryptografische Signatur mit Cosign
* **SPDX SBOM-Attestierung**: Software Bill of Materials im SPDX-2.3-Format
* **Attestierung des Schwachstellen-Scans**: Ergebnisse des Sicherheitsscans im SARIF-Format
  Alle Artefakte werden mit demselben privaten Schlüssel signiert und können mit dem entsprechenden öffentlichen Schlüssel verifiziert werden.

<div id="prerequisites">
  ## Voraussetzungen
</div>

Folgende Tools müssen installiert sein:

* `cosign` – für die Verifizierung von Signaturen und Attestierungen
* `jq` – für das Parsen und Analysieren von JSON
* `curl` – zum Herunterladen von Artefakten (optional)

<div id="signature-verification">
  ## Signaturverifizierung
</div>

<div id="basic-verification">
  ### Grundlegende Verifizierung
</div>

Verifizieren Sie eine Image-Signatur mit dem öffentlichen Schlüssel:

```bash theme={null}
# Signatur überprüfen (Transparenzprotokoll für private Registries überspringen)
cosign verify --key cosign.key.pub --insecure-ignore-tlog \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

<div id="with-tls-verification-disabled">
  ### Mit deaktivierter TLS-Prüfung
</div>

Für Registries mit selbstsignierten Zertifikaten:

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

Erwartete Ausgabe:

```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">
  ## Verifizierung der Attestierung
</div>

<div id="spdx-sbom-attestation">
  ### SPDX SBOM-Attestierung
</div>

Prüfen Sie die Attestierung der SPDX Software Bill of Materials:

```bash theme={null}
# SPDX-Attestierung verifizieren
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">
  ### Attestierung des Schwachstellen-Scans
</div>

Prüfen Sie die Attestierung des Schwachstellen-Scans:

```bash theme={null}
# Schwachstellen-Scan-Attestierung überprüfen
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">
  ## Attestierungsdaten abrufen
</div>

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

Extrahieren Sie die SPDX SBOM aus der Attestierung:

```bash theme={null}
# SPDX SBOM herunterladen und extrahieren
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">
  ### Ergebnisse des Schwachstellen-Scans herunterladen
</div>

Extrahieren Sie die Ergebnisse des Schwachstellen-Scans:

```bash theme={null}
# Schwachstellen-Scan herunterladen und extrahieren
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">
  ## Analyse von SPDX-SBOM-Daten
</div>

<div id="basic-sbom-information">
  ### Grundlegende Informationen zur SBOM
</div>

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

<div id="list-all-packages">
  ### Alle Pakete auflisten
</div>

```bash theme={null}
# Alle Pakete mit Versionen auflisten
jq -r '.packages[] | "\(.name) \(.versionInfo // "unknown")"' sbom.json | sort
```

<div id="find-packages-with-known-vulnerabilities">
  ### Pakete mit bekannten Sicherheitslücken finden
</div>

```bash theme={null}
# Pakete mit CPE-Bezeichnern auflisten (Schwachstellenreferenzen)
jq -r '.packages[] | select(.externalRefs[]?.referenceType == "cpe23Type") |
  "\(.name) \(.versionInfo // "unknown") - \(.externalRefs[0].referenceLocator)"' sbom.json
```

<div id="license-information">
  ### Lizenzinformationen
</div>

```bash theme={null}
# Pakete mit deklarierten Lizenzen anzeigen
jq -r '.packages[] | select(.licenseDeclared != "NOASSERTION") |
  "\(.name): \(.licenseDeclared)"' sbom.json
```

<div id="analyzing-vulnerability-scan-data">
  ## Daten eines Schwachstellen-Scans analysieren
</div>

<div id="basic-scan-information">
  ### Grundlegende Scan-Informationen
</div>

```bash theme={null}
# Scan-Metadaten anzeigen
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">
  ### Auflisten von Schwachstellen
</div>

```bash theme={null}
# Alle gefundenen Schwachstellen auflisten
jq -r '.runs[0].results[] |
  "\(.ruleId) - \(.level // "unknown") - \(.message.text)"' vuln-scan.sarif
```

<div id="high-severity-vulnerabilities">
  ### Schwachstellen mit hohem Schweregrad
</div>

```bash theme={null}
# Nur Schwachstellen mit hohem Schweregrad anzeigen
jq -r '.runs[0].results[] | select(.level == "error") |
  "\(.ruleId): \(.message.text)"' vuln-scan.sarif
```

<div id="sbom-visualization-tools">
  ## Tools zur SBOM-Visualisierung
</div>

<div id="cli-tools">
  ### CLI-Werkzeuge
</div>

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

Installieren und verwenden Sie das CycloneDX-SBOM-Dienstprogramm für eine erweiterte Analyse:

```bash theme={null}
# sbom-utility installieren (falls verfügbar)
go install github.com/CycloneDX/sbom-utility@latest

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

# Komponentenbericht erstellen
sbom-utility query --input-file sbom.json --select "name,version" --from "packages"
```

<div id="custom-analysis-with-jq">
  #### Benutzerdefinierte Analyse mit jq
</div>

```bash theme={null}
# Abhängigkeitsbaum-Ansicht erstellen
jq -r '.packages[] |
  select(.name != null) |
  "\(.name)@\(.versionInfo // "unknown") (\(.supplier // "unknown"))"' sbom.json |
  sort | uniq
```

<div id="web-based-visualization">
  ### Webbasierte Visualisierung
</div>

<div id="sbomsh-online-viewer">
  #### SBOM.sh-Online-Viewer
</div>

1. Rufen Sie [https://sbom.sh/](https://sbom.sh/) auf.
2. Laden Sie Ihre Datei `sbom.json` hoch.
3. Erkunden Sie die interaktive Visualisierung von Komponenten und Abhängigkeiten.

<div id="artifact-reference-discovery">
  ## Ermittlung von Artefaktverweisen
</div>

<div id="find-signature-artifacts">
  ### Signatur-Artefakte finden
</div>

```bash theme={null}
# Signatur-Artefakt-Referenz finden
cosign triangulate --type signature \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```

<div id="find-attestation-artifacts">
  ### Attestierungsartefakte finden
</div>

```bash theme={null}
# Attestierungs-Artefaktreferenz finden
cosign triangulate --type attestation \
  abyvtgonprm27.azurecr.io/vantage-installer:2.7.1
```
