DevSecOps

Von Boris Sander4. November 2025
DevSecOps

DevSecOps

„Shift Left, sie sagten. Es wird einfach, sie sagten."


Sinn & Zweck

DevSecOps ist der Versuch, Security in den DevOps-Prozess zu integrieren, anstatt sie am Ende dranzukleben. Das "Sec" in der Mitte ist symbolisch: Security soll kein Nachgedanke sein, sondern integraler Bestandteil von Entwicklung und Betrieb.

Die traditionelle Vorgehensweise:

Dev ────────→ Ops ────────→ Security ────────→ "Nein."
                                                  ↓
                                           Zurück zu Dev
                                                  ↓
                                           6 Wochen verloren

DevSecOps:

Dev+Sec+Ops ────────────────────────────────→ "Schon gefixed!"
                                                    ↓
                                              Release on time

Prinzipien

1. Shift Left

Security-Aktivitäten so früh wie möglich im Entwicklungsprozess.

Traditionell:
Requirements → Design → Code → Test → Deploy → [SECURITY]

Shift Left:
[SECURITY] → Requirements → Design → Code → Test → Deploy → [SECURITY]

2. Automatisierung

Alles, was automatisiert werden kann, wird automatisiert. Menschen skalieren nicht.

3. Kontinuierliche Security

Security ist kein Gate, sondern ein kontinuierlicher Prozess.

4. Kollaboration

Dev, Sec und Ops arbeiten zusammen, nicht gegeneinander.

5. Kultur vor Tools

Tools allein machen keine Security. Menschen und Prozesse schon.


Die Pipeline – Security überall

┌─────────────────────────────────────────────────────────────────────────────┐
│                           DevSecOps Pipeline                                  │
├───────────┬───────────┬───────────┬───────────┬───────────┬───────────────────┤
│   Plan    │   Code    │   Build   │   Test    │  Deploy   │     Operate      │
├───────────┼───────────┼───────────┼───────────┼───────────┼───────────────────┤
│ Threat    │ IDE       │ SAST      │ DAST      │ IaC       │ SIEM             │
│ Modeling  │ Security  │           │           │ Security  │                  │
│           │ Plugins   │           │           │           │                  │
├───────────┼───────────┼───────────┼───────────┼───────────┼───────────────────┤
│ Security  │ Pre-commit│ SCA       │ Pentest   │ Container │ Runtime          │
│ Backlog   │ Hooks     │           │           │ Scanning  │ Protection       │
├───────────┼───────────┼───────────┼───────────┼───────────┼───────────────────┤
│ Risk      │ Code      │ License   │ IAST      │ Secret    │ Vulnerability    │
│ Assessment│ Review    │ Compliance│           │ Management│ Management       │
└───────────┴───────────┴───────────┴───────────┴───────────┴───────────────────┘

Tools nach Phase

Plan

  • Threat Modeling: Microsoft TMT, OWASP Threat Dragon
  • Ticket Management: JIRA (Security Labels), GitHub Issues
  • Wiki: Confluence mit Security Playbooks

Code (Pre-Commit)

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/zricethezav/gitleaks
    hooks:
      - id: gitleaks
  - repo: https://github.com/PyCQA/bandit
    hooks:
      - id: bandit

IDE Plugins:

  • SonarLint
  • Snyk
  • Checkov
  • GitGuardian

Build (CI)

# GitHub Actions Security Pipeline
name: Security Checks
on: [push, pull_request]

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Semgrep
        uses: returntocorp/semgrep-action@v1
  
  sca:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Snyk
        uses: snyk/actions/node@master
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
  
  secrets:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Gitleaks
        uses: gitleaks/gitleaks-action@v2
  
  container:
    runs-on: ubuntu-latest
    steps:
      - name: Trivy
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'myapp:${{ github.sha }}'

Test (CD)

  dast:
    runs-on: ubuntu-latest
    steps:
      - name: OWASP ZAP
        uses: zaproxy/action-baseline@v0.7.0
        with:
          target: 'https://staging.example.com'

Deploy

  • IaC Security: Checkov, Terrascan, tfsec
  • Kubernetes: Falco, OPA/Gatekeeper, Kyverno
  • Secrets: HashiCorp Vault, AWS Secrets Manager

Operate

  • SIEM: Splunk, Elastic SIEM, Sumo Logic
  • RASP: Contrast, Sqreen
  • WAF: AWS WAF, Cloudflare, ModSecurity

Security Gates

Definition

Automatische Checks, die den Build/Deploy blockieren, wenn Security-Kriterien nicht erfüllt sind.

Beispiel-Policy

security_policy:
  sast:
    block_on:
      - critical
      - high
    warn_on:
      - medium
    ignore:
      - low
      
  sca:
    block_on:
      - cvss >= 9.0
      - license: ["GPL-3.0", "AGPL"]
    
  container:
    block_on:
      - critical_vulnerabilities > 0
      
  secrets:
    block_on:
      - any_secret_found: true

Das Dilemma

Strikte Gates = Sichere Software, aber frustrierte Devs
Lockere Gates = Schnelle Releases, aber unsichere Software

Lösung: Risk-based Gating. Kritische Apps brauchen striktere Gates.


