Unità 10 / 11

Gestione della sicurezza e dei segreti: DevSecOps e intelligenza artificiale

Guadagni:

  • Capacità di comprendere DevSecOps e le regole d'oro della gestione dei segreti (non inserisce il codice, viene conservato nel vault, viene iniettato in fase di esecuzione, viene restituito, con privilegi minimi)
  • Capacità di utilizzare l'intelligenza artificiale per dare priorità agli output della scansione di sicurezza (SCA, SAST, immagine, IaC, segreto) e al codice di controllo per scopi difensivi
  • Sapere che il primo passo verso una fuga di notizie segreta è la revoca/annullamento e l'utilizzo dell'intelligenza artificiale solo nei sistemi autorizzati, a fini di difesa, entro i limiti legali

La rapidità con cui un sistema viene implementato non significa nulla il giorno in cui viene compromesso. Sebbene DevOps si concentri sulla velocità, a volte la sicurezza viene lasciata fino in fondo e spesso non viene affatto raggiunta. DevSecOps è l'approccio che pone la sicurezza all'inizio e in ogni fase del flusso DevOps: "spostare la sicurezza a sinistra", ovvero individuare una vulnerabilità in fase di elaborazione, mentre il codice viene scritto, anziché in fase di produzione. Per il professionista DevSecOps, la sicurezza non è il lavoro di un team separato, ma è parte di ogni commit, ogni immagine, ogni manifest.

Ci sono due assi principali in questa unità. Il primo è la gestione dei segreti: generazione, archiviazione, distribuzione e rotazione sicura di informazioni riservate come password, chiavi, certificati. Il secondo è la scansione e il rafforzamento della sicurezza: trovare vulnerabilità in dipendenze, immagini, configurazioni. L'intelligenza artificiale è un potente assistente in entrambi i casi: rileva le vulnerabilità, dà priorità agli output della scansione e consiglia soluzioni. Ma qui vale l’avvertenza più critica: l’intelligenza artificiale serve per la difesa; L'accesso non autorizzato al sistema di qualcun altro, la scansione non autorizzata o la creazione di uno strumento di attacco sono illegali e rappresentano il limite rigoroso di questa piattaforma.

Regole d'oro della gestione dei segreti

  1. Il segreto non viene mai inserito nel codice sorgente. Non Dockerfile, non YAML, non script, non Git. Una volta entrato in Git, il segreto persiste nel passato.
  2. I segreti sono custoditi in un caveau centrale. HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager: archiviano i segreti crittografati, controllano l'accesso e ne tengono traccia.
  3. Viene iniettato al momento dell'operazione. L'applicazione recupera il segreto dall'insieme di credenziali o dalla variabile di ambiente durante l'esecuzione, non dal disco.
  4. Ruota regolarmente. Più a lungo vive un segreto, maggiore è il rischio di fuga di notizie. La rotazione automatica è l'ideale.
  5. Autorità minima. Solo il servizio che ne ha bisogno può accedere a ciascun segreto.
Suggerimento: la singola contromisura più efficace è mettere in cantiere uno scanner segreto (come git-secrets, gitleaks, tartufohog): interrompe il commit se si tenta accidentalmente di salvare un segreto. Ciò arresta la perdita alla fonte. L'intelligenza artificiale aiuta a scrivere l'integrazione della pipeline di questi browser.

Passo dopo passo: rispondere a una fuga di notizie segreta

Se viene trapelato un segreto, niente panico, l'ordine è importante:

  1. Annulla e ruota immediatamente. Invalidare la chiave trapelata, generarne una nuova. Cancellarlo non è sufficiente: rimane nel passato.
  2. Valutare l'impatto. Dove ha avuto accesso questa chiave? È stato abusato? Esaminare i registri.
  3. Spegnere la fonte. Come è trapelato? Cancella codice, cronologia; Ma ricorda: la cancellazione viene prima della cancellazione.
  4. Impedire. Aggiungi il browser segreto alla pipeline in modo che non si ripeta.
