Traceability of signatures and deploys
Traceability is the ability to prove what was done, by whom, with which artefacts and in what context. In the context of CI/CD pipelines, this ability is essential to ensure accountability, support for audits and the possibility of safe rollback.
This practice defines the mechanisms needed to ensure that each critical execution, build, release or deploy is identifiable, verifiable and auditable at any time.
A CI/CD chain without traceability cannot be considered trustworthy.
🎯 Objectives
- Record all relevant pipeline executions in a reliable and verifiable way;
- Associate artefacts with specific builds, users, commits and environments;
- Support audits, investigations and rollbacks based on concrete and persistent evidence.
🛠️ Practices
-
Digital signing of critical builds and releases
- Each published artefact must be digitally signed (e.g. GPG, Sigstore, JWT);
- The signature must contain the commit hash, author, timestamp and pipeline ID.
-
Preservation of execution records and metadata
- Relevant logs and variables must be stored in accordance with the retention policy;
- They must include: user, repository, pipeline, time, result, main parameters.
-
Formal recording of deploys
- Each deploy must reference the specific artefact by hash;
- The following must be recorded: the party responsible (human or service), pipeline, environment and timestamp.
-
End-to-end linkage: commit → build → release → deploy
- The entire chain of events must be traceable, including configuration changes;
- That traceability must be accessible through audit or API.
-
Retention of hashes, provenance and associated evidence
- Metadata (e.g. SLSA provenance) must be archived together with the artefacts;
- They must allow retrospective validation and comparison with future builds.
⚖️ Proportional application by risk level
| Level | Mandatory records | Enhanced requirements |
|---|---|---|
| L1 | Execution logs and build hash | - |
| L2 | Recording of pipeline, artefact and deploy | Simple provenance; release signing |
| L3 | Complete SLSA provenance; auditable deploy | End-to-end chain; tamper-proof logs; periodic verification |
📌 Practical examples
-
GitHub Actions
- Use of
github.run_id,github.sha,GITHUB_ACTORin artefacts and tags; - Signatures with
cosignand provenance withslsa-github-generator.
- Use of
-
GitLab CI
- Inclusion of
pipeline_id,commit,project.pathin artefacts; - Use of
release-clito associate metadata and changes with the release.
- Inclusion of
-
Azure DevOps
- Identifiers such as
Build.BuildIdandRelease.ReleaseId; - Signatures with certificates and deployment auditing in
AuditLogs.
- Identifiers such as
-
Jenkins
- Manual recording with
BUILD_ID,BUILD_URL,GIT_COMMIT; - Signing with GPG and structured logs via plugins.
- Manual recording with
📉 Mitigated risks
- Ambiguity about the origin of deploys (OSC&R: CI0004);
- Absence of an auditable chain of trust (OSC&R: CI0011, CI0016);
- Difficulty in establishing responsibility in the event of an incident;
- Untraceable, altered or unauthorised releases.