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
| Parameter | Beschreibung | Standard |
|---|---|---|
image | Vollständige Container-Image-Referenz, an die die Attestierung angehängt wird – z.B. registry.example.com/my/image@sha256:... | – |
stage | Stage, in der die Jobs ausgeführt werden | test |
registry | Hostname der Container-Registry für den Login | $CI_REGISTRY |
registry_user | Benutzername für die Registry | $CI_REGISTRY_USER |
registry_password | Passwort für die Registry | $CI_REGISTRY_PASSWORD |
needs | Liste von Jobs, auf die der Upload-Job warten soll (Ausführungsreihenfolge) | [] |
dependencies | Liste von Jobs, deren Artefakte der Upload-Job herunterladen soll | [] |
job_suffix | Suffix 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:
| Datei | Beschreibung |
|---|---|
attestation-report.json | Der rohe Attestierungsbericht im openCode Source Provenance Schema |
attestation-report.json.dsse | DSSE-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