Attenzione: la scommessa più costosa è non restituire un segreto trapelato solo perché "nessuno lo ha visto". Una chiave inserita in un repository pubblico viene scansionata dai bot in pochi secondi. In caso di dubbio, ruotare: il costo della rotazione è basso, il costo delle perdite è catastrofico.

Tipi di scansioni di sicurezza

DevSecOps utilizza più livelli di scansione; L'intelligenza artificiale è utile per interpretare l'output di ciascuno:

  • SCA (Analisi della composizione software): trova le vulnerabilità note (CVE) nelle dipendenze open source che utilizzi.
  • SAST (Static Application Security Testing): analizza il codice sorgente per individuare eventuali vulnerabilità senza eseguirlo.
  • DAST (Dynamic Application Security Testing): verifica esternamente l'applicazione in esecuzione.
  • Scansione delle immagini: trova le vulnerabilità nell'immagine del contenitore (trivy, docker scout).
  • Scansione IaC: rileva configurazioni errate in Terraform/manifests (tfsec, checkov).
Attenzione: uno scanner scarica centinaia di risultati; È impossibile risolverli tutti allo stesso tempo. Usare l’intelligenza artificiale per dare priorità ai risultati: quali sono veramente sfruttabili, quali sono ovvi in ​​teoria ma inaccessibili nella pratica? Ma verifica la priorità finale con il tuo contesto.

Tabella degli strati raster

strato

Cosa scansiona?

veicolo campione

quando

SCA

Vulnerabilità delle dipendenze (CVE)

Dipendebot, Snyk

ogni costruzione

SAST

Vulnerabilità del codice sorgente

Semgrep, CodeQL

Ogni PR

scansione delle immagini

Vulnerabilità del contenitore

Trivy, esploratore

Dopo la costruzione

Scansione IaC

Configurazione errata

tfsec, controllo

Terraforma PR

scansione segreta

Segreti trapelati

gitleaks

Ogni impegno

tre mini custodie

Caso 1: 300 CVE, 12 rischi reali. Una scansione delle immagini ha segnalato 300 vulnerabilità; La squadra era paralizzata. Dai l'output della scansione all'IA e chiedi "quali possono essere sfruttati da remoto e sono raggiungibili?" Gli hanno dato la priorità. L’intelligenza artificiale ha evidenziato 12 risultati realmente rischiosi. La squadra prima li ha chiusi; Ha assunto il resto su base pianificata. Dare priorità al panico.

Caso 2: la rotazione ha sventato un attacco. Uno sviluppatore ha accidentalmente inviato una chiave cloud a un repository pubblico. L'allarme suonò; La squadra ha annullato e restituito la chiave in 4 minuti. I registri mostravano che la chiave era già stata richiesta da un bot, ma ora non era più valida. La rapida risposta ha evitato un potenziale disastro di fatturazione e una fuga di dati.

Caso 3: la scansione IaC ha rilevato un secchio aperto. Una scansione IaC assistita dall'intelligenza artificiale ha rilevato un bucket di archiviazione nel codice Terraform con autorizzazione di "lettura pubblica" senza passare alla produzione. Lo sviluppatore lo aveva aperto "per testare" e si era dimenticato di chiuderlo. La pipeline ha interrotto il commit; open non è mai arrivato alla prod. Questo è esattamente il punto dello scorrimento verso sinistra.

Quattro modelli copiabili

1) Dai priorità all'output della scansione:

Dai la priorità all'output della scansione di sicurezza di seguito. Per ogni risultato: (1) è veramente sfruttabile (remoto/non autenticato?), (2) è accessibile nel nostro contesto, (3) sforzo di correzione, (4) priorità consigliata (critica/alta/media/bassa). Evidenzia i 5 più urgenti.Parla chiaramente; indicare che devo convalidare ciascuna priorità con il mio contesto. Uscita: [SCANSIONE]

2) Progettazione della gestione segreta:

Proporre un approccio di gestione dei segreti per [APPLICAZIONE/INFRstruttura]: quale deposito, come inserire i segreti in fase di esecuzione, come automatizzare la rotazione, come applicare i privilegi minimi? Descrivi un flusso concreto che non incorpora MAI il segreto nel codice.

