0Pricing
Security+ Academy · Lezione

DevSecOps: spostare la sicurezza a sinistra nelle pipeline

Integri controlli SAST, DAST, scansione dei container e sicurezza IaC nelle pipeline CI/CD, così che i controlli di sicurezza vengano applicati automaticamente a ogni commit.

DevSecOps: spostare la sicurezza a sinistra nelle pipeline è una lezione Security+ Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Security+ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Security+ Academy include 4 lezioni in totale.

Che cosa significa spostare la sicurezza a sinistra?

Spostare la sicurezza a sinistra significa integrare le attività di sicurezza nelle fasi iniziali del ciclo di vita dello sviluppo software, nell'IDE dello sviluppatore, nella revisione del codice e nella pipeline CI/CD, invece di verificare la sicurezza solo come controllo finale prima della distribuzione. Le revisioni di sicurezza tradizionali avvenivano al termine del ciclo di sviluppo, rendendo le correzioni costose e dispendiose in termini di tempo. Individuare una vulnerabilità durante lo sviluppo costa circa 100 volte meno che correggerla dopo averla scoperta in produzione, in seguito a una violazione.

Che cos'è DevSecOps

DevSecOps estende il modello DevOps integrando la sicurezza come responsabilità condivisa tra i team di sviluppo, operations e sicurezza durante l'intero SDLC. L'obiettivo è automatizzare i test di sicurezza, in modo che vengano eseguiti in ogni fase senza rallentare la distribuzione. La sicurezza diventa una proprietà continua della pipeline, anziché un controllo eseguito una sola volta. Nei programmi DevSecOps maturi, gli sviluppatori ricevono feedback sulla sicurezza entro pochi secondi dalla scrittura del codice, non dopo settimane a seguito di una revisione manuale.

SAST: Static Application Security Testing

SAST (Static Application Security Testing) analizza il codice sorgente, il bytecode o i file binari senza eseguire l'applicazione. Gli strumenti SAST cercano pattern che indicano vulnerabilità: concatenazioni SQL, output non sottoposto a sanitizzazione, uso di funzioni vietate, credenziali codificate nel codice e uso non sicuro della crittografia. SAST viene eseguito nella pipeline CI a ogni commit, rilevando i problemi prima che raggiungano il controllo qualità o la produzione. Tra gli strumenti più diffusi figurano Semgrep, SonarQube, Checkmarx e Veracode.

# Semgrep SAST rule example:
# Detect raw SQL string concatenation (SQL injection risk):
# rules:
#   - id: sql-injection-string-concat
#     pattern: |
#       $QUERY = '...' + $USER_INPUT
#       $DB.execute($QUERY)
#     message: 'SQL injection risk: use parameterized queries'
#     severity: ERROR
#     languages: [python]

# Running Semgrep in CI:
# semgrep --config auto --error src/
# -> Fails build if ERROR severity findings found

DAST: Dynamic Application Security Testing

DAST (Dynamic Application Security Testing) verifica un'applicazione in esecuzione inviando payload malevoli e osservando le risposte, simulando il comportamento di un attaccante reale. A differenza di SAST, DAST rileva vulnerabilità che si manifestano solo durante l'esecuzione: difetti di autenticazione, problemi di gestione delle sessioni, bug nella logica di business e vulnerabilità di injection nei flussi di dati complessi. Tra gli strumenti DAST più diffusi figurano OWASP ZAP (gratuito), Burp Suite Enterprise e Acunetix. DAST viene eseguito su un ambiente di staging nella pipeline.

# OWASP ZAP automated DAST in CI pipeline:
# docker run -t owasp/zap2docker-stable zap-baseline.py \
#   -t https://staging.myapp.com \
#   -r zap-report.html \
#   -I  (do not fail on alerts, report only)

# For blocking builds on high findings:
# zap-full-scan.py -t https://staging.myapp.com \
#   -l HIGH   (fail if HIGH or CRITICAL alerts found)

# ZAP tests for:
# SQL injection, XSS, CSRF, insecure headers,
# path traversal, broken authentication, open redirects

Scansione delle immagini dei container

