Repository navigation
Conversation
Slice 131, stacked on slice 130 (PR #117). - Signing with a held key (cosign P-256, any key reference including KMS or PKCS#11), without a transparency log, so a disconnected or classified site needs only the public key (D-131-1). The cost: a stolen key signs silently, so one job holds it, and GitHub's logged platform provenance is requested beside it for connected consumers. - SLSA v1 provenance naming the builder, the repository, the commit, every hardening-manifest resource and both bases by digest. An image whose revision label is empty or names another commit is refused. - The SBOM attestation is mix trinity.sbom for the same commit, matched on the image. - A CycloneDX 1.6 ML-BOM from ci/headless/ai_models.yaml: - weights digest, licence, and every training dataset with its SPDX id or quoted terms; - the risk and the legal review status as a consideration; - the embedding space's manifest. The image's models file lists no models until slice 133 merges and the owner's legal review (D7) clears. - The level claim is Build L1 (ci/headless/slsa.yaml); a check fails if it is raised beyond what the workflow's mechanism supports. - docs/regulated/image-verify.md is the verification a stranger runs, offline, with cosign, jq and sha256sum. Each step has its own exit status. The tests and the workflow run that exact block, so the page cannot drift. - The publish job runs only after the image job passes, and only on main, a v* tag or by hand. - Two cosign behaviours were measured and are checked around: cosign verify passes an image that carries only an attestation, and it does not check layer blobs. Proven on a clean build of the real hardened image. A flipped layer bit exits 10 where cosign verify alone exits 0. The image also inherited UBI9 micro's revision and created labels (F-131-1), so both are now always set. Red evidence R1 to R7 is in the slice NOTES. Signed-off-by: Ayla Croft <aylacroft@proton.me>
…tainer-supply-chain Signed-off-by: Ayla Croft <aylacroft@proton.me>
Signed-off-by: Ayla Croft <aylacroft@proton.me>
Signed-off-by: Ayla Croft <aylacroft@proton.me>
Signed-off-by: Ayla Croft <aylacroft@proton.me>
Signed-off-by: Ayla Croft <aylacroft@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice 131: signing, provenance, SBOM and AI-BOM for the headless image. Stacked on #117 (slice 130): this PR's base is 130's branch. Merge #117 first.
The slice stays
in_progress. Thepublishjob has never run: it needs the project's signing key and a greenimagejob, and the image job needs the OTP bump. The AI-BOM's run on the real image waits on #119 and the legal review (D7).What lands
mix trinity.sbomfor the same commit, matched on the image.docs/regulated/image-verify.md: offline verification a stranger runs with cosign, jq and sha256sum. Each step has its own exit status, and the tests and the workflow run that exact block.publishjob: after a fully greenimagejob, on main, av*tag or by hand.Two cosign behaviours, measured and checked around
cosign verify --keypasses an image that carries only an attestation and no signature.cosign verifyalone exits 0.Criteria
Evidence
1097 passed (20 properties, 1077 tests), 30 excluded,prod_check: PASS, coverage 80.70%.--only image_signingwith real cosign: 12 passed;mix format --check-formattedOK;mix credo --strict --allfound no issues;A 130 defect this found
F-131-2:
scripts/headless_image.sh build TAGfailed after a successful build ("dir: unbound variable"), and the workflow calls it exactly that way. It is reproduced in isolation and fixed on #117 itself asfix(s130), merged in here.Owner actions
COSIGN_PRIVATE_KEYandCOSIGN_PASSWORDas repository secrets, commit the public half asci/headless/cosign.pub, and make the GHCR package public.