feat: publish signed image provenance manifests - #896
Conversation
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
Created with Codex (GPT-5.6)
|
Posted by Codex (GPT-5.6) on behalf of Michael Sarahan. Treat this description as LLM-generated. Provenance validation evidenceValidated the published OCI provenance artifacts from the current PR commit
This validates the intended chain: immutable image digest -> signed OCI provenance artifact -> exact package inventory, with a signed multiarch index relating the platform manifests. |
Created with Codex (GPT-5.6)
|
@jameslamb please take a (forgiving) look here. This would be a very useful thing as the release approaches. It would make it easier to triage container-based CVEs. If something here is wrong, please call it out. If it's not quite technically accurate, by all means call it out, but let practicality win over purity for now and let's sort out the rest in later work. |
|
|
|
Demo of what this stores, using oras: |
Created with Codex (GPT-5).
|
iiiiinteresting, ok thank you! |
Created with Codex (GPT-5).
Created with Codex (GPT-5).
Created with Codex (GPT-5).
Feedback from James is that the purpose of this PR was not clear, and that the summary was pretty heavy on jargon. The jargon did not phase me, presumably because I've been swimming in this stuff for longer/deeper.
The purpose of this PR is to surface image contents in better ways. As part of our release process, the images that this repo produces get scanned with various tools to find CVEs and malware. These tools are prone to misidentifying some components, and that has been especially true for conda packages historically. We have frequently needed to override the detected package lists/SBOM via JIRA tickets with our security tools team. Part of filing those tickets is providing them with the actual contents of the images, which we often have to discover by looking into build logs.
That's where this PR comes in. Instead of looking at build logs, we should export our known environment information to a more readily usable location. In theory, this could replace the scans, but I think it's better to keep doing the scans and use our manifests as validation/correction where necessary. That keeps us in line with how security tools team manages other projects.
Posted by Codex (GPT-5.6) on behalf of Michael Sarahan. Treat this description as LLM-generated.
Summary
Add a signed, OCI-referrer RAPIDS image provenance manifest for published
baseand
notebooksimage digests.conda-metapackage facts through minimal BuildKit targets ratherthan downloading image layers.
attach a multiarch index manifest that links those platform records.
and conda package name/version/build/channel/source URL.
this intentionally does not invent
pkg:conda/...identifiers.Relationship to #805
#805 is complementary. It generates and
embeds a CycloneDX SBOM in the final image. This change makes digest-bound build
facts discoverable as registry metadata and supplies the platform-to-multiarch
relationship needed by scan triage without pulling image layers.
If #805 lands, the preferred follow-up is to add its SBOM digest/reference to
this manifest rather than maintain a separate provenance model. Its Dockerfile
stage renaming will require a small conflict resolution in this branch's
provenance-baseandprovenance-notebooksexport targets.Validation
pytest -q tests/test_image_provenance_manifest.pypre-commit run --all-files(Ruff, ShellCheck, Zizmor, copyright checks)git diff --checkBuildx static validation was attempted but the local configured remote builder
timed out while connecting. No image was built locally. The first CI run should
therefore confirm Docker Hub OCI-referrer support and keyless Cosign signing on
the production runners.