Le immagini dei container vengono create a partire da immagini di base che contengono pacchetti del sistema operativo, runtime dei linguaggi e dipendenze dell'applicazione, tutte potenziali fonti di vulnerabilità note. Gli strumenti di scansione delle immagini dei container analizzano i livelli delle immagini e identificano i pacchetti vulnerabili. Trivy (gratuito e veloce), Grype (Anchore) e Clair sono ampiamente utilizzati. Le scansioni vengono eseguite come parte della pipeline di build dell'immagine e impediscono la promozione nei registry di produzione delle immagini con CVE critiche.

# Trivy container scan in CI pipeline:
# trivy image --severity HIGH,CRITICAL \
#             --exit-code 1 \
#             myapp:latest

# Output example:
# library/python:3.9-slim (debian 11.6)
# ===================================
# CVE-2023-1234  CRITICAL  openssl 1.1.1n-0+deb11u3 -> 1.1.1t
# CVE-2023-5678  HIGH      libssl  1.1.1n            -> 1.1.1t

# --exit-code 1 causes pipeline to fail
# on any HIGH or CRITICAL finding -> blocks push to registry

Scansione di sicurezza dell'Infrastructure as Code (IaC)

La scansione di sicurezza dell'IaC analizza Terraform, CloudFormation, i manifest Kubernetes e i chart Helm alla ricerca di configurazioni errate prima che vengano applicati. Strumenti come Checkov e tfsec verificano violazioni quali: bucket S3 privi di crittografia lato server, security group che consentono tutto il traffico in ingresso, ruoli IAM con autorizzazioni wildcard e pod Kubernetes eseguiti come root. La scansione dell'IaC previene le configurazioni errate del cloud prima che raggiungano qualsiasi ambiente.

# Checkov IaC scan example:
# checkov -d ./terraform/ --compact

# Findings example:
# FAILED: CKV_AWS_20: S3 Bucket has an ACL defined which allows public access
#   File: /terraform/s3.tf, Line: 15

# FAILED: CKV_AWS_57: S3 Bucket has server access logging disabled
#   File: /terraform/s3.tf, Line: 15

# FAILED: CKV_AWS_24: Ensure no security groups allow all ingress traffic
#   File: /terraform/sg.tf, Line: 8

# Passed checks: 47, Failed: 3, Skipped: 0

Scansione dei secret nelle pipeline

Gli strumenti di scansione dei secret controllano il codice sorgente e i commit alla ricerca di credenziali incluse accidentalmente. Strumenti come truffleHog, GitLeaks e detect-secrets analizzano la cronologia git e i nuovi commit alla ricerca di pattern corrispondenti a chiavi API, stringhe di connessione, chiavi private e token JWT. Come hook pre-commit, la scansione dei secret blocca i commit che includono credenziali. Come controllo CI, analizza tutti i file del repository a ogni push e interrompe la build se rileva dei secret.

# GitLeaks pre-commit hook configuration:
# .gitleaks.toml:
# [allowlist]
#   description = 'Known false positives'
#   paths = ['test/fixtures/fake_key.txt']

# Install as pre-commit hook:
# gitleaks protect --staged
# (scans staged files before commit is created)

# In CI pipeline:
# gitleaks detect --source=. --report-format=json \
#   --report-path=gitleaks-report.json
# exit code 1 = secrets found -> blocks pipeline

Threat modeling nell'SDLC

Il threat modeling è un processo strutturato per identificare i requisiti di sicurezza e i difetti di progettazione prima della scrittura del codice. Il modello STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) aiuta i team a enumerare sistematicamente le minacce a carico del diagramma del flusso di dati di un sistema. Le sessioni di threat modeling si svolgono durante la progettazione e producono un elenco prioritario di minacce che determina i requisiti di sicurezza e orienta la selezione delle regole SAST/DAST.

# STRIDE threat categories applied to a web login API:
# S - Spoofing:       Attacker impersonates valid user
#     Control: Strong authentication, MFA
# T - Tampering:      Attacker modifies login request
#     Control: TLS, HMAC, input validation
# R - Repudiation:    User denies actions taken
#     Control: Audit logging with tamper-evident storage
# I - Info Disclosure: Password exposed in logs
#     Control: Never log sensitive fields
# D - Denial of Service: Flood login endpoint
#     Control: Rate limiting, CAPTCHA
# E - Elevation of Privilege: Bypass authorization
#     Control: Server-side authorization checks

