🟡 Intermediate

DevSecOps — Bezpečnosť v DevOps

DevSecOps integruje bezpečnosť do každej fázy DevOps životného cyklu — od vývoja cez build až po produkciu. Namiesto bezpečnostného auditu na konci sa bezpečnosť posúva doľava (shift-left), čo znamená skoršie odhaľovanie zraniteľností a nižšie náklady na ich opravu.


Shift-Left Security

Princíp shift-left znamená presunúť bezpečnostné kontroly čo najbližšie k vývojárovi:

  • Pre-commit hooks — kontrola secrets, linting bezpečnostných pravidiel
  • IDE pluginy — okamžitá spätná väzba pri písaní kódu (Snyk IDE, SonarLint)
  • Pull request checks — automatické bezpečnostné skeny pred merge
  • Security champions — vývojári vyškolení v bezpečnosti v každom tíme

Čím skôr nájdeš zraniteľnosť, tým lacnejšie ju opravíš. Bug v produkcii stojí 100× viac ako bug odhalený počas vývoja.


SAST — Static Application Security Testing

SAST analyzuje zdrojový kód bez jeho spustenia:

# Príklad: Semgrep v GitHub Actions
- name: Semgrep SAST Scan
  uses: returntocorp/semgrep-action@v1
  with:
    config: >-
      p/owasp-top-ten
      p/javascript

Populárne nástroje:

  • Semgrep — rýchly, open-source, vlastné pravidlá
  • SonarQube — komplexná analýza kvality aj bezpečnosti
  • CodeQL — GitHub-native, sémantická analýza
  • Bandit — špecializovaný na Python

Výhody: Skoré odhalenie, pokrytie celého kódu Nevýhody: False positives, nevidí runtime problémy


DAST — Dynamic Application Security Testing

DAST testuje bežiacu aplikáciu zvonku — simuluje útočníka:

# OWASP ZAP v CI/CD pipeline
- name: DAST Scan
  uses: zaproxy/action-full-scan@v0.7.0
  with:
    target: "https://staging.example.com"
    rules_file_name: "zap-rules.tsv"

Populárne nástroje:

  • OWASP ZAP — open-source, automatizovateľný
  • Burp Suite — profesionálny pentesting nástroj
  • Nuclei — template-based skener zraniteľností

Výhody: Reálne zraniteľnosti, menej false positives Nevýhody: Pomalšie, potrebuje bežiace prostredie


SCA — Software Composition Analysis

SCA kontroluje závislosti tretích strán na známe zraniteľnosti (CVE):

# Snyk CLI
snyk test --all-projects --severity-threshold=high

# npm audit
npm audit --audit-level=high

# pip-audit pre Python
pip-audit --strict

Populárne nástroje:

  • Snyk — SCA + kontajnery + IaC
  • Dependabot — GitHub-native, automatické PR s opravami
  • OWASP Dependency-Check — open-source
  • Trivy — all-in-one skener (závislosti, kontajnery, IaC)

Container Scanning

Kontajnerové obrazy môžu obsahovať zraniteľné balíčky, malware alebo nesprávne konfigurácie:

Trivy

# Skenovanie Docker image
trivy image myapp:latest

# Skenovanie s ignorovaním unfixed CVE
trivy image --ignore-unfixed --severity HIGH,CRITICAL nginx:1.25

# Skenovanie Dockerfile (misconfiguration)
trivy config Dockerfile

# Skenovanie v CI/CD (exit code 1 pri CRITICAL)
trivy image --exit-code 1 --severity CRITICAL myapp:latest

Snyk Container

# Skenovanie kontajnera
snyk container test myapp:latest

# Monitorovanie (kontinuálne sledovanie nových CVE)
snyk container monitor myapp:latest

Best Practices pre kontajnery

  • Používaj minimálne base images (distroless, Alpine, scratch)
  • Multi-stage builds — výsledný obraz bez build nástrojov
  • Spúšťaj procesy ako non-root user
  • Pinuj verzie base images (nie latest)
  • Pravidelne rebuilduj obrazy kvôli bezpečnostným patchom

Supply Chain Security

Bezpečnosť dodávateľského reťazca chráni celý proces od kódu po deployment:

SBOM — Software Bill of Materials

SBOM je zoznam všetkých komponentov v softvéri — ako „zloženie" na obale:

# Generovanie SBOM pomocou Syft
syft myapp:latest -o spdx-json > sbom.json

# Trivy SBOM
trivy image --format spdx-json -o sbom.json myapp:latest

# Skenovanie existujúceho SBOM
grype sbom:./sbom.json

Formáty: SPDX, CycloneDX Prečo: Regulácie (US Executive Order), rýchla reakcia na nové CVE (Log4Shell)

Ďalšie opatrenia

  • Sigstore/Cosign — podpisovanie kontajnerových obrazov
  • SLSA Framework — úrovne integrity supply chain
  • Verified builds — reprodukovateľné buildy
  • Dependency pinning — presné verzie + lock files
