Product Logo

Source Provenance Attestierung

Eine Source Provenance Attestierung ist eine kryptographisch signierte Aussage, die nachweist, woher ein Artefakt kommt und wie es gebaut wurde (Quelle, Build-Plattform, Zeitpunkt, Parameter, Dependencies etc.).

Um die Lieferketten Badge Gold zu erreichen ist eine Source-Provenance Attestierung im openCode Source Provenance Schema erforderlich.

Erreichung der Badge

Um die Generierung der Source Provenance Attestierung so einfach wie möglich zu gestalten stellt openCode eine GitLab CI Komponente bereit, die Sie in Ihrem Projekt einbinden können.

Beispielprojekte für die Einbindung der Komponente finden Sie hier:

Einbindung der CI Komponente

include:
  - component: '$CI_SERVER_FQDN/open-code/badgebackend/source-provenance-attestation-service/attestation@main'
    inputs:
      stage: "test"
      image: "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"

Eingabeparameter

ParameterBeschreibungStandard
imageVollständige Container-Image-Referenz, an die die Attestierung angehängt wird – z.B. registry.example.com/my/image@sha256:...
stageStage, in der die Jobs ausgeführt werdentest
registryHostname der Container-Registry für den Login$CI_REGISTRY
registry_userBenutzername für die Registry$CI_REGISTRY_USER
registry_passwordPasswort für die Registry$CI_REGISTRY_PASSWORD
needsListe von Jobs, auf die der Upload-Job warten soll (Ausführungsreihenfolge)[]
dependenciesListe von Jobs, deren Artefakte der Upload-Job herunterladen soll[]
job_suffixSuffix für den Job-Namen – erforderlich bei mehrfacher Nutzung der Komponente in einer Pipeline""

Erzeugte Artefakte

Die Komponente erzeugt zwei Artefakte, die über den Job source-provenance-artifacts in der aufrufenden Pipeline verfügbar sind:

DateiBeschreibung
attestation-report.jsonDer rohe Attestierungsbericht im openCode Source Provenance Schema
attestation-report.json.dsseDSSE-Envelope — die signierte In-toto-Aussage mit dem privaten Schlüssel des Attestierungsservices

Attestierung verifizieren

Der öffentliche Schlüssel des openCode Attestierungsservices:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAvjDVKCPuUDwUCYSgoEjMl91EnBj
jTQrFzqgRRfkAoFtVOaoqM/V+WFk0hiLkeEuikzZrWlvt30sutqBFZXPxw==
-----END PUBLIC KEY-----
cosign verify-attestation \
  --key cosign.pub \
  --insecure-ignore-tlog \
  --type "https://gitlab.opencode.de/open-code/badgebackend/source-provenance-attestation-service/schema/golang/source-provenance-report-v1" \
  registry.example.com/your/image:tag

Weiterführende Informationen