Security gate: bloccanti e informativi

Le pipeline DevSecOps implementano i controlli di sicurezza come gate bloccanti (interrompono la build e impediscono la distribuzione) oppure come controlli informativi (segnalano i risultati e consentono di proseguire con la distribuzione). In genere, i risultati critici e ad alta gravità di SAST, della scansione dei container e del rilevamento dei secret bloccano il processo. I risultati medi e di bassa gravità generano notifiche o ticket senza bloccare il processo. Questo equilibrio impedisce alla sicurezza di fermare ogni distribuzione, garantendo al contempo che le condizioni realmente pericolose non possano raggiungere automaticamente la produzione.

Metriche di sicurezza in DevSecOps

I programmi DevSecOps devono essere valutati mediante metriche chiare. Tra le metriche principali figurano: il Mean Time to Remediate (MTTR) per i risultati ad alta gravità, la densità delle vulnerabilità (risultati ogni 1.000 righe di codice nel tempo), il tasso di fuga (percentuale di vulnerabilità rilevate dopo l'entrata in produzione rispetto a quelle rilevate prima) e il tasso di superamento dei security gate della pipeline. Monitorare l'andamento di queste metriche nel tempo dimostra l'efficacia del programma e orienta le decisioni di investimento in ulteriori strumenti o attività di formazione.

Cultura: la sicurezza come responsabilità condivisa

La parte più difficile di DevSecOps è culturale, non tecnica. La sicurezza deve diventare responsabilità di ogni sviluppatore, non soltanto del team di sicurezza. Ciò richiede: formazione degli sviluppatori sulla sicurezza (sensibilizzazione alla programmazione sicura), security champion integrati nei team di sviluppo, post-mortem senza attribuzione di colpe quando le vulnerabilità raggiungono la produzione (concentrati sul miglioramento dei processi, non sulla punizione) e l'impegno dei dirigenti a consentire compromessi sulla velocità quando un rischio concreto per la sicurezza lo richiede. La tecnologia senza un cambiamento culturale produce strumenti di scansione che gli sviluppatori imparano a ignorare.

Verifica rapida

Verifichi la Sua comprensione dei concetti di CompTIA Security+ (SY0-701) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: DevSecOps integra SAST, DAST, la scansione dei secret, la scansione dei container e la scansione dell'IaC come gate automatizzati della pipeline; bloccare i risultati ad alta gravità impedisce alle condizioni pericolose di raggiungere la produzione; e spostare i controlli di sicurezza a sinistra riduce drasticamente i costi di correzione, perché consente di rilevare le vulnerabilità durante lo sviluppo anziché dopo la distribuzione. Nella prossima lezione esamineremo i controlli di sicurezza fisica per strutture e data center.

Domande Frequenti

La lezione «DevSecOps: spostare la sicurezza a sinistra nelle pipeline» è gratuita?

Sì — il testo completo di «DevSecOps: spostare la sicurezza a sinistra nelle pipeline» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Security+ Academy, passa a CoddyKit PRO. Il corso Security+ Academy include 4 lezioni in totale.

Cosa imparerò in «DevSecOps: spostare la sicurezza a sinistra nelle pipeline»?

Integri controlli SAST, DAST, scansione dei container e sicurezza IaC nelle pipeline CI/CD, così che i controlli di sicurezza vengano applicati automaticamente a ogni commit. Eserciti Security+ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Security+ Academy?

Non è richiesta alcuna esperienza precedente. Security+ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «DevSecOps: spostare la sicurezza a sinistra nelle pipeline»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Security+ Academy?

Sì. Ogni lezione Security+ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Convalida degli input e codifica degli output
  2. Gestione sicura dei segreti e variabili d'ambiente
  3. Sicurezza delle dipendenze e analisi della composizione del software
  4. DevSecOps: spostare la sicurezza a sinistra nelle pipeline
← Torna a Security+ Academy