WAF-OPS-010 – CI/CD Pipeline Defined & Automated
Description
Every production workload MUST have a defined, versioned CI/CD pipeline. Manual deployments to production are not permitted. Pipeline definitions MUST be stored as code in the same repository as the application.
Rationale
Manual deployments are the most common cause of configuration drift, deployment errors, and undocumented changes. Automated pipelines enforce consistency, reduce human error, and provide an audit trail for every change.
DORA Elite teams deploy multiple times daily with a Change Failure Rate below 5%. Manual processes cannot achieve this level of reliability.
Threat Context
| Risk | Description |
|---|---|
Undocumented manual changes |
Manual deployments leave no audit trail; debugging after an incident is harder. |
Inconsistent environments |
Manual deployment creates deviations between staging and production (snowflake problem). |
Missing rollback capability |
Without a pipeline, rollback is a new manual deployment process rather than an automated reversal. |
Compliance violation |
Change management requirements (SOC 2, ISO 20000) require documented change control. |
Requirements
-
Pipeline definitions MUST be stored in version control
-
All production deployments MUST be executed through the pipeline
-
Direct SSH access or console deployments in production MUST be prohibited
-
Branch protection MUST prevent direct commits to
mainor production branches -
Approval gates MUST be configured before production deployments
-
Artifacts MUST be versioned (Git SHA or semantic version, not
latest)
Implementation Guidance
-
Define pipeline-as-code:
.github/workflows/,.gitlab-ci.yml,buildspec.yml– in the repository, not externally -
Define stages: Lint → Test → Security Scan → Build → Deploy Staging → Approval → Deploy Production
-
Configure branch protection: At least 1 reviewer, CODEOWNERS, direct commits prohibited
-
Artifact versioning: Git SHA as container image tag;
latestprohibited in production -
Activate approval gate: GitHub Environments, Azure DevOps Environment Checks, CodePipeline Manual Approval
-
Deployment notifications: Pipeline failure alerts to team channel (Slack, Teams)
Maturity Levels
| Level | Name | Criteria |
|---|---|---|
1 |
Manual Deployments |
No pipeline; deployments via SSH or console; no audit trail. |
2 |
Basic Pipeline |
CI pipeline exists for tests; deployments via script but triggered manually. |
3 |
Full CI/CD with Gates |
All deployments automated; branch protection; approval gate for production. |
4 |
Metrics & Progressive Delivery |
DORA metrics measured; canary/blue-green; auto-rollback on failure. |
5 |
Continuous Deployment |
Multiple times daily; Change Failure Rate < 5%; feature flags for low-risk releases. |
Terraform Checks
waf-ops-010.tf.aws.codepipeline-exists
Checks: AWS CodePipeline with source, build, and deploy stage is defined.
| Compliant | Non-Compliant |
|---|---|
|
|
waf-ops-010.tf.google.cloudbuild-trigger-exists
Checks: Google Cloud Build Trigger with build configuration file is defined.
# Compliant
resource "google_cloudbuild_trigger" "app" {
name = "payment-service-trigger"
filename = "cloudbuild.yaml"
github {
owner = "myorg"
name = "payment-service"
push { branch = "^main$" }
}
}
Remediation: Define an aws_codepipeline, azuredevops_build_definition, or
google_cloudbuild_trigger resource with a repository reference and build configuration.
Evidence
| Type | Required | Description |
|---|---|---|
IaC |
✅ Required |
Pipeline definition files (.github/workflows/, .gitlab-ci.yml) in version control. |
Config |
✅ Required |
Branch protection configuration (min. reviewer, CODEOWNERS, direct commits prohibited). |
Process |
Optional |
DORA metrics report (Deployment Frequency, Lead Time for Changes). |
Governance |
Optional |
Change management policy that explicitly prohibits manual production deployments. |
Regulatorisches Mapping
| Framework | Controls |
|---|---|
ISO/IEC 20000-1:2018 |
8.2.3 – Change management; 8.3.4 – Release management; 10.2.2 – Financial management |
ITIL 4 |
SVS – Service value system; DP – Design principle; OV – Operation value chain |
AWS Well-Architected Framework |
Operational Excellence Pillar – Prepare; Operational Excellence Pillar – Deploy |
DORA |
DORA 2024 – Technical practices; DORA 2024 – Organizational culture |
SOC 2 Type II |
CC4.1 – Monitoring activities; CC7.1 – Infrastructure and software monitoring |
Google SRE Book |
Chapter 2 – SRE: The role of an SRE; Chapter 3 – Service Level Objectives |
PCI DSS v4.0 |
Req 6.4 – Secure development lifecycle; Req 6.5 – Secure coding practices |
FinOps Foundation |
Core Module – Financial accountability; Management Layer – Cost governance |
BSI C5:2020 |
OPS-01 – Operational monitoring; OPS-02 – Operational control; OPS-03 – Operational capacity |
NIST SP 800-53 |
CM-1 – Configuration management policy; CM-2 – Configuration management |
NIST CSF 2.0 |
GV.PO – Policy; RC.RP – Recovery planning; DE.CM – Continuous monitoring |
TISAX |
Information security – Change management |
ANSSI SecNumCloud |
Domain – Change management |
BIO |
BIO – Veranderingenbeheer |
ENS High |
op.exp.6 – Gestión de cambios |
UK NCSC CAF |
A4 – Policy and assurance; A5 – Continual improvement |
CMMC 2.0 |
CM.L2-3.4.1 – Establish baseline configurations |
IRAP |
ISM – Change management |
CCCS PBMM |
CM-2 – Baseline configuration; CA-7 – Continuous monitoring |
MAS TRM |
Ch.3 – Technology risk governance; Ch.9 – Change management |
ISMAP |
Operational excellence and continuous improvement |
FISC |
Operational measures – Change management |