Zum Inhalt springen

Vertrag05 von 09

Welche Felder beschreibt eine Version?

Eine Version ist ein Digest mit Stückliste und Signatur.

Thema
HERMES
Lesezeit
2 Min.
Erstfassung
Auf dieser Seite
  1. 01Ein geplanter Vertrag, kein erreichbarer Endpunkt
  2. 02Der Digest ist der Name
  3. 03Stückliste, Herkunft, Signatur
  4. 04Auflagen gehören zur Version
  5. 05Geprüft vor dem Start
  6. 06Schema
  7. 07Felder
  8. 08Fehlerfälle
  9. 09Grenze und Regel
  10. 10Quellen
  11. 11Verwandte Seiten

Was gebaut ist

Eine Version ist das, was HERMES ausliefert und was ein Ort startet. Dieser geplante Vertrag legt fest, woraus sie besteht und wie man ihr vertraut: ein Digest als Name, eine Stückliste als Inhalt, eine Signatur als Urheber und Auflagen als Bedingung, unter der sie laufen darf.

Ein geplanter Vertrag, kein erreichbarer Endpunkt

Die Felder beschreiben die vorgesehene Form einer Version. Sie folgt dem Aufbau eines OCI-Images mit Anlagen. Eine ausgelieferte Version, ein Register der Versionen und eine Schnittstelle dafür bestehen noch nicht.

Der Digest ist der Name

Eine Version heißt sha256: gefolgt vom Prüfwert ihres Manifests. Das Manifest nennt die Digests von Konfiguration und Schichten, und damit umfasst der Digest das ganze Image. Bezeichnungen wie eine Versionsnummer oder latest sind Namen, die auf einen Digest zeigen und morgen auf einen anderen zeigen können. Freigaben, Kanäle, Wellen und Verlauf nennen darum immer den Digest.

Stückliste, Herkunft, Signatur

An den Digest sind drei Anlagen gebunden. Die Stückliste nennt jede Komponente mit Name, Version, Lizenz und Package URL im Format SPDX oder CycloneDX. Die Herkunftsangabe nennt Quelle, Commit, Bauumgebung und Schritte des Baus. Die Signatur bestätigt den Digest des Manifests und liegt neben dem Image. Anlagen, die nicht an den Digest gebunden sind, gelten nicht.

Auflagen gehören zur Version

Begriff · Umgebung

Ein Ort, an dem eine Version läuft, mit Eigenschaften, einem Kanal und einem Stand, mit oder ohne Verbindung nach außen.

Umgebung im Zusammenhang

Die Auflagen nennen Plattformen, Mindestversion der Laufzeit, Ressourcen, erlaubte Vorgängerversionen, Zulassungen und Markierungen der Daten. HERMES gleicht sie mit den Eigenschaften der Umgebungen ab, bevor es ein Soll schreibt. Auch sie hängen signiert am Digest.

Geprüft vor dem Start

Begriff · Herkunft

Die Angabe zu einem Wert, aus welcher Quelle, welchem Objekt der Quelle und welchem Lauf er stammt. Herkunft belegt nicht, dass der Wert stimmt.

Herkunft im Zusammenhang

Ein Ort startet eine Version nur, wenn Signatur, Digest und Herkunft gegen die Regel des Orts bestehen: welche Schlüssel oder Identitäten signieren dürfen, welche Quellen und Bauumgebungen erlaubt sind. Die Prüfung läuft am Ort und braucht keine Verbindung zum Hersteller. Eine Version ohne gültige Signatur startet nicht.

Schema

{
  "digest": "sha256:<wert>",
  "mediaType": "application/vnd.oci.image.index.v1+json",
  "manifests": [{ "platform": { "architecture": "<architektur>", "os": "<system>" }, "digest": "sha256:<wert>" }],
  "attachments": {
    "sbom": { "format": "spdx | cyclonedx", "digest": "sha256:<wert>" },
    "provenance": { "digest": "sha256:<wert>" },
    "signature": { "digest": "sha256:<wert>" },
    "requirements": { "digest": "sha256:<wert>" }
  },
  "channel": "<kanal>"
}
Schema 1JSON · Schema mit Platzhaltern

Felder

FeldTypPflichtBedeutung
digeststringjasha256: und Prüfwert des Manifests. Der Name der Version.
mediaTypestringjaArt des Manifests, für mehrere Plattformen ein Image Index.
manifestsobject[]jaJe Plattform ein Manifest mit Architektur, Betriebssystem und Digest.
attachments.sbomobjectjaStückliste in SPDX oder CycloneDX, an den Digest gebunden.
attachments.provenanceobjectjaHerkunft des Baus: Quelle, Commit, Bauumgebung, Schritte.
attachments.signatureobjectjaSignatur über den Digest des Manifests.
attachments.requirementsobjectjaAuflagen: Plattformen, Laufzeit, Ressourcen, Vorversionen, Zulassungen, Markierungen.
attachments.vexobjectneinAussagen zur Ausnutzbarkeit bekannter Schwachstellen, von Menschen verantwortet.
channelstringneinKanal, in dem der Digest steht. Der Kanal zeigt auf den Digest, nicht umgekehrt.

Fehlerfälle

KennungBedeutung
VERSION_SIGNATURE_INVALIDDie Signatur fehlt oder passt nicht zum Digest und zu einer erlaubten Identität.
VERSION_PROVENANCE_REJECTEDQuelle oder Bauumgebung sind nach der Regel des Orts nicht erlaubt.
VERSION_REQUIREMENTS_UNMETEine Auflage der Version wird von der Umgebung nicht erfüllt.
VERSION_ATTACHMENT_MISSINGEine verlangte Anlage fehlt oder ist nicht an den Digest gebunden.
VERSION_ROLLBACK_BLOCKEDDer Wechsel auf den früheren Digest ist nach den Auflagen nicht erlaubt.

Grenze

Grenze
Dieser Schnittstellenvertrag ist geplant. Er belegt weder eine ausgelieferte Version noch ein Register. Die Stückliste nennt, was im Image steht, und sagt nichts darüber, ob es sicher ist.

Quellen

  1. OCI Image Format SpecificationOpen Container Initiative. Manifest, Konfiguration, Schichten und Image Index.
  2. SPDX SpecificationLinux Foundation. Format der Software-Stückliste, auch als ISO/IEC 5962.
  3. CycloneDX SpecificationOWASP. Zweites verbreitetes Format der Stückliste.
  4. SLSA: Supply-chain Levels for Software ArtifactsBeschreibung der Herkunft eines Baus.

Verwandte Seiten