# Podpísanie obrazu pomocou Cosign
cosign sign --key cosign.key myregistry/myapp:v1.0

# Overenie podpisu
cosign verify --key cosign.pub myregistry/myapp:v1.0

OPA & Policy as Code

Open Policy Agent (OPA) umožňuje definovať bezpečnostné politiky ako kód:

# policy.rego — Zakázať kontajnery bežiace ako root
package kubernetes.admission

deny[msg] {
    input.request.kind.kind == "Pod"
    container := input.request.object.spec.containers[_]
    not container.securityContext.runAsNonRoot
    msg := sprintf("Kontajner '%s' musí bežať ako non-root", [container.name])
}

Použitie v Kubernetes

  • Gatekeeper (OPA) — admission controller pre K8s
  • Kyverno — Kubernetes-native policy engine
# Kyverno policy — vyžadovať resource limits
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-limits
spec:
  validationFailureAction: Enforce
  rules:
    - name: check-limits
      match:
        any:
          - resources:
              kinds:
                - Pod
      validate:
        message: "CPU a memory limits sú povinné."
        pattern:
          spec:
            containers:
              - resources:
                  limits:
                    memory: "?*"
                    cpu: "?*"

Policy as Code pre IaC

  • Checkov — skenovanie Terraform, CloudFormation, Kubernetes
  • tfsec — Terraform bezpečnostný skener
  • Conftest — OPA pre konfiguračné súbory
# Checkov pre Terraform
checkov -d ./terraform/ --framework terraform

# Conftest pre Kubernetes manifesty
conftest test deployment.yaml -p policy/

Secrets v CI/CD

Secrets (API kľúče, heslá, tokeny) sú najčastejší bezpečnostný problém v CI/CD:

Čo NEROBIŤ

# ❌ NIKDY — hardcoded secrets
env:
  DB_PASSWORD: "SuperSecret123"
  API_KEY: "sk-1234567890abcdef"

Správny prístup

# ✅ GitHub Actions — encrypted secrets
env:
  DB_PASSWORD: ${{ secrets.DB_PASSWORD }}

# ✅ HashiCorp Vault
- name: Get secrets from Vault
  uses: hashicorp/vault-action@v2
  with:
    url: https://vault.example.com
    method: jwt
    secrets: |
      secret/data/myapp db_password | DB_PASSWORD

Detekcia secrets v kóde

# Gitleaks — skenovanie Git histórie
gitleaks detect --source . --verbose

# TruffleHog — hľadanie secrets v repozitári
trufflehog git file://. --only-verified

# Pre-commit hook
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.18.0
    hooks:
      - id: gitleaks

Best Practices pre secrets

  • Používaj secrets manager (Vault, AWS Secrets Manager, SOPS)
  • Rotuj secrets pravidelne
  • Audit log — kto a kedy pristúpil k secrets
  • Short-lived credentials — OIDC tokeny namiesto dlhodobých kľúčov
  • Pre-commit hooks — zabrániť commitnutiu secrets

Best Practices

Security v CI/CD Pipeline

Code → Pre-commit (secrets, lint)
  → Build → SAST + SCA
    → Container Build → Image Scan
      → Deploy to Staging → DAST
        → Sign & Generate SBOM
          → Deploy to Production

Checklist pre DevSecOps

  1. Shift-left — bezpečnostné kontroly od prvého riadku kódu
  2. Automatizuj — manuálne kontroly nefungujú v CI/CD tempe
  3. SAST + DAST + SCA — kombinuj statickú, dynamickú aj kompozičnú analýzu
  4. Container scanning — každý build, nie raz za mesiac
  5. SBOM — vedz, čo je v tvojom softvéri
  6. Policy as Code — bezpečnostné pravidlá verzionované v Gite
  7. Secrets management — žiadne hardcoded secrets, nikdy
  8. Supply chain security — podpisuj artefakty, pinuj závislosti
  9. Least privilege — minimálne oprávnenia pre CI/CD service accounts
  10. Incident response — plán na reakciu, keď (nie ak) niečo zlyhá

Metriky

  • MTTR (Mean Time to Remediate) — ako rýchlo opravíš zraniteľnosť
  • Počet kritických CVE v produkcii
  • Coverage — % repozitárov s automatickým skenovaním
  • False positive rate — koľko nálezov je skutočných

Zhrnutie

Oblasť Nástroje Kedy v pipeline
SAST Semgrep, SonarQube, CodeQL Build
DAST OWASP ZAP, Nuclei Staging
SCA Snyk, Dependabot, Trivy Build
Container Scan Trivy, Snyk Container Post-build
Secrets Gitleaks, TruffleHog Pre-commit
Policy OPA, Kyverno, Checkov Admission/Build
SBOM Syft, Trivy Release
Signing Cosign, Sigstore Release

DevSecOps nie je nástroj ani tím — je to kultúra, kde bezpečnosť je zodpovednosťou každého.