Markdown Editor

CI/CD Pipeline Design Template (SLSA, NIST SP 800-204D)

CI/CD design: stages and gates, environments and promotion, OIDC secrets, SBOM and provenance, rollout and rollback, CICD-SEC review, DORA metrics, traceability

Perangkat Lunak & RekayasaLengkapNIST SP 800-204D; NIST SP 800-218 SSDF 1.1; SLSA 1.2; OWASP Top 10 CI/CD Security RisksCC BY-SA 4.0pipelinedesign

Cara menggunakan: Use it when you design or consolidate a build, test and release pipeline that must be fast, auditable and tamper-evident. Fill the requirements, stage list and gate definitions first, then the identity, supply chain and threat review sections. The main pitfall is treating the pipeline as tooling rather than production software with its own owner, change control and threat model.

Pratinjau

CI/CD Pipeline Design: [Product or pipeline name]

Design document for a continuous integration and continuous delivery (CI/CD) pipeline: design drivers, architecture and runners, stages and quality gates, environments and promotion, identity and secrets, supply chain integrity (dependencies, SBOM, provenance and signing), deployment strategies and rollback, threat review, observability and delivery metrics, ownership of the pipeline itself, decisions, risks and a traceability matrix. Based on NIST SP 800-204D Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines (final, February 2024), NIST SP 800-218 Secure Software Development Framework (SSDF) Version 1.1 (February 2022), the SLSA specification v1.2 Build and Source tracks, the OWASP Top 10 CI/CD Security Risks (CICD-SEC-1 to CICD-SEC-10) and the joint CISA, FBI and ASD's ACSC guidance Safe Software Deployment (October 2024). Delivery metrics follow the five DORA software delivery metrics. Replace every [bracketed] value and every row marked Example. Worked examples use Corvid Commerce, a fictional SaaS company that runs an online checkout platform.

Document control

FieldValue
Document ID[CICD-DES-001]
Pipeline family[Example: Corvid Commerce containerised services to Kubernetes]
Version[0.1]
Status[Draft / In review / Approved / Superseded]
Owner[@platform-lead]
Approvers/reviewers[@appsec-lead], [@sre-lead], [@release-manager], [@engineering-director]
Last updatedYYYY-MM-DD
Classification[Internal]
CI/CD platform[Example: Hosted CI service with self-hosted ephemeral runners for production deploys]
Repositories in scope[Example: 41 service repositories listed in the service catalogue under tier 1 and tier 2]
Target SLSA levels[Example: Build L3, Source L3 for tier 1 (Source L4 for payment services); Build L2, Source L3 for tier 2]
Next reviewYYYY-MM-DD (at least annually and after any pipeline security incident)
Related documents[Branching strategy], [Versioning and release policy], [Dependency management policy], [SBOM and VEX policy]

Approvals

RoleNameDecisionDate
Platform engineering lead[@name][Approve / Approve with conditions / Reject]YYYY-MM-DD
Application security lead[@name][Decision]YYYY-MM-DD
SRE lead[@name][Decision]YYYY-MM-DD
Engineering director[@name][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
0.1YYYY-MM-DD[@name]First draft
1.0YYYY-MM-DD[@name]Example: Approved; signature verification at admission set to enforce
1.1YYYY-MM-DD[@name]Example: Production deploy job moved to isolated runners after PIPE-RSK-002

Contents

1. Purpose, scope and context

1.1 Purpose

This document describes how source changes for [Product name] become tested, signed and deployed artefacts. It is the reference for the platform team that operates the pipeline, for service teams that use it, and for auditors who need evidence that builds are reproducible, reviewed and tamper-evident.

1.2 Scope

In scopeOut of scope
Example: Container images for 41 backend services and the web storefrontMobile apps (separate store-release pipeline, see [link])
Example: Helm charts and environment configuration in the deploy repositoryInfrastructure modules, covered by IaC Module Specification (ops/iac-module-specification)
Example: Shared libraries published to the internal package registryData pipelines and notebooks
[Item][Item]

1.3 Context

Example: Corvid Commerce deploys about 60 production changes per week across 41 services. Today each team maintains its own pipeline file; seven different deploy scripts exist, two teams deploy from laptops, and long-lived cloud keys are stored as repository secrets. An external customer audit asked for build provenance and an SBOM for each release. This design replaces the per-team pipelines with a shared, versioned pipeline definition that teams call with parameters.

2. Design drivers and requirements

2.1 Design drivers

  1. Fast feedback: a developer learns whether a change is good within minutes, so that small batches and trunk-based development stay practical.
  2. Integrity: every production artefact can be traced to a reviewed commit, a known build platform and a signed provenance statement.
  3. Safe release: changes reach production through staged exposure with automated health checks and a tested rollback path.
  4. Least privilege: no job holds more access than its step needs, and no long-lived production credential exists in the pipeline.
  5. Self-service: service teams adopt the pipeline by configuration, not by copying scripts.

2.2 Requirements

IDRequirementAcceptance conditionSource
PIPE-REQ-001 (Example)Builds run on a hosted or platform-managed build service, never on developer machines100% of production artefacts carry provenance naming the approved builder identitySLSA Build L2; SSDF PO.3
PIPE-REQ-002 (Example)Each build runs in an ephemeral, isolated environmentRunner is created per job and destroyed after it; no shared cache writable by untrusted jobsSLSA Build L3; SP 800-204D
PIPE-REQ-003 (Example)Provenance and signatures are generated by the platform, not by user-defined stepsSigning key or identity is not reachable from build stepsSLSA Build L3; SSDF PS.2
PIPE-REQ-004 (Example)Every artefact released to production has an SBOM bound to its digestSBOM attestation present for each image digest in the release registrySSDF PS.3; SBOM and VEX Policy (security/sbom-vex-policy)
PIPE-REQ-005 (Example)Production deployments use short-lived, workload-bound credentialsNo static cloud keys in CI secret stores; OIDC federation onlySSDF PO.5; CICD-SEC-6
PIPE-REQ-006 (Example)Commit-to-feedback time for the pull request pipeline is at most 10 minutes at the 90th percentileMeasured weekly from pipeline eventsDeveloper experience
PIPE-REQ-007 (Example)Production rollout is staged and halts automatically on health regressionCanary analysis gate configured for every tier 1 serviceSafe Software Deployment
PIPE-REQ-008 (Example)Pipeline definitions are versioned, reviewed and protected like production codeChanges to the shared pipeline need platform team approval, made mandatory by a ruleset required-reviewer ruleCICD-SEC-1; CICD-SEC-4; SSDF PS.1
[PIPE-REQ-NNN][Requirement][Condition][Source]

3. Pipeline architecture

3.1 Component view

The diagram shows the main components and the direction of trust. The trust level column in 3.2 marks where untrusted code runs.

3.2 Components and trust boundaries

ComponentRoleTrust levelCredentials it holdsOwner
Source platform (Example)Hosts repositories, enforces rulesets and code owner reviewHighNone issued to jobs beyond scoped tokensPlatform team
CI orchestrator (Example)Schedules jobs from versioned pipeline definitionsHighOIDC issuer for job identitiesPlatform team
PR runners (Example)Run checks for pull requests, including from forksUntrustedNone; read-only tokenPlatform team
Build runners (Example)Build and test from protected branches and tagsTrusted, isolated per jobRegistry push via short-lived tokenPlatform team
Signing service (Example)Generates provenance and signs by digest outside user stepsHighSigning identity (keyless, short-lived certificate)Platform team and AppSec
Artefact registry (Example)Stores images, SBOMs and attestations, immutable tagsHighPull credentials for clustersPlatform team
Deploy controller (Example)Reconciles cluster state from the deploy repositoryHighCluster write within namespacesSRE team
[Component][Role][Level][Credentials][@owner]

3.3 Pipeline as code

DecisionChoice
Definition locationExample: Shared reusable workflows in corvid/pipeline-library, called by a 20-line file in each service repository
VersioningExample: Library released with semantic versions; services pin a full commit SHA, updated by bot pull requests
Change controlExample: Library changes need two platform approvers and pass the library's own test suite
Configuration surfaceExample: Service tier, language, test command, deploy targets; all other behaviour is fixed by the library

4. Stages and quality gates

4.1 Stage list

IDStageTriggerWhat runsBlockingTime budget (p90)
PIPE-STG-010 (Example)ValidatePull requestLint, format, pipeline-definition lint, commit message checkYes1 min
PIPE-STG-020 (Example)Build and unit testPull request, mainCompile from lockfile, unit tests, coverage reportYes4 min
PIPE-STG-030 (Example)Static analysisPull requestSAST, secret scan, IaC scan, licence checkYes on gate PIPE-GATE-0023 min
PIPE-STG-040 (Example)Dependency and image scanPull request, mainSoftware composition analysis, container scanYes on gate PIPE-GATE-0032 min
PIPE-STG-050 (Example)Package, SBOM, provenance and signMain, release tagBuild image once, push by digest, generate SBOM, platform provenance, signatureYes3 min
PIPE-STG-060 (Example)Deploy to stagingMainDeploy controller syncs new digestYes5 min
PIPE-STG-070 (Example)Integration, contract and smoke testsAfter staging deployAPI contract tests, end-to-end smoke, DAST baselineYes10 min
PIPE-STG-080 (Example)Production canaryPromotion approved5% of traffic, automated canary analysisYes on gate PIPE-GATE-00630 min
PIPE-STG-090 (Example)Production rolloutCanary passedProgressive waves by regionYes60 min
[PIPE-STG-NNN][Stage][Trigger][Jobs][Yes/No][Budget]

Example: The pull request path has a p90 budget of 10 minutes: validate (1) and build and unit test (4) run first, then static analysis (3) and dependency scan (2) run in parallel, which gives 1 + 4 + 3 = 8 minutes plus 2 minutes of queueing allowance. The merge-to-production path has a p90 budget of 119 minutes of machine time (4 + 2 + 3 + 5 + 10 + 30 + 60 + 5 minutes of queueing allowance), not counting the wait for the tier 1 promotion approval.

4.2 Gate definitions

IDGateCondition to passWaiver authorityEvidence kept
PIPE-GATE-001 (Example)TestsAll unit tests pass; line coverage of changed code at least [80%]Service tech lead, recorded on the pull requestTest report artefact
PIPE-GATE-002 (Example)Static analysisNo new findings rated high or critical; no verified secretAppSec lead, time-boxed exceptionSARIF report
PIPE-GATE-003 (Example)DependenciesNo known exploited vulnerability; no critical with a fix available; licence on allow-listAppSec lead per Dependency Management Policy (dev/dependency-management-policy)SCA report, VEX statements
PIPE-GATE-004 (Example)IntegritySBOM, provenance and signature exist for the digestNoneAttestations in registry
PIPE-GATE-005 (Example)Staging healthSmoke and contract tests pass; error rate within service SLOService ownerTest report, dashboard link
PIPE-GATE-006 (Example)Canary analysisCanary error rate and p95 latency not worse than baseline by more than [10%] over 30 minutesSRE on call, during incident onlyCanary analysis record
PIPE-GATE-007 (Example)Change window and freezeDeployment not inside a declared freeze unless an emergency change is approvedChange manager per Change Request (ops/change-request)Change record
[PIPE-GATE-NNN][Gate][Condition][Authority][Evidence]

4.3 Gate rules

  1. A blocking gate fails closed: when the scanner or service behind it is unavailable, the stage fails rather than passes.
  2. A waiver names the gate, the commit or digest, the reason, the approver and an expiry date. Waivers are stored with the pipeline run and reported monthly (section 10.3).
  3. Re-running a failed job is allowed for infrastructure failures only. The pipeline records the re-run count; more than [two] re-runs of the same test in a week opens a flaky-test ticket.
  4. Build once, promote the same digest. Later stages never rebuild from source; they deploy the digest produced in PIPE-STG-050.

5. Environments and promotion

5.1 Environments

EnvironmentPurposeDataDeploy triggerAccess to deployParity with production
Preview (Example)Per pull request review environmentSyntheticPull request labelPipeline onlySame chart, reduced replicas
Staging (Example)Integration and release verificationSynthetic and masked samplesMerge to mainPipeline onlySame chart, same configuration keys, smaller scale
Production canary (Example)Limited real trafficProductionPromotion approval or automatic for tier 3Pipeline onlyIdentical
Production (Example)All customers, three regionsProductionCanary passPipeline onlyReference
[Environment][Purpose][Data][Trigger][Who][Parity]

5.2 Promotion rules

Service tierStaging to canaryCanary to full rolloutOut-of-hours deploys
Tier 1 (Example)One approval by a release approver who is not the authorAutomatic after PIPE-GATE-006Not allowed except emergency changes
Tier 2 (Example)Automatic after PIPE-GATE-005Automatic after PIPE-GATE-006Allowed with on-call acknowledgement
Tier 3 (Example)AutomaticAutomaticAllowed
[Tier][Rule][Rule][Rule]

5.3 Promotion sequence

The sequence shows how one digest moves from build to production without a rebuild.

6. Identity, secrets and permissions

6.1 Workload identity

TargetAuthentication methodScopeLifetime
Cloud account (deploy) (Example)OIDC federation from the CI job identity, trust bound to repository, workflow file and protected branch or tagSingle role per environment15 minutes
Artefact registry (Example)Short-lived token from OIDC exchangePush to one repository pathJob duration
Signing (Example)Keyless signing with a short-lived certificate bound to the workflow identitySign by digestMinutes
Package registry publish (Example)Trusted publishing from release tag workflowsOne packageJob duration
[Target][Method][Scope][Lifetime]

6.2 Secrets handling

  1. Store remaining secrets (third-party API keys used by tests) in the central secrets manager, following Secrets Management Standard (security/secrets-management-standard); the CI store holds only a reference or a federated identity.
  2. Scope each secret to the environment and workflow that need it. Pull request workflows from forks receive no secrets.
  3. Mask secrets in logs and fail the job if a secret pattern appears in an uploaded artefact.
  4. Rotate any secret that a job printed, cached or uploaded, and record the event as a security incident.

6.3 Pipeline permissions

ControlSetting
Default job token (Example)Read-only on contents; write permissions declared per job
Who can edit pipeline definitions (Example)Changes to .ci/ and the shared library require platform team approval: CODEOWNERS requests it and a ruleset required-reviewer rule makes it mandatory, because any one listed code owner can otherwise satisfy code owner review (see Code Ownership Policy, dev/code-ownership-policy)
Who can approve production promotion (Example)Members of the release-approvers group; author cannot approve their own change
Third-party actions and plugins (Example)Allow-listed and pinned by full commit SHA
Self-hosted runner registration (Example)Only through the platform's runner controller; manual registration disabled
[Control][Setting]

7. Supply chain integrity

7.1 Dependency intake

Builds resolve dependencies only through the package proxy, install from committed lockfiles and verify hashes where the ecosystem supports it. New dependencies, update cadence and cooldown periods are governed by Dependency Management Policy (dev/dependency-management-policy); the pipeline enforces that policy through PIPE-GATE-003.

7.2 SLSA Build track mapping

SLSA Build requirementHow this pipeline meets itStatus
Choose an appropriate build platform (producer)Builds from protected branches and tags run only on the trusted, isolated build runners in 3.2; PR runners never produce release artefactsExample: Met
Follow a consistent build process (producer)Shared pipeline library; services cannot override build stepsExample: Met
Distribute provenance (producer)Provenance attached to the image digest in the registry (7.3)Example: Met
Provenance exists (L1)Platform generates in-toto provenance for every imageMet
Hosted build platform (L2)Builds run only on platform runners; developer pushes to registry are blockedMet
Provenance is authentic (L2)Provenance signed by the platform signing identityMet
Isolated builds (L3)Ephemeral runners per job; caches keyed and read-only for untrusted jobsPartial: shared cache for PR runners (PIPE-RSK-003)
Provenance is unforgeable (L3)Signing happens in a separate trusted job that build steps cannot reachMet
[Requirement][Implementation][Status]

The Source track (protected branches, history, two-party review) is defined in Branching Strategy (dev/branching-strategy) and Code Ownership Policy (dev/code-ownership-policy). Both documents use the same targets: Build L3, Source L3 for tier 1 (Source L4 for payment services); Build L2, Source L3 for tier 2.

7.3 Artefacts, SBOM and attestations

ItemDecision
Artefact identity (Example)Image digest; tags are labels only and are immutable in the release registry
SBOM (Example)CycloneDX JSON generated in PIPE-STG-050 from the lockfile and image layers; attached as an attestation to the digest
Provenance (Example)SLSA provenance predicate in an in-toto attestation
Signature (Example)Keyless signature, recorded in a transparency log
Verification points (Example)Deploy controller admission policy (enforce); customer-facing verification instructions in release notes
Retention (Example)Artefacts and attestations kept for the support life of the version plus [2 years], per SSDF PS.3
Vulnerability statements (Example)VEX documents produced per SBOM and VEX Policy (security/sbom-vex-policy)

Assessment of the whole supply chain, Scorecard results and supplier risk belong to Software Supply Chain Security Assessment (security/supply-chain-security).

8. Deployment strategies and rollback

8.1 Strategy per tier

TierStrategyHalt signalRollback methodTarget rollback time
Tier 1 (Example)Canary then regional wavesPIPE-GATE-006 failure or SLO burn-rate alertController reverts to previous digest5 minutes
Tier 2 (Example)Rolling update with readiness probesFailed readiness, error-rate alertRevert promotion pull request10 minutes
Tier 3 (Example)Rolling updateFailed readinessRevert promotion pull request30 minutes
[Tier][Strategy][Signal][Method][Time]

8.2 Rules for safe deployment

  1. Separate deploy from release: ship code dark behind a flag where the change is user-visible, following Feature Flag Policy (dev/feature-flag-policy).
  2. Apply the expand and contract pattern to schema changes: add new structures first, deploy code that writes both, migrate, then remove old structures in a later release.
  3. Keep at least the previous [two] production digests deployable (images retained, configuration compatible).
  4. Practise rollback: every tier 1 service performs a rollback in staging at least [once per quarter], recorded in the deployment log.
  5. Keep an emergency path that is fast but not unreviewed: an emergency change still runs PIPE-STG-020 to PIPE-STG-050 and needs one approver; skipped stages run after the fact within [24 hours].
  6. Use the human procedure in Deployment Runbook (ops/deployment-runbook) for releases that need manual steps.

9. Pipeline threat review

The table lists the OWASP Top 10 CI/CD Security Risks by identifier and short title, with the control chosen in this design. Read the OWASP project page for the full risk descriptions.

OWASP IDShort titleControl in this designResidual risk
CICD-SEC-1Insufficient Flow Control MechanismsProtected main and tags; promotion approval for tier 1; no direct pushesExample: Low
CICD-SEC-2Inadequate Identity and Access ManagementSSO with MFA on source platform; quarterly access review; no shared accountsLow
CICD-SEC-3Dependency Chain AbusePackage proxy, lockfiles, hash checks, cooldown for new versionsMedium
CICD-SEC-4Poisoned Pipeline Execution (PPE)Fork pull requests run on untrusted runners without secrets; pipeline files code-ownedMedium (PIPE-RSK-001)
CICD-SEC-5Insufficient PBAC (Pipeline-Based Access Controls)Per-job permissions, per-environment OIDC rolesLow
CICD-SEC-6Insufficient Credential HygieneNo static cloud keys; secrets manager; log maskingLow
CICD-SEC-7Insecure System ConfigurationRunner images built and patched by platform; hardened controllerMedium
CICD-SEC-8Ungoverned Usage of 3rd Party ServicesAllow-list of integrations and actions, pinned by SHAMedium
CICD-SEC-9Improper Artifact Integrity ValidationSignature and provenance verified at admissionLow
CICD-SEC-10Insufficient Logging and VisibilityPipeline audit logs forwarded to the security log platformLow

Record broader application threats in Threat Model (security/threat-model). Pipeline audit log retention follows Security Logging Standard (security/security-logging-standard).

10. Observability, audit and delivery metrics

10.1 DORA delivery metrics

MetricDefinition used hereFormulaData source
Change lead timeTime from commit on main to running in productionMedian of (production deploy time minus commit time) per changePipeline events and deploy controller
Deployment frequencyProduction deployments per service per weekCount of successful production deployments / weeksDeploy controller
Change fail rateShare of deployments that need immediate interventionDeployments followed by rollback or hotfix / all deploymentsDeploy controller and incident tool
Failed deployment recovery timeTime to recover from a failed deploymentMedian of (recovery time minus failure detection time)Incident tool
Deployment rework rateShare of deployments that are unplanned and caused by a production incidentUnplanned incident-driven deployments / all deploymentsDeploy records tagged by cause

Example: In a four-week period Corvid Commerce made 240 production deployments; 12 were followed by a rollback or hotfix and 9 were unplanned deployments caused by an incident. Change fail rate is 12 / 240 = 5.0%; deployment rework rate is 9 / 240 = 3.75%; deployment frequency is 240 / 4 = 60 per week across all services.

Report delivery performance quarterly in Delivery Performance Report (dev/delivery-performance-report).

10.2 Pipeline health metrics

IDMetricTargetOwner
PIPE-MET-001 (Example)Pull request pipeline duration p90At most 10 minutesPlatform team
PIPE-MET-002 (Example)Pipeline success rate on main excluding genuine test failuresAt least 98%Platform team
PIPE-MET-003 (Example)Flaky test rate (tests that both pass and fail on the same commit)Below 1% of test casesService teams
PIPE-MET-004 (Example)Queue time for runners p90At most 60 secondsPlatform team
PIPE-MET-005 (Example)Share of production digests with SBOM, provenance and signature100%AppSec
[PIPE-MET-NNN][Metric][Target][@owner]

10.3 Audit trail

Keep, for each production deployment: commit SHA, pull request and approvers, pipeline run identifier, artefact digest, attestations, promotion approver, gate results and waivers, and rollout outcome. Make the trail queryable by digest and by commit for at least [the retention period set in the security logging standard].

11. Ownership and change management of the pipeline

11.1 RACI

ActivityPlatform teamService teamAppSecSRERelease manager
Operate CI platform and runnersA/RICCI
Maintain pipeline libraryA/RCCCI
Define security gates and thresholdsCIA/RII
Fix failing service testsIA/RIII
Approve tier 1 production promotionIRICA
Respond to pipeline outageRIIAI
Review this designRCCCA

R = responsible, A = accountable, C = consulted, I = informed. One A per row.

11.2 Support and change rules

  1. The pipeline library follows semantic versioning; a breaking change ships as a new major version with a migration note and at least [30 days] of support for the previous major version.
  2. Pipeline outages that block production deploys for more than [30 minutes] are incidents and follow the organisation's incident process; severity is set with Incident Severity Matrix (ops/incident-severity-matrix).
  3. Changes to gates or thresholds are announced [two weeks] ahead in the engineering channel, run in warn mode for [one week], then enforce.
  4. The platform team publishes a status page for CI and keeps a runbook for runner capacity, registry and controller failures in Runbook (dev/runbook).

12. Decisions, risks and open issues

12.1 Decisions

IDDecisionRationaleAlternatives consideredADR
PIPE-DEC-001 (Example)Pull-based deployment through a controller reading a deploy repositoryCI never holds cluster credentials; desired state is auditablePush from CI with cluster admin token[ADR-014]
PIPE-DEC-002 (Example)Shared pipeline library pinned by SHAConsistent controls with safe upgradesCopy-paste templates per repository[ADR-015]
PIPE-DEC-003 (Example)Keyless signing bound to workflow identityNo key management; identity is verifiableLong-lived signing key in a key vault[ADR-016]
[PIPE-DEC-NNN][Decision][Rationale][Alternatives][Link]

Record each decision in Architecture Decision Record (dev/adr).

12.2 Risks

IDRiskLikelihoodImpactTreatmentOwnerDue
PIPE-RSK-001 (Example)A maintainer approves a malicious pipeline change from a compromised accountLowHighRequire two platform approvers for library changes; alert on pipeline file changes[@platform-lead]YYYY-MM-DD
PIPE-RSK-002 (Example)Production deploy job shares a runner pool with buildsMediumHighMove deploy jobs to a dedicated isolated pool[@platform-lead]YYYY-MM-DD
PIPE-RSK-003 (Example)Shared dependency cache could be poisoned by an untrusted jobMediumMediumSeparate caches for trusted and untrusted runners[@platform-lead]YYYY-MM-DD
PIPE-RSK-004 (Example)Scanner outage blocks all merges because gates fail closedMediumMediumDocumented emergency waiver path; scanner redundancy[@appsec-lead]YYYY-MM-DD
[PIPE-RSK-NNN][Risk][L][I][Treatment][@owner]YYYY-MM-DD

13. Acceptance criteria and traceability

13.1 Acceptance criteria

  1. Every tier 1 service runs on the shared pipeline library at a supported major version.
  2. PIPE-MET-005 is 100% for [four consecutive weeks].
  3. The admission policy rejects an unsigned test image in production (negative test recorded).
  4. A rollback of a tier 1 service in staging completes within its target time and is logged.
  5. No static cloud credential remains in any CI secret store (scan evidence attached).

13.2 Traceability matrix

RequirementImplemented byVerified byEvidenceStandard reference
PIPE-REQ-001 (Example)PIPE-STG-050, registry push restrictionsProvenance builder check at admissionAdmission logsSLSA Build L2; SSDF PO.3
PIPE-REQ-002 (Example)Ephemeral runner pools (3.2)Runner lifecycle auditRunner controller logsSLSA Build L3; SP 800-204D
PIPE-REQ-003 (Example)Signing service outside user steps (7.2)Design review, penetration test of pipelineReview recordSLSA Build L3; SSDF PS.2
PIPE-REQ-004 (Example)PIPE-STG-050, PIPE-GATE-004PIPE-MET-005Registry attestation reportSSDF PS.3
PIPE-REQ-005 (Example)OIDC federation (6.1)Secret store scanScan reportSSDF PO.5; CICD-SEC-6
PIPE-REQ-006 (Example)Parallel PR stages (4.1)PIPE-MET-001Weekly metricsDeveloper experience
PIPE-REQ-007 (Example)PIPE-STG-080, PIPE-GATE-006Canary recordsDeployment logSafe Software Deployment
PIPE-REQ-008 (Example)Code-owned pipeline files with a required-reviewer rule (6.3)Ruleset exportRuleset configurationCICD-SEC-1; CICD-SEC-4; SSDF PS.1
[PIPE-REQ-NNN][Stage or control][Method][Evidence][Reference]

14. Glossary and references

14.1 Glossary

TermMeaning in this document
ArtefactBuilt output that is deployed or distributed, identified by its digest
AttestationSigned statement about an artefact, such as provenance or an SBOM
Build once, promoteDeploying the same artefact digest to each environment instead of rebuilding
CanarySmall share of production traffic that receives a new version first
GateAutomated or human check that must pass before a stage proceeds
OIDC federationExchanging a job identity token for short-lived cloud credentials
ProvenanceVerifiable record of how, where and from what source an artefact was built
Poisoned pipeline executionRunning attacker-controlled code in a pipeline by changing its definition or inputs
SBOMSoftware bill of materials: inventory of components in an artefact
WaiverApproved, time-limited exception to a gate

14.2 References

ReferenceVersion or date checkedUse
NIST SP 800-204D, Strategies for the Integration of Software Supply Chain Security in DevSecOps CI/CD Pipelines, csrc.nist.govFinal, 2024-02-12CI/CD supply chain security strategies
NIST SP 800-218, SSDF Version 1.1, csrc.nist.govFinal, 2022-02-03Practices PO.3, PO.5, PS.1 to PS.3
NIST SP 800-218 Rev. 1, SSDF Version 1.2, csrc.nist.govInitial public draft, 2025-12-17 (not final)Watch for changes to release and update practices
SLSA specification, slsa.devv1.2, approved; checked 2026-10-24Build and Source track requirements
OWASP Top 10 CI/CD Security Risks, owasp.orgProject page checked 2026-10-24Risk identifiers and short titles
CISA, FBI and ASD's ACSC, Safe Software Deployment: How Software Manufacturers Can Ensure Reliability for CustomersOctober 2024Staged rollout, testing and emergency playbook themes
DORA metrics guide, dora.devPage updated 2026-01-05Five software delivery metrics
OpenSSF Scorecard, github.com/ossf/scorecardv5.6.0Repository checks such as Dangerous-Workflow and Token-Permissions
[Internal platform documentation][Version][Use]

Standard and licence note

Based on NIST SP 800-204D (February 2024) and NIST SP 800-218 SSDF Version 1.1 (February 2022), which are US government works, and on the CISA, FBI and ASD's ACSC joint guidance Safe Software Deployment (October 2024). SLSA level and requirement names are used with attribution to the SLSA project (slsa.dev), published under the Community Specification License 1.0. The CICD-SEC identifiers and short titles are from the OWASP Top 10 CI/CD Security Risks project by the OWASP Foundation, licensed CC BY-SA 4.0; if you adapt OWASP material beyond these identifiers and titles, you must share your adaptation under the same licence. DORA metric names follow the DORA metrics guide on dora.dev (Google LLC, CC BY 4.0). Corvid Commerce is fictional. This template is original text written for this collection. Check the current official versions of each source before use. Template licence: MIT.

Templat terkait