[PR #15] [MERGED] feat: enterprise supply chain security — cosign keyless signing, SBOM attestation, SLSA provenance, Trivy scanning, Kyverno enforcement, ACT smoke validation #26
Labels
No labels
pull-request
released
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
webgrip/infrastructure#26
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/webgrip/infrastructure/pull/15
Author: @Ryangr0
Created: 5/28/2026
Status: ✅ Merged
Merged: 5/29/2026
Merged by: @Ryangr0
Base:
main← Head:feat/supply-chain-security📝 Commits (4)
001fc74feat: enterprise supply chain security — cosign, SBOM, SLSA, Trivy, Kyvernob94c32dAdd ACT dry-run smoke validation for supply chain workflow1293e3dRefine ACT dry-run mock artifacts for action smoke tests412662dUse realistic synthetic digest for ACT dry-run path📊 Changes
15 files changed (+1469 additions, -1 deletions)
View changed files
➕
.actrc(+2 -0)➕
.github/act/release-published.event.json(+10 -0)➕
.github/actions/cosign-sign-attest/action.yml(+346 -0)➕
.github/workflows/act_supply_chain_smoke.yml(+28 -0)📝
.github/workflows/on_release_published.yml(+59 -0)📝
README.md(+11 -1)➕
docs/adrs/0002-supply-chain-security.md(+167 -0)➕
docs/techdocs/docs/security/image-signing.md(+132 -0)➕
docs/techdocs/docs/security/index.md(+53 -0)➕
docs/techdocs/docs/security/kyverno-enforcement.md(+154 -0)➕
docs/techdocs/docs/security/sbom-attestations.md(+154 -0)➕
docs/techdocs/docs/security/supply-chain-security.md(+109 -0)➕
docs/techdocs/docs/security/vulnerability-scanning.md(+105 -0)📝
docs/techdocs/mkdocs.yml(+7 -0)➕
ops/kyverno/cluster-policies/verify-webgrip-images.yaml(+132 -0)📄 Description
Summary
This PR implements end-to-end software supply chain security for every container image published from this repository, targeting SLSA Build Level 2 and aligning with NIST SSDF (SP 800-218) and the CIS Software Supply Chain Security Guide.
No long-lived signing keys are required. Everything is driven by GitHub OIDC.
It also adds local ACT smoke-validation support so the supply-chain workflow shape can be validated before running in GitHub-hosted release jobs.
What this adds
🔐 Keyless image signing (cosign + GitHub OIDC)
Every released image is signed using cosign's keyless flow:
https://github.com/webgrip/infrastructure/.github/workflows/on_release_published.yml@refs/tags/<tag>Forging this signature requires compromising GitHub's OIDC infrastructure, not just stealing a secret.
📦 SBOM generation + attestation (Syft + cosign)
Syft generates a full component inventory for every image in two formats:
Both SBOMs are also uploaded as 90-day workflow artifacts.
🏛️ SLSA Build Provenance (GitHub native attestations)
actions/attest-build-provenancerecords SLSA v1.0 Build Provenance in GitHub's attestation store and pushes it to the OCI registry. Verifiable with:🛡️ Vulnerability scanning (Trivy)
Trivy scans every released image for OS and library CVEs:
exit-code: 0) — findings are tracked, not release-blocking🔒 Kyverno cluster enforcement policy
ops/kyverno/cluster-policies/verify-webgrip-images.yamlprovides aClusterPolicyfor the homelab cluster that:Auditmode — switch toEnforceonce all images are signed🧪 ACT local smoke validation
Adds ACT-focused validation support for the signing pipeline:
dry-run: 'true'to skip OIDC signing / registry mutation while still validating flow and outputsreleaseevent payload for local simulationChanged files
.github/actions/cosign-sign-attest/action.ymldry-runmode.github/workflows/on_release_published.yml.github/workflows/act_supply_chain_smoke.yml.github/act/release-published.event.json.actrcREADME.mdops/kyverno/cluster-policies/verify-webgrip-images.yamlClusterPolicyfor homelab-cluster enforcementdocs/adrs/0002-supply-chain-security.mddocs/techdocs/docs/security/index.mddocs/techdocs/docs/security/supply-chain-security.mddocs/techdocs/docs/security/image-signing.mddocs/techdocs/docs/security/sbom-attestations.mddocs/techdocs/docs/security/vulnerability-scanning.mddocs/techdocs/docs/security/kyverno-enforcement.mddocs/techdocs/mkdocs.ymlRequired job permissions
The new signing jobs require these permissions (scoped to the signing job only, not the build job):
Verification after merge
Once a release is published after this PR merges:
Local ACT smoke checks:
Rollout plan for the cluster
ops/kyverno/cluster-policies/verify-webgrip-images.yamlto the homelab cluster inAuditmodekubectl get policyreport -Afor violationsEnforceStandards coverage
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.