Metriken & KPIs

Security-Metriken

MetrikBeschreibungZiel
MTTDMean Time to DetectMinimieren
MTTRMean Time to Remediate< 30 Tage (kritisch)
Vulnerability DensityVulns per KLOCSenken
Fix Rate% gefixte Vulns> 90%
False Positive RateUnnötige Alerts< 10%
Coverage% gescannter Repos100%

Dashboard-Beispiel

┌────────────────────────────────────────────────────────────┐
│                  Security Dashboard                         │
├────────────────────────────────────────────────────────────┤
│ Open Vulnerabilities: 47 (↓ 12 vs. last week)              │
│ ├── Critical: 2 (both > 7 days old ⚠️)                     │
│ ├── High: 8                                                │
│ ├── Medium: 22                                             │
│ └── Low: 15                                                │
├────────────────────────────────────────────────────────────┤
│ MTTR (Critical): 4.2 days  │  SLA: 7 days ✓               │
│ MTTR (High): 18 days       │  SLA: 30 days ✓              │
├────────────────────────────────────────────────────────────┤
│ Scans this week: 1,247                                     │
│ Failed builds (security): 23 (1.8%)                        │
│ Secrets detected: 3 (blocked)                              │
└────────────────────────────────────────────────────────────┘

Risiken & Grenzen

Tool Sprawl

"Wir haben jetzt:
- 3 SAST Tools
- 2 SCA Tools
- 4 Container Scanner
- 2 Secret Scanner
- Und niemand schaut die Dashboards an."

Alert Fatigue

10.000 Findings pro Woche = 0 Findings, die jemand liest.

False Positives

Entwickler verlieren das Vertrauen, wenn 80% der Alerts Fehlalarme sind.

Velocity vs. Security

PM: "Feature muss morgen live!"
Security: "Aber der SAST hat..."
PM: "Morgen. Live."

Skill Gap

DevOps-Engineers sind keine Security-Experten. Security-Experten verstehen kein Kubernetes.

"Not My Job" Mentalität

Dev: "Security kümmert sich drum." Sec: "Ops kümmert sich drum." Ops: "Dev kümmert sich drum." Niemand: kümmert sich drum


Vorteile

Geschwindigkeit

Security ist kein Bottleneck mehr. Automatisierte Checks in Sekunden statt wochenlanger Reviews.

Frühe Erkennung

Bug in IDE gefunden: 10 Minuten Fix
Bug in Production: 10 Tage Fix + Incident + Post-Mortem + Therapie

Konsistenz

Jeder Commit wird gleich geprüft. Keine "Das hat der Senior geschrieben, das passt schon"-Ausnahmen.

Skalierung

Die Pipeline skaliert mit dem Team. 10 Entwickler oder 1000 – dieselben Checks.

Nachvollziehbarkeit

Jeder Build ist dokumentiert. Auditors lieben das.

Kulturwandel

Wenn Security Teil der Pipeline ist, wird sie Teil der Kultur.


Best Practices

1. Start Small

Nicht alles auf einmal. Erst Secret-Scanning, dann SAST, dann...

2. Developer Experience priorisieren

Schlecht: "Build failed. See log for details." (5000 Zeilen)
Gut: "SQL Injection in api/users.py:42. Fix: Use parameterized query."

3. Fix the Process, not the People

Wenn Devs Security umgehen, ist der Prozess schlecht, nicht die Devs.

4. Security Champions

Security-Enthusiasten in jedem Team als Multiplikatoren.

5. Blameless Culture

Fehler passieren. Wichtig ist, dass sie gemeldet und behoben werden.

6. Feedback Loops

Findings müssen actionable sein und schnell beim Entwickler ankommen.

7. Measure & Improve

Was nicht gemessen wird, wird nicht verbessert.


Toolchain-Beispiel (Full Stack)

# Complete DevSecOps Toolchain
source_control:
  - GitHub/GitLab
  - Branch Protection Rules
  - Signed Commits

pre_commit:
  - gitleaks (secrets)
  - pre-commit hooks

ci_pipeline:
  sast:
    - Semgrep
    - SonarQube
  sca:
    - Snyk
    - Dependabot
  container:
    - Trivy
    - Grype
  iac:
    - Checkov
    - tfsec
  secrets:
    - Gitleaks
    - TruffleHog

cd_pipeline:
  dast:
    - OWASP ZAP
  kubernetes:
    - Falco
    - OPA Gatekeeper

runtime:
  waf:
    - AWS WAF
  monitoring:
    - Datadog
    - Splunk
  secrets:
    - HashiCorp Vault

Fazit

DevSecOps ist keine Technologie, sondern eine Kultur. Die Tools sind wichtig, aber ohne die richtige Einstellung der Menschen und Prozesse bleiben sie nutzlos.

Das Ziel ist nicht, Security perfekt zu machen – das ist unmöglich. Das Ziel ist, Security kontinuierlich zu verbessern, automatisiert wo möglich und menschlich wo nötig.

"Security is everyone's job" ist leicht gesagt. DevSecOps ist der Versuch, es wahr zu machen.


Weiterführende Ressourcen: