Artifact Signing
Cryptographically sign build outputs so consumers can verify origin and integrity.
IntermediateArtifact SigningSupply Chain
Where it fits in the lifecycle
- Plan
- Code
- Build
- Test
- Release
- Deploy
- Operate
- Monitor
- Build Dependency scanning, image scanning, SBOM generation and signing.
- Release Approval controls, artefact promotion and provenance.
Overview
Signing binds an artefact digest to an identity. Keyless signing with an OIDC identity removes long-lived key management, recording the signature in a transparency log instead.
Why it matters
Without signatures, a registry compromise or typosquatted tag is indistinguishable from a legitimate release.
How it works
- 01The pipeline obtains an OIDC token representing the workflow identity.
- 02A short-lived certificate is issued and used to sign the artefact digest.
- 03The signature and certificate are recorded in a transparency log.
- 04Verification checks the identity, issuer and log inclusion proof.
Common tools
Sigstore CosignNotationGPGDockerKubernetesGitHub
Implementation examples
bashVerify before deploy
cosign verify \ --certificate-identity "https://github.com/acme/app/.github/workflows/release.yml@refs/heads/main" \ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \ ghcr.io/acme/app@sha256:...Best practices
- Always reference artefacts by digest, never by mutable tag.
- Pin the expected signer identity in verification policy.
Common mistakes
- Verifying with a wildcard identity, which proves nothing useful.
Hands-on labs
- Lab 07 — Sign and Verify an Artifact
Generate an SBOM, sign a container image with Cosign, and verify the signature.