feat(release): add artifact-bound SBOM assurance for nightly builds - #6777
feat(release): add artifact-bound SBOM assurance for nightly builds#6777mcc0nnell wants to merge 12 commits into
Conversation
c0d0a4b to
50da676
Compare
squakez
left a comment
There was a problem hiding this comment.
Thanks for the work. The PR seems overall fine, but I am not sure about the need to reuse the docker credentials. For security reasons these should not be shared, even more considering they have write permission in the repo.
|
Thanks for the review. I’ve pushed a follow-up addressing the three points.
I also removed the last duplicated hard-coded Syft version so the manifest is now the single source of truth. Thanks again. Those were good catches. |
squakez
left a comment
There was a problem hiding this comment.
Thanks again for going through all the fixes. However I've realized this could go against the Apache release signing process [1] and I wonder if it makes sense at all signing the nightly which comes unsupported anyway. Is there any special reason to have this for the nightly release? do you need it for some particular scenario?
Given that our current release process is maintainer-driven and the artifacts are staged, voted on, and then promoted, I wonder if it would make more sense to perform the final signing/attestation as part of the actual release process rather than on the nightly workflow.
This would give us a cleaner trust boundary: nightlies can still generate and validate the SBOMs, while the official release artifacts are signed/attested only after the release candidate has gone through the Apache release process. It also means we can attest the exact artifacts that are ultimately promoted.
I think this would fit nicely with the existing release flow and avoid making the nightly workflow a release-signing authority. WDYT?
|
fyi @oscerd |
|
IMO the release signing should be done only for voted release, not for nightly. |
Apply the maintainer-requested trust-boundary correction to the existing assurance branch.
Summary
This hardens the Camel K nightly release path by binding generated SBOMs to the specific client and container artifacts they describe.
The scope is intentionally limited to unsigned nightly integrity evidence. This PR does not add Apache release signing, does not make the nightly workflow a signing authority, and does not represent a voted release.
What this changes
Verification behavior
The verifier checks the relationships recorded in the receipt, including:
Strict nightly verification fails if required local evidence is missing or inconsistent.
This is integrity verification, not authentication of an Apache release.
Testing
The assurance scripts were exercised with hermetic fixtures covering the supported client targets:
Negative cases cover failures such as:
The remaining integration proof is a successful execution through the real nightly environment, specifically:
I do not want to claim that integration boundary is proven until a live nightly run exercises it.
Scope and release-signing boundary
Following review feedback, keyless signing and attestations were removed from the nightly path.
The nightly workflow now produces only unsigned integrity evidence. The generated receipt and CycloneDX files are not Apache release signatures and do not represent a voted release.
Any future signing or attestation work for official releases should be handled separately and aligned with the existing Apache release process after the release candidate has gone through the normal staging and vote flow.
Why
The existing module-level SBOM is useful, but by itself it does not establish which dependency evidence belongs to each independently built client or container artifact.
This change preserves that relationship explicitly:
source -> artifact -> immutable digest -> artifact-specific SBOM -> receipt -> verification
The goal is to let a downstream consumer or maintainer independently determine whether the integrity evidence published with a nightly build corresponds to the artifacts that were actually produced and published.
AI assistance disclosure
This contribution was developed with assistance from OpenAI tooling, operated and reviewed by Robert McConnell. The implementation, scope, verification claims, and final submission remain the responsibility of the human contributor.