3) Ricerca delle vulnerabilità nel codice (difesa):

Controlla il mio PROPRIO codice qui sotto per sicurezza (ho l'autorizzazione): c'è qualche iniezione, segreto incorporato, input predefinito non sicuro, non convalidato? Dai a ciascuna scoperta la sua importanza e la sua correzione. Lo scopo è la difesa e il consolidamento. Codice: [CODICE]

4) Piano segreto di risposta alle perdite:

Un [TIPO SEGRETO] potrebbe essersi infiltrato accidentalmente in [LOCAZIONE]. Datemi un ordine di intervento passo passo: cosa devo fare prima (annullamento/restituzione), come valutare l'effetto, come prevenire il ripetersi? Spiega anche perché la semplice eliminazione non è sufficiente.

Prompt debole / Prompt forte

Debole: "Come posso hackerare questo sistema/sfruttare questa vulnerabilità?"

Questa richiesta è immorale e rigorosamente al di fuori dei confini di questa piattaforma. È illegale usare l’intelligenza artificiale per attaccare.

Forte: "Autorizza il codice della mia applicazione per la sicurezza: trova segreti incorporati, rischi di injection e valori predefiniti non sicuri, correggi ciascuno di essi. L'obiettivo è rafforzare il sistema."

Differenza: la seconda richiesta è a fini difensivi, nei limiti dell'autorità e per consolidamento. Questo è l'uso corretto dell'IA in DevSecOps.

Errori comuni

  • Incorporare il segreto nel codice/storia. La vulnerabilità più comune e persistente.
  • Non restituire il segreto trapelato. "Nessuno l'ha visto" è la scommessa più costosa.
  • Considerare tutti i risultati dello screening uguali. Essere paralizzati dalla definizione delle priorità o dalla mancanza di un rischio reale.
  • Lasciare che la sicurezza duri. Il divario nella produzione è molte volte più costoso del divario nella pipeline.
  • Bypassare l'autorità minima. Un segreto/ruolo che ha accesso a tutto rende una singola fuga di notizie un disastro.
  • Cercando di usare l'intelligenza artificiale per l'attacco. Illegale e fuori piattaforma.

In sintesi

DevSecOps pone la sicurezza all'inizio e in ogni fase del flusso DevOps, individuando le vulnerabilità nel codice e nella pipeline, non nella produzione. Regole d'oro della gestione dei segreti: il segreto non entra nel codice, viene conservato nel vault centrale, viene iniettato in fase di runtime, viene restituito regolarmente e vi si accede con privilegi minimi. Il primo passo in una perdita è sempre l'interruzione/ritorno. L’intelligenza artificiale è potente nel dare priorità all’output della scansione, progettare flussi segreti e ispezionare il codice in modo difensivo, ma viene utilizzata solo in modo difensivo ed entro limiti legali sui sistemi su cui si ha autorità.

Compito dell'applicazione

Affronta un tuo progetto (per il quale hai l'autorità). (1) Verificare i valori predefiniti segreti e non sicuri incorporati con il modello "Ricerca di vulnerabilità nel codice". (2) Ordinare l'output di una scansione di sicurezza (effettivo o campione) tramite il modello "triage" e identificare i 3 risultati più urgenti. (3) Produci una bozza di flusso per il tuo progetto con il modello di "progettazione della gestione dei segreti" che rimuove completamente il segreto dal codice.

lista di controllo

  • [ ] Ho verificato che non ci siano segreti incorporati nel mio codice, immagine e manifest.
  • [] Conservo i segreti in un archivio centrale e li inserisco in fase di esecuzione.
  • [ ] So che il primo passo in uno scenario di perdita è l'interruzione/ritorno.
  • [ ] Ho dato la priorità ai risultati della scansione in base alla sfruttabilità e al mio contesto.
  • [ ] Ho spostato le scansioni di sicurezza nelle prime fasi della pipeline (a sinistra).
  • [] Ho utilizzato l'intelligenza artificiale solo per scopi difensivi su sistemi in cui ho autorità.