Skip to content

Publish keyless cosign signatures, SLSA provenance, and SBOM attestations for releases #2432

@mchmarny

Description

@mchmarny

Summary

Request that releases of gpu-operator container images and Helm charts ship with keyless cosign signatures, SLSA build provenance, and SBOM attestations, all verifiable from the public Sigstore Rekor transparency log.

Why

Downstream projects that integrate gpu-operator into curated platforms (in our case, NVIDIA AICR) are increasingly required to produce a customer-facing supply-chain story for security review, air-gap deployment, and SLSA / NIST SSDF compliance. Today AICR can pin gpu-operator's chart versions and image digests, and we render the deployed image set into a public CycloneDX BOM, but we cannot complete the chain because the published artifacts cannot be verified against a publisher-rooted, transparency-logged trust path.

Current state

Verified against nvcr.io/nvidia/gpu-operator:v26.3.1 (the most recent release at the time of filing):

  • Image is signed (legacy, key-based). A .sig artifact exists alongside the image with a dev.cosignproject.cosign/signature annotation. The signature carries no embedded Fulcio certificate and no Rekor bundle, so verification requires consumers to know and trust an out-of-band public key. cosign verify <image> (keyless mode) fails with no matching signatures: empty key.
  • No SLSA build provenance attestation. cosign verify-attestation --type slsaprovenance <image> returns no matching attestations. There is no cryptographic record tying the image digest to its build workflow, source commit, and dependencies.
  • No SBOM attestation. cosign download attestation <image> returns no attestations. Customers cannot fetch a tamper-evident inventory of what's inside the image.

The ask below is to move from key-based signing to the modern keyless + Rekor + SLSA + SBOM pattern that admission policies (Kyverno, Gatekeeper, Sigstore policy-controller) and supply-chain tools (Trivy, Grype, in-toto) verify natively.

What we're asking for

Concretely, on each gpu-operator release:

  1. Cosign keyless signature on every container image (cosign sign <image>@<digest> with the GitHub Actions OIDC identity).
  2. SLSA Build L3 provenance attestation (e.g., via slsa-github-generator or the cosign+goreleaser integration; predicate type https://slsa.dev/provenance/v1).
  3. SBOM attestation (e.g., syft attest with predicate type https://cyclonedx.org/bom or SPDX equivalent).

The same applies to the Helm chart artifact when published as an OCI artifact (cosign sign-blob or the chart-aware equivalent).

Reference implementations

Two NVIDIA-owned projects already do this end-to-end and can serve as direct templates:

Both produce signatures verifiable with stock cosign:

cosign verify <image-or-chart>@<digest> \
  --certificate-identity-regexp 'https://github.com/NVIDIA/gpu-operator/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

Acceptance criteria

A release counts as "fully attested" when, for every published image and chart artifact:

  • cosign verify ... succeeds with the publisher's expected OIDC identity (no out-of-band key required).
  • cosign verify-attestation --type slsaprovenance ... returns a SLSA v1 predicate naming the source repo and the build workflow.
  • cosign verify-attestation --type cyclonedx ... (or SPDX equivalent) returns an SBOM attestation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureissue/PR that proposes a new feature or functionalitylifecycle/frozen

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions