· Offcenit Team · 1 min lesetid

Signert leveringskjede: Fra kode til produksjon

Hvordan vi implementerte en fullstendig signert leveringskjede med Sigstore, SBOM-er og attestasjoner.

Problemet

Supply chain-angrep har blitt en av de mest effektive angrepsvektorene. SolarWinds, Codecov, log4j — alle utnyttet tillit i leveringskjeden. Vi ville sikre at alt som kjører i produksjon kan verifiseres tilbake til en kjent kilde.

Vår tilnærming

Vi implementerte en “zero trust”-leveringskjede med fire lag:

1. Kodesignering

Alle commits signeres med SSH-nøkler, verifisert av Forgejo. Unsigned commits kan ikke merges til main.

2. Container-signering med Cosign

Hver container-image signeres i CI-pipelinen:

cosign sign --key cosign.key ghcr.io/offcenit/app:${TAG}

Kubernetes admission controller (Kyverno) avviser alle usignerte images.

3. SBOM (Software Bill of Materials)

Vi genererer SBOM for hvert image med Syft:

syft ghcr.io/offcenit/app:${TAG} -o spdx-json > sbom.json
cosign attest --predicate sbom.json --type spdxjson \
  ghcr.io/offcenit/app:${TAG}

4. Rekor transparency log

Alle signaturer og attestasjoner logges i en Rekor-instans. Dette gir oss en uforanderlig audit trail.

Verifisering i praksis

Når en Pod skal starte i klusteret:

  1. Kyverno sjekker at imaget er signert med vår nøkkel
  2. Kyverno verifiserer at en SBOM-attestasjon eksisterer
  3. Signaturen verifiseres mot Rekor-loggen
  4. Podden starter — eller avvises med en tydelig feilmelding

Resultater

  • 100% av produksjons-images er signert
  • Automatisk SBOM for alle leveranser
  • Verifiserbar kjede fra Git-commit til kjørende Pod
  • Compliance-dokumentasjon genereres automatisk fra attestasjoner

Neste steg

Vi jobber med å utvide dette til en tjeneste for kundene våre — “Signaturkjede” — som er i pilot nå. Målet er at enhver kunde skal kunne verifisere at det som kjører i deres namespace er nøyaktig det de forventer.

Supply chain security er ikke et prosjekt med en sluttdato. Det er en kontinuerlig prosess der hver forbedring reduserer angrepsflaten. Men med riktig verktøy og praksis er det overraskende overkommelig.