How to Implement DevSecOps
A phased roadmap for implementing DevSecOps in your organization. Covers tool selection, pipeline integration, developer enablement, metrics, and scaling across teams.
What DevSecOps actually requires
DevSecOps means integrating security into every stage of software delivery — from code commit to production deployment — without creating a separate security phase that slows everything down.
The word gets thrown around as a synonym for “automated security scanning,” but that is only one piece. A team that runs SonarQube in CI but ignores findings, has no triage process, and never trains developers on secure coding is not doing DevSecOps. They have automated scans with manual neglect.
Real DevSecOps requires three things working together:
Automated tooling integrated into the development pipeline. SAST, SCA, secrets scanning, container scanning, and eventually DAST all running on every code change, with results surfaced where developers already work.
Process changes that define who owns findings, how they get triaged, and what blocks a release. Without defined SLAs for vulnerability remediation, scans produce data that nobody acts on.
Cultural shift where developers treat security findings like functional bugs — part of the work, not extra work. This does not happen by mandate. It happens through training, tooling that respects developer time, and leadership that backs the investment.
Most teams already have pieces of this. The roadmap below starts from whatever you have and builds in phases.
Phase 1: Foundation
Goal: Get automated SAST and SCA scanning running on every pull request. Build a vulnerability tracking baseline.
Step 1: SAST in CI/CD
Pick a SAST tool that supports your primary languages and integrates with your CI platform.
For most teams, Semgrep (free, 20+ languages, fast) or SonarQube (free community edition, 35+ languages, quality gates) are the right starting point. Enterprise teams with existing contracts may use Checkmarx or Snyk Code.
Configure the tool to scan every pull request. Post findings as PR comments. Start in warning mode — do not block merges yet. Let developers see findings for 2-4 weeks before enforcing quality gates.
Step 2: SCA in CI/CD
Add software composition analysis to catch known vulnerabilities in open-source dependencies. Your application code might be clean, but the libraries it uses might not be.
Dependabot (free, built into GitHub), Snyk (freemium, broad ecosystem support), or Trivy (free, containers + dependencies) all work. The goal is to know when a dependency with a known CVE enters your codebase.
SCA produces fewer false positives than SAST and catches high-impact vulnerabilities (Log4Shell, Spring4Shell, polyfill supply chain attacks). If you can only do one thing, do SCA first.
Step 3: Secrets scanning
Deploy secrets detection to catch API keys, passwords, and tokens committed to source code. GitGuardian and TruffleHog both offer free tiers. GitHub’s built-in secret scanning also works for common provider patterns.
Run it as a pre-commit hook and in CI. Pre-commit catches secrets before they hit the repository. CI catches secrets that bypass the hook.
Step 4: Vulnerability tracking
Pick a system of record for vulnerability findings. This can be your existing issue tracker (Jira, Linear, GitHub Issues) or a dedicated security tool. The point is to have a single place where all findings are tracked, assigned, and measured.
Define SLAs: critical vulnerabilities fixed within 7 days, high within 30, medium within 90. These deadlines are useless without tracking, so measure and report compliance weekly from the start.
Phase 2: Expansion
Goal: Expand coverage to DAST, container security, and IaC scanning. Enforce quality gates. Begin automated triage.
Step 5: DAST in staging
Add dynamic application security testing against your staging or QA environment. OWASP ZAP (free) or StackHawk (developer-friendly CI integration) are the most common starting points.
DAST finds issues that SAST misses: server misconfigurations, authentication bypass, missing security headers, and runtime-dependent vulnerabilities. Run DAST scans on every deployment to staging, or at minimum weekly.
Step 6: Container and IaC scanning
If you deploy containers, scan images for OS-level and application-level vulnerabilities. Trivy handles both container images and IaC files in a single tool. Checkov adds deep Terraform and CloudFormation analysis.
Scan Dockerfiles, Kubernetes manifests, Terraform files, and Helm charts. Common findings: containers running as root, overly permissive IAM policies, security groups open to the internet, and unencrypted storage.
Step 7: Quality gates
Move from warning mode to enforcement. Define quality gates that block merges or deployments when critical issues are found.
SonarQube quality gates are the most mature implementation: set thresholds for new vulnerabilities, coverage, and duplication. Checkmarx policies and Snyk test commands both support similar gating.
Start strict but narrow. Block on critical and high-severity findings only. Block on new code, not legacy findings. This prevents new vulnerabilities from shipping while giving teams time to address existing technical debt.
Step 8: Automated triage and deduplication
By this phase, your tools generate hundreds of findings per week. Without automated triage, developers drown in alerts.
Implement finding deduplication across tools. A SQL injection flagged by both SAST and DAST should be one issue in your tracker, not two. Correlation tools or an ASPM platform can handle this.
Set up auto-routing: SAST findings go to the developer who owns the file, SCA findings go to the team that owns the service, infrastructure findings go to the platform team.
Phase 3: Maturity
Goal: Unified visibility through ASPM, policy as code, and automated remediation. Security as a seamless part of delivery.
Step 9: ASPM for unified visibility
Application Security Posture Management platforms aggregate findings from all your security tools into a single view. Apiiro, ArmorCode, Cycode, and OX Security are leading options.
ASPM answers questions that individual tools cannot: What is the overall risk posture of this application? Which findings across SAST, SCA, and DAST affect the same component? Which team has the most overdue critical findings?
See our ASPM guide for a full breakdown.
Step 10: Policy as code
Define security policies in code that gets version-controlled and reviewed alongside application code. Instead of a PDF document saying “all applications must pass SAST scanning,” write a CI policy that enforces it automatically.
Open Policy Agent (OPA), Checkov custom policies, and Semgrep rule packs all support this pattern. The policy is testable, auditable, and consistent across every repository.
Step 11: Automated remediation
For certain finding categories, automation can fix the issue without developer intervention. Dependabot and Snyk auto-fix generate pull requests to bump vulnerable dependencies. Semgrep autofix rules can apply code-level fixes for simple patterns.
Start with dependency updates (high confidence, low risk) and expand to code-level fixes as you validate the automation. Always require a human to approve automated PRs — the fix rate is good but not perfect.
Developer enablement
Tools deployed without developer buy-in fail. Enablement is not optional.
Training that works
Generic security awareness training checks a compliance box. It does not change how developers write code. Effective training is specific to the tools and frameworks your team actually uses.
Run a half-day workshop where developers: install the SAST IDE plugin, scan their own code, triage findings together, and write one custom rule. This is worth more than a month of slide-based training.
OWASP WebGoat and Secure Code Warrior provide hands-on labs where developers exploit and fix real vulnerabilities. Assign these as onboarding for new team members.
Tooling that respects developer time
If the scan takes 20 minutes on every pull request, developers will work around it. Speed matters. Semgrep scans a million-line codebase in under a minute. Snyk Code returns results in seconds. Pick tools that are fast enough to be part of the development loop, not a blocker.
Surface findings where developers already work. PR comments are better than a separate dashboard. IDE inline warnings are better than PR comments. Meet developers where they are.
Autonomy over gatekeeping
Give developers the ability to triage findings themselves. Let them mark false positives, snooze non-critical issues, and create follow-up tickets. If every finding requires a security team member to review before the developer can act, the process does not scale.
The security team’s role shifts from reviewing every finding to reviewing the triage decisions. Spot-check 10-20% of triaged findings. Adjust rules when developers consistently flag false positives.
Measuring DevSecOps maturity
Track these metrics to understand whether your program is working or just generating dashboards.
Leading indicators
- Pipeline coverage: Percentage of repositories with SAST and SCA scanning enabled. Target: 100%.
- Mean time to detect (MTTD): How long between a vulnerability being introduced and it being flagged. With PR-level scanning, this should be less than 24 hours.
- Developer adoption: Percentage of developers who have resolved at least one security finding in the past 30 days. If this is below 50%, the tooling is being ignored.
Lagging indicators
- Mean time to remediate (MTTR): How long between a finding being created and it being resolved. Track by severity. Critical should be under 7 days.
- SLA compliance: Percentage of findings resolved within the defined SLA. Track weekly and trend monthly.
- Escaped vulnerabilities: Number of vulnerabilities found in production that should have been caught earlier. This is the ultimate measure of shift-left effectiveness. It should decrease over time.
Maturity model
| Level | Characteristics |
|---|---|
| 1 — Ad hoc | Manual scans, no CI integration, security team runs everything |
| 2 — Repeatable | SAST + SCA in CI/CD, manual triage, basic SLAs |
| 3 — Defined | Quality gates enforce policy, automated triage, developer training program |
| 4 — Managed | ASPM in place, metrics-driven decisions, policy as code |
| 5 — Optimized | Automated remediation, continuous feedback loops, security embedded in architecture decisions |
Most organizations are at level 1 or 2. Getting to level 3 delivers the majority of the security value. Levels 4 and 5 are for organizations with dedicated AppSec teams and hundreds of developers.
For a deeper look at DevSecOps tooling, see our DevSecOps tools page and AppSec program guide.
Common failures and how to avoid them
Deploying tools without process
The most common failure pattern. A security team buys a SAST tool, enables it on all repositories, and walks away. Findings pile up. Nobody knows who owns them. Developers complain about noise. The tool gets disabled six months later.
Fix: Define the triage process and SLAs before turning on scanning. Assign finding ownership. Start with a pilot team, not the entire organization.
Blocking everything immediately
Turning on strict quality gates across all repositories on day one creates a developer revolt. Hundreds of legacy findings block every merge. Development grinds to a halt.
Fix: Start in warning mode for 2-4 weeks. Baseline existing findings. Enforce gates on new code only. Expand enforcement gradually as the backlog shrinks.
Ignoring false positives
If 40% of findings are false positives and the security team says “just review them all,” developers learn that the tool is not trustworthy. They stop looking at findings.
Fix: Invest in rule tuning, custom rules, and framework-specific configurations. Track your false positive rate. If it is above 30%, tuning is the priority, not more scanning. See our guide on reducing SAST false positives.
No executive support
DevSecOps requires developers to spend time on security findings. Without executive support, security work gets deprioritized against feature work every sprint.
Fix: Frame DevSecOps in business terms: reduced breach risk, faster compliance audits, lower cost of vulnerability remediation. Show metrics. Report escaped vulnerabilities. Make the risk visible.
Tool sprawl
Buying a separate tool for every scan type creates integration headaches, duplicate findings, and budget problems. A team running five different security tools spends more time managing tools than fixing vulnerabilities.
Fix: Consolidate where possible. Snyk covers SAST, SCA, container, and IaC in one platform. Checkmarx One combines SAST, SCA, DAST, and API security. Or use an ASPM platform to aggregate findings from specialized tools.
FAQ
This guide is part of our DevSecOps & AppSec Programs resource hub.
Frequently Asked Questions
How long does it take to implement DevSecOps?
What is the difference between DevSecOps and AppSec?
Do I need to buy new tools for DevSecOps?
What is the biggest mistake teams make when implementing DevSecOps?
Can small teams do DevSecOps?

Suphi Cankurt is an application security enthusiast based in Helsinki, Finland. He reviews and compares 129 AppSec tools across 10 categories on AppSec Santa. Learn more.
Comments
Powered by Giscus — comments are stored in GitHub Discussions.