Signing of docker images with cosign
Right now Atlas' images don't carry a signature we can verify, so we can't include them in that policy.
Would you be open to signing releases with cosign? A few reasons it's worth it beyond just us:
- Supply-chain integrity — proves an image wasn't tampered with between your build and someone's cluster, and that it genuinely came from your CI, not a compromised mirror or a malicious re-push.
- No key management for you — "keyless" signing (Sigstore/Fulcio) ties the signature to your CI identity (e.g. a specific GitHub Actions workflow) via short-lived OIDC certificates. Nothing to generate, store, or rotate.
- Free and public — Sigstore's infrastructure (Fulcio, Rekor) is a free public good; there's no cost or vendor lock-in.
- Increasingly expected — more consumers are adopting policy-as-code admission control (Kyverno, OPA/Gatekeeper) that specifically checks for this, so it's likely to keep coming up.
How to implement it (GitHub Actions example)
If you already build and push images via GitHub Actions, keyless signing is typically a ~5-line addition at the end of that job — no new secrets required, since it authenticates via GitHub's own OIDC token:
permissions:
id-token: write # required for keyless signing
steps:
# ... your existing build & push steps ...
- uses: sigstore/cosign-installer@v3
- name: Sign the published image
run: cosign sign --yes "${IMAGE}@${DIGEST}"(${DIGEST} is whatever your build/push step outputs — most registry push actions expose it directly.) Full reference: Sigstore's keyless signing docs and cosign's GitHub Actions guide.
If you sign with your own key instead (e.g. KMS-backed, common when a project wants to avoid Sigstore's public transparency log), that works too — just publish the public key somewhere stable and documented (a cosign.pub file, ideally versioned/dated) so consumers can pin it.
Happy to help test verification against a signed pre-release if useful. Thanks for considering it!
Source: ariga/atlas