DevSecOps & Secure SDLC
Security that ships with the code, not the security review that happens after the code already shipped.
"Shift left" became a slogan before most organizations worked out what it actually requires: security controls that run inside the same pipeline developers already use, at the same speed they already expect, producing findings a developer can act on without translating them from a security team's dialect first. Bolt a scanner onto the end of the pipeline and call it DevSecOps, and you've mostly just moved the bottleneck — the code still gets written the same way it always did, and now there's a slower gate at the end of it.
Done well, secure SDLC is a pipeline where the fastest way to ship is also the secure way — because the checks are automated, fast, and gated at the point where fixing something is still cheap.
The Secure Pipeline, Stage by Stage
Five stages, looping back — findings in production feed the next threat model, not a backlog nobody revisits.
NIST SSDF (SP 800-218), Practice Group by Group
The Secure Software Development Framework doesn't prescribe tools — it groups the practices any secure pipeline ends up needing, regardless of what's implementing them.
| Practice Group | Focus | Example Control |
|---|---|---|
| PO — Prepare the Organization | People, process, and tooling readiness | Security requirements defined before design starts |
| PS — Protect the Software | Protecting all components from tampering | Signed builds, protected source repos and pipelines |
| PW — Produce Well-Secured Software | Design, build, and test with security built in | Threat modeling, SAST/SCA gates, code review |
| RV — Respond to Vulnerabilities | Finding and fixing issues after release | DAST, pen testing, coordinated disclosure handling |
SAST vs. DAST — the Distinction That Actually Matters
SAST reads source code without running it, which means it can flag a flaw the moment it's written and point at the exact line — but it only knows what the code looks like, not how the application actually behaves once it's deployed with real configuration, real authentication, and real data flowing through it. DAST attacks a running application from the outside, the same way an actual attacker would, which catches classes of issues SAST structurally can't see — broken authentication, misconfigured runtime settings, issues that only appear once components are wired together. Neither replaces the other; a pipeline that only runs one is only checking half the surface.
How I'd Build the Pipeline
- Put the fast checks first. Linting and SAST run in seconds and belong on every commit; slower DAST and pen testing belong later, where their cost is justified.
- Fail the build on the findings that matter, not all of them. A gate that blocks on every low-severity finding trains teams to route around it instead of fixing anything.
- Give developers the fix, not just the finding. A scanner result with no remediation guidance becomes a ticket nobody prioritizes.
- Threat model the design, not just the diff. Code-level scanning misses architectural flaws — a threat model catches them before a single line is written.
- Close the loop from production back to design. A real vulnerability found in production should change the threat model and the checklist, not just get patched and forgotten.
Where These Pipelines Actually Fail
- Scanners bolted on at the end. A SAST gate that only runs right before release finds issues at the most expensive possible point to fix them.
- Alert fatigue from unfiltered findings. Thousands of low-signal findings train developers to ignore the tool entirely, including the finding that mattered.
- No ownership of the pipeline itself. Security tooling that nobody on the engineering side actually maintains degrades quietly until it's scanning nothing useful.
- Threat modeling treated as a one-time exercise. A threat model done once at launch and never revisited misses everything the system grew into.
- Compliance-driven scanning with no fix budget. Running the scanner to check a box, with no engineering time allocated to act on results, produces a report and nothing else.
A pipeline that only tells you what's broken isn't DevSecOps — it's a slower release process with extra steps. The point is fixing it before it ships.