Secure SDLC and DevSecOps are often treated as rival programmes, so organisations fund one, neglect the other and end up with either policy nobody follows or pipelines nobody governs. A secure software development lifecycle (SSDLC) is a process framework: it decides which security work each change needs, what evidence that work produces and who may accept the residual risk. DevSecOps is a delivery practice: it puts that work into automated pipelines, shared ownership and fast feedback so it happens on every commit. This guide compares the two as operating models, covering the frameworks behind each (NIST SSDF, OWASP SAMM, the Microsoft SDL, NIST SP 800-204C), gates versus guardrails, the threats each one handles well, how each fails and which to lead with by organisation type. It is for AppSec leads, heads of engineering and platform owners deciding where the next year of effort goes. The Secure Software Development Lifecycle (SSDLC) Guide and the DevSecOps Guide cover each discipline in depth; this page is about choosing and combining them.
Key takeaways
- They answer different questions. A secure SDLC answers "what must be true before this software ships, and who decides?"; DevSecOps answers "how do we make those checks happen automatically, every time, without slowing delivery?"
- The frameworks are process frameworks. NIST SP 800-218 (SSDF) describes itself as practices that can be integrated into any SDLC, and OWASP SAMM calls itself technology and process agnostic. Neither tells you to adopt DevSecOps; both can be delivered through it.
- Gates and guardrails are the practical difference. An SSDLC tends to express control as gates with sign-off; DevSecOps tends to express it as guardrails, paved roads and policy as code. Mature programmes use both, with gates reserved for high-precision, high-impact checks.
- Each fails in a recognisable way. SSDLC without automation becomes paperwork that release pressure bypasses; DevSecOps without governance becomes scanner noise with no risk owner, no exception discipline and no evidence for customers or regulators.
- Lead by constraint, not fashion. Regulated suppliers, product manufacturers and organisations with many outsourced developers usually lead with the SSDLC; cloud-native teams shipping daily usually lead with DevSecOps and add governance as they scale.
The short answer
A secure SDLC is what and who: security requirements, design review, defined acceptance criteria, risk acceptance and release authority, written as policy and mapped to a framework. DevSecOps is how and how often: automation in CI/CD, infrastructure and policy as code, shared responsibility between development, security and operations, and feedback in minutes rather than at a release review. NIST's abstract for SP 800-218 notes that few SDLC models address software security in detail, which is why the SSDF is offered as a core set of high-level practices to add to whatever lifecycle you run. NIST SP 800-204C, by contrast, describes DevSecOps as a paradigm for cloud-native applications built around CI/CD pipelines: automated workflows that take code through build, test, packaging, deployment and operations with feedback at each step.
So the honest comparison is not "which is better" but "which is your weaker half". An organisation with a strong pipeline and no written acceptance criteria has DevSecOps without an SSDLC. An organisation with a signed-off policy and manual, quarterly penetration tests has an SSDLC without DevSecOps. Both are exposed.
Side-by-side comparison
| Dimension | Secure SDLC | DevSecOps |
|---|---|---|
| Nature | Process framework and governance layer | Delivery practice and culture |
| Core question | Which security activities and evidence does each change need, and who accepts risk? | How are those activities automated and kept fast on every change? |
| Typical reference frameworks | NIST SP 800-218 SSDF, Microsoft SDL, OWASP SAMM, ISO/IEC 27001:2022 A.8.25 to A.8.29, PCI Secure SLC | NIST SP 800-204C, NCSC secure development and deployment guidance, SLSA for build integrity |
| Unit of control | Phase, gate and sign-off | Pipeline stage, policy rule and paved-road template |
| Owner | AppSec or product security, with engineering management | Platform or DevOps team, with developers as day-to-day operators |
| Main evidence | Threat models, design review records, risk acceptances, release approvals | Pipeline logs, scan results, signed artefacts, provenance, SBOMs |
| Cadence | Per release, per epic or per significant change | Per commit, per pull request, per deployment |
| Strongest against | Design flaws, missing requirements, unmanaged risk acceptance, supplier assurance gaps | Regressions, vulnerable dependencies, committed secrets, tampered builds, configuration drift |
| Weakest against | Anything that changes between reviews; bypass under deadline | Business logic and design flaws that no scanner sees; unowned exceptions |
| Measures maturity with | OWASP SAMM scores, SSDF coverage, audit findings | Gate pass rates, mean time to remediate, deployment frequency with security checks intact |
The frameworks behind each
Process frameworks that define an SSDLC
- NIST SP 800-218 SSDF v1.1 (final, February 2022): organises practices into four groups: Prepare the Organization (PO), Protect the Software (PS), Produce Well-Secured Software (PW) and Respond to Vulnerabilities (RV). NIST positions it as a common vocabulary between purchasers and suppliers. A v1.2 draft (SP 800-218 Rev. 1, initial public draft) was released on 17 December 2025 with "new and improved practices, tasks, and examples"; its comment period closed on 30 January 2026, so check the final text before relying on new task numbers. See the NIST Secure Software Development Framework (SSDF, SP 800-218) Guide.
- OWASP SAMM v2.0: 15 security practices in five business functions (Governance, Design, Implementation, Verification, Operations), each practice split into two streams across three maturity levels. Organisations pick a target level per practice rather than maximising every score. SAMM says it can be adopted using any style of development, which is why it works as the measuring stick for both halves. See the OWASP SAMM Guide.
- Microsoft Security Development Lifecycle: ten practices, from establishing security standards, metrics and governance through threat modelling, securing the software supply chain and the engineering environment, to security monitoring and response and training. Microsoft says the practices apply from classic waterfall through to modern DevOps approaches, and describes the SDL as a way to integrate security into DevOps processes.
Guidance that describes DevSecOps delivery
- NIST SP 800-204C (final, March 2022): guidance on implementing DevSecOps for microservices-based applications with a service mesh. It splits code into five types: application code, application services code, infrastructure as code, policy as code and observability as code, and links the approach to high assurance and continuous authority to operate.
- NCSC secure development and deployment guidance: eight principles, including "Secure development is everyone's concern", "Protect your code repository", "Secure the build and deployment pipeline" and "Continually test your security". It reads as a DevSecOps charter with governance built in.
- NCCoE Software Supply Chain and DevOps Security Practices: a planned NIST project to produce a practice guide aligned with the SSDF that builds security into every DevOps stage and generates compliance artefacts automatically. It is at the collaborator stage, so treat it as direction of travel rather than a usable standard.
The pattern is clear: the process frameworks are deliberately method-neutral, and the DevSecOps guidance assumes a governance layer exists. For a full crosswalk of SSDF, SAMM, BSIMM, ISO/IEC 27034, IEC 62443-4-1 and the EU Cyber Resilience Act, see Secure Development Frameworks Compared.
Secure SDLC as an operating model
Threat model it is built for: flaws that are cheap to prevent and expensive to fix later. Missing authorisation checks designed into an API, sensitive data stored without a retention rule, a third-party component chosen without review, a release that ships with a known critical issue because nobody had authority to stop it. These are decisions, not code defects, and they need a decision process.
Architecture in words: a policy (see the Secure SDLC Policy Template) defines risk tiers for applications. Each tier maps to required activities per phase: security requirements and abuse cases at planning, threat modelling and design review for significant changes, secure coding standards, defined test criteria, and a release decision with a named approver. Exceptions go to a register with an owner, a reason and an expiry. Evidence is retained so it can be shown to customers, auditors or, for software sold to the US federal government, used to support supplier attestation against SSDF practices.
Controls that carry the weight:
- Risk tiering: not every service needs a full threat model; tiering keeps the process proportionate.
- Security requirements in the backlog: acceptance criteria written before code make later gates objective. See the Security Requirements and Abuse Cases Guide.
- Design review and threat modelling: triggered by defined change types (new trust boundary, new data class, new external integration). See the Threat Modelling Guide.
- Release authority and risk acceptance: a named role per tier who can accept, defer or block, with time-limited exceptions.
- Supplier and component governance: criteria for third-party components and outsourced code, including what evidence suppliers must provide.
How it fails: the process is designed for release cycles that no longer exist. A team deploying twenty times a day cannot wait for a weekly review board, so it routes around it. Reviews become retrospective approvals of what already shipped, and the threat model is a document written once at project start and never updated.
DevSecOps as an operating model
Threat model it is built for: high-frequency, mechanically detectable problems and attacks on the delivery path itself. Vulnerable or malicious dependencies, secrets committed to repositories, injection regressions, misconfigured infrastructure as code, tampered build steps and over-privileged pipeline credentials. The Codecov breach is a useful reference: a modified uploader script ran inside customers' CI jobs for about two months and was caught only when a customer compared its checksum with the published value, which is exactly the kind of integrity check DevSecOps pipelines should run by default.
Architecture in words: a platform team owns reusable pipeline templates that every repository inherits. Each stage runs checks proportionate to its speed: secret scanning and linting on commit, SAST, software composition analysis and IaC scanning on pull request, image scanning and SBOM generation at build, signing and provenance at release, admission policy at deploy, and runtime telemetry in production feeding findings back to the owning team. Policy lives as code in version control, protected by code owner review, so the controls are themselves change-controlled.
Controls that carry the weight:
- Paved-road templates: the secure path is the easiest path; teams that use it get scanning, signing and deployment for free.
- Diff-aware blocking: block only on new, high-confidence findings (verified live secrets, critical dependencies with a fix available, tuned SAST rules); everything else becomes a ticket with an SLA.
- Build integrity: isolated runners, pinned dependencies, signed artefacts and provenance; the release fails closed if signing or provenance generation fails.
- Pipeline identity: short-lived, federated credentials for CI jobs instead of stored keys. See the CI/CD Pipeline Identity Security Guide.
- Feedback in the developer's tools: findings appear in the pull request with fix guidance, not in a separate portal.
How it fails: tools are added faster than ownership. Scanners are switched on in warn-only mode, generate thousands of findings and are quietly ignored. Nobody has authority to accept risk, so exceptions are granted by whoever disables the check. Design flaws pass every scan. When a customer asks for evidence of secure development, the organisation has logs but no policy that says what they prove.
Gates versus guardrails
The most useful way to combine the two is to decide, per control, whether it is a gate (stops progress until a criterion is met or an exception is approved) or a guardrail (makes the safe path the default and reports deviations). SSDF task PO.4.1 asks organisations to define criteria for software security checks and track them throughout the SDLC; that is the SSDLC side. Implementing those criteria as pipeline policy is the DevSecOps side.
| Control | Gate or guardrail | Why | Where it is defined |
|---|---|---|---|
| Verified live secret in a commit | Gate (block merge) | High precision, high impact, cheap to fix before merge | Pipeline policy; criterion in SSDLC policy |
| Critical dependency vulnerability with a fix available | Gate on new code | Precise and actionable; legacy debt tracked separately | Pipeline policy with SLA for backlog |
| Medium SAST findings | Guardrail (ticket with SLA) | Blocking erodes trust when false positive rates are high | Pipeline policy; SLA in SSDLC policy |
| Threat model for a new trust boundary | Gate (design review before build) | Design flaws are invisible to scanners | SSDLC policy; trigger tracked in backlog |
| Approved base images and templates | Guardrail (default path) | Adoption beats enforcement for configuration hygiene | Platform templates |
| Artefact signature and provenance | Gate (fail closed) | Absence signals tampering or misconfiguration | Pipeline and admission policy |
| Release of a tier 1 service with an open critical finding | Gate with named risk acceptance | Business decision, not a tooling decision | SSDLC policy and exception register |
A rule of thumb: automate a gate only when the check is precise enough that developers trust it; keep a human gate only where the decision is about risk appetite. Everything else should be a guardrail.
Which to lead with, by organisation type
| Organisation | Lead with | Reason | First addition from the other side |
|---|---|---|---|
| Software supplier to government or regulated buyers | Secure SDLC | Buyers ask for attested practices and evidence; SSDF mapping is the shared language | Pipeline-generated evidence (scan records, SBOMs, provenance) so attestation is not manual |
| Product or device manufacturer | Secure SDLC | Long support lifetimes, certification and vulnerability handling obligations | Automated build integrity and dependency monitoring across product lines |
| Cloud-native SaaS, daily deployment | DevSecOps | Process that does not run in the pipeline will not run at all | Risk tiering, threat modelling triggers and a risk acceptance owner |
| Enterprise with mixed legacy and modern estates | Both, split by tier | Legacy release trains suit gates; modern services suit guardrails | A single policy that allows either implementation per tier |
| Heavy use of outsourced development | Secure SDLC | Contracts need defined requirements and acceptance criteria | Require suppliers to use or feed your pipeline checks |
| Small team (under about 30 engineers) | DevSecOps, lightly governed | Platform-native scanning and one template give most of the value | A one-page policy naming who accepts risk and how exceptions expire |
Worked scenario: a SaaS company selling into regulated buyers
A 120-engineer SaaS company deploys several times a day and has a mature pipeline: secret scanning, SCA, SAST and image scanning on every pull request. It wins its first financial services customer, whose security questionnaire asks for its secure development policy, its threat modelling practice, how it accepts risk on open findings and evidence of all three for the last year.
- Assess both halves: a SAMM assessment scores Implementation (Secure Build, Secure Deployment) high and Design (Threat Assessment, Security Requirements) and Governance (Policy and Compliance) low. The gap is the SSDLC, not tooling.
- Write the minimum policy: three application risk tiers, required activities per tier, triggers for threat modelling, and an exception register with expiry. Map each requirement to SSDF practice IDs so the questionnaire can be answered in the buyer's vocabulary.
- Express the policy as pipeline rules: tier labels in repository metadata decide which checks block; the pipeline records the outcome, so evidence is generated rather than collected.
- Add the human gates that tools cannot replace: a design review for new trust boundaries, and a named approver for tier 1 releases with open critical findings.
- Measure and report: exceptions open past expiry, percentage of tier 1 changes with a current threat model, and mean time to remediate critical findings become the quarterly report to leadership and the evidence pack for customers.
The company did not have to slow its pipeline; it had to give the pipeline something authoritative to enforce.
Implementing the combination
- Baseline: run a SAMM self-assessment and list which SSDF tasks you can evidence today. Note whether each gap is a process gap (no criterion, no owner) or a delivery gap (criterion exists, nothing enforces it).
- Define tiers and criteria: publish the policy with risk tiers, gate criteria and the exception process. Keep it short enough to be read.
- Build or adopt the paved road: one reusable pipeline template per major stack, with checks in warn-only (audit) mode first.
- Pilot ring: switch blocking on for two or three volunteer teams. Tune rules until false positives are rare, then publish the tuned rule set.
- Expand by tier: enforce on tier 1 services first, then tier 2. Leave tier 3 on guardrails.
- Add design gates: threat modelling triggers and design review for significant changes, supported by security champions. See the Security Champions Programme Guide.
- Roll back safely: every blocking rule has a documented switch back to warn-only, owned by the platform team and recorded as a change, so a bad rule never forces teams to bypass the pipeline.
- Review annually: reassess with SAMM and update the policy when frameworks change, including the final SSDF v1.2 once published.
Detection and measurement
Log the outcome of every gate and guardrail with the repository, tier, rule and decision, and retain exception approvals with approver and expiry. Useful metrics:
- Policy coverage: percentage of repositories inheriting the approved pipeline template, by tier.
- Design coverage: percentage of tier 1 changes that crossed a threat modelling trigger and have a current threat model.
- Exception hygiene: number of exceptions past expiry, and median exception age.
- Gate trust: blocking findings later marked false positive, as a percentage of all blocks (aim for low single figures).
- Remediation speed: mean time to remediate critical and high findings introduced in new code.
- Maturity trend: SAMM scores per business function year on year.
The AppSec Programme Metrics Guide covers metric definitions and reporting in more depth.
Framework mapping
| Framework | Reference | Secure SDLC side | DevSecOps side |
|---|---|---|---|
| NIST CSF 2.0 | PR.PS-06 | Secure development practices integrated across the lifecycle | Their performance monitored, for example through pipeline records |
| NIST CSF 2.0 | GV.RR-02 | Roles and authorities for risk acceptance and release | Ownership of pipeline policy and exceptions |
| NIST SP 800-53 Rev 5 | SA-3, SA-8, SA-17 | System development life cycle, engineering principles, security architecture and design | Principles encoded in templates and policy as code |
| NIST SP 800-53 Rev 5 | SA-11, SA-15, CM-3 | Testing criteria, development standards, change control | Automated testing, tooling and controlled pipeline changes |
| NIST SP 800-218 | PO, PS, PW, RV groups | Policy, roles, criteria (PO.4), design (PW.1) | Protecting code and builds (PS), automated testing (PW), vulnerability response (RV) |
| ISO/IEC 27001:2022 Annex A | A.8.25 to A.8.29 | Secure development life cycle, application security requirements, secure architecture | Secure coding and security testing in development and acceptance |
| CIS Controls v8.1 | Control 16 | Application software security process and roles | Automated testing, component management and secure configuration |
Common failure patterns
- Policy without a pipeline: a signed-off SSDLC policy that no tool enforces, so evidence is assembled by hand before audits and does not reflect daily practice.
- Pipeline without a policy: dozens of scanners, no written criteria, and blocking decisions made by whoever configured the tool.
- Everything is a gate: blocking on every finding teaches developers to disable checks; the control is lost entirely rather than softened.
- Unprotected controls: workflow files that define gates can be edited in the same pull request they would fail, so the gate is optional.
- Trusting the build path implicitly: no checksum, signature or provenance verification on scripts and artefacts pulled into CI, the weakness behind the Codecov incident.
- Threat models as a one-off: written at project start, never revisited when trust boundaries change.
Practitioner checklist
- Decide which half is weaker using a SAMM assessment, not opinion.
- Publish a short SSDLC policy with risk tiers, gate criteria and an expiring exception process.
- Map policy requirements to SSDF practice IDs for customer and regulator conversations.
- Deliver checks through shared pipeline templates, not per-team configuration.
- Block only on precise, high-impact checks; route the rest to tickets with SLAs.
- Keep human gates for design review and risk acceptance on high-tier services.
- Protect pipeline and policy files with code owner review.
- Fail releases closed when signing or provenance generation fails.
- Report exception age, design coverage and remediation speed quarterly.
Standards and references
- NIST: SP 800-218 Secure Software Development Framework (SSDF) Version 1.1
- NIST: SP 800-218 Rev. 1 SSDF Version 1.2 (Initial Public Draft)
- NIST: SP 800-204C Implementation of DevSecOps for a Microservices-based Application with Service Mesh
- OWASP: Software Assurance Maturity Model (SAMM) v2.0
- Microsoft: Security Development Lifecycle Practices
- NCSC: Secure Development and Deployment Guidance
- CISA: Secure by Design
- NIST NCCoE: Software Supply Chain and DevOps Security Practices
Related NHI Mgmt Group resources: Secure Software Development Lifecycle (SSDLC) Guide, DevSecOps Guide, Secure Development Frameworks Compared, AppSec Maturity Model, Secure SDLC Policy Template.