Condividi tramite


DevSecOps per l'infrastruttura come codice (IaC)

Microsoft Sentinel
Monitoraggio di Azure
GitHub

Idee per soluzioni

In questo articolo viene descritta un'idea di soluzione. Il cloud architect può usare queste linee guida per visualizzare i componenti principali di un'implementazione tipica di questa architettura. Usare questo articolo come punto di partenza per il design di una soluzione ben progettata che sia in linea con i requisiti specifici del carico di lavoro.

Questa idea di soluzione illustra la pipeline DevSecOps che usa GitHub per l'infrastruttura come codice (IaC). Descrive anche come gestire il flusso di lavoro per l'eccellenza operativa, la sicurezza e l'ottimizzazione dei costi.

Terraform è un marchio di Hashicorp. Nessuna verifica dell'autenticità è implicita nell'uso di questo marchio.

Architettura

Diagramma che mostra l'architettura per DevSecOps per IaC.

Scaricare un file di Visio di questa architettura.

Flusso di dati

Il flusso di dati seguente corrisponde al diagramma precedente:

  1. Gli sviluppatori usano lo sviluppo basato su test per controllare le modifiche del codice per le definizioni dell'infrastruttura, ad esempio i modelli IaC, nei repository GitHub. Sviluppano unit test, test di integrazione e criteri come codice (PaC) contemporaneamente per testare la qualità dell'IaC.

  2. Le richieste pull attivano unit test automatizzati tramite GitHub Actions.

  3. Configurare il flusso di lavoro di GitHub Actions per testare l'IaC utilizzando stati e piani dell'infrastruttura generati localmente.

  4. Configurare GitHub Actions per analizzare la qualità del codice e i problemi di sicurezza. Eseguire l'analisi usando query CodeQL di GitHub personalizzate o altri strumenti di sicurezza per analizzare i modelli IaC e rilevare potenziali vulnerabilità di sicurezza. Se viene rilevata una vulnerabilità, GitHub invia avvisi all'organizzazione o ai proprietari e ai gestori del repository.

  5. Lo strumento IaC effettua il provisioning e modifica le risorse per ogni ambiente personalizzando le dimensioni, il numero di istanze e altre proprietà. È possibile eseguire test di integrazione automatizzati per IaC nelle risorse di cui è stato effettuato il provisioning.

  6. Quando è necessario un aggiornamento manuale dell'infrastruttura, l'amministratore designato eleva l'accesso per eseguire le modifiche. Dopo la modifica, l'accesso con privilegi elevati viene rimosso. È anche consigliabile registrare un problema di GitHub per la riconciliazione dell'IaC. I passaggi e gli approcci di riconciliazione dipendono dagli strumenti IaC specifici.

  7. SecOps monitora e difende continuamente dalle minacce e dalle vulnerabilità della sicurezza. Criteri di Azure applica la governance del cloud.

  8. Quando il sistema rileva un'anomalia, registra automaticamente un problema di GitHub per la risoluzione.

Componenti

  • GitHub è una piattaforma di hosting del codice per il controllo della versione e la collaborazione. In questa architettura archivia i modelli IaC e funge da repository centrale per flussi di lavoro di sviluppo, test e governance.

  • GitHub Actions è uno strumento di automazione di integrazione continua e distribuzione continua (CI/CD) che consente ai flussi di lavoro di compilare, testare e distribuire codice direttamente dai repository GitHub. In questa architettura GitHub Actions automatizza unit test, analisi della sicurezza e provisioning dell'infrastruttura per le pipeline IaC.

  • GitHub Advanced Security è una suite di funzionalità di sicurezza che include l'analisi statica e il rilevamento delle vulnerabilità per il codice archiviato in GitHub. In questa architettura migliora la sicurezza IaC analizzando i modelli e generando avvisi relativi a errori di configurazione o rischi.

  • CodeQL è un motore di analisi del codice semantico che consente alle query personalizzate di rilevare vulnerabilità e configurazioni errate nel codice. In questa architettura CodeQL analizza gli artefatti del repository per identificare potenziali problemi di sicurezza prima della distribuzione.

    Annotazioni

    CodeQL non supporta l'analisi nativa di tutti i file IaC, ad esempio Terraform. Tuttavia, è possibile usare il progetto community codeQL IaC Extractor o alternative fornite dal fornitore come Aqua Security's Trivy.

  • Terraform è uno strumento di automazione dell'infrastruttura open source sviluppato da HashiCorp che consente il provisioning dichiarativo in ambienti cloud. In questa architettura Terraform effettua il provisioning e modifica le risorse di Azure in base alle definizioni IaC e supporta flussi di lavoro di sviluppo basati su test.

  • Microsoft Defender for Cloud è una piattaforma di gestione della sicurezza che fornisce la protezione dalle minacce nei carichi di lavoro cloud ibridi. In questa architettura monitora continuamente l'infrastruttura distribuita per individuare le vulnerabilità.

  • Microsoft Sentinel è una soluzione SIEM (Security Information and Event Management) nativa del cloud che usa l'intelligenza artificiale e l'analisi per rilevare e rispondere alle minacce. In questa architettura, Microsoft Sentinel monitora l'attività dell'infrastruttura e genera avvisi o problemi di GitHub quando vengono rilevate anomalie.

  • Criteri di Azure è un servizio di governance che applica regole e conformità tra le risorse di Azure. In questa architettura Criteri di Azure convalida le distribuzioni IaC rispetto agli standard dell'organizzazione e del carico di lavoro e blocca le configurazioni non conformi. Ad esempio, se il progetto sta per distribuire una macchina virtuale con uno SKU non riconosciuto, Criteri di Azure avvisa l'utente e arresta la distribuzione.

  • Monitoraggio di Azure è una piattaforma di telemetria e osservabilità che raccoglie metriche delle prestazioni e log attività dalle risorse di Azure. In questa architettura Monitoraggio di Azure rileva condizioni irregolari nell'infrastruttura e attiva gli avvisi in modo da poter avviare la valutazione e la correzione.

Dettagli dello scenario

DevSecOps per IaC è concettualmente simile a DevSecOps per il codice dell'applicazione nel servizio Azure Kubernetes. Tuttavia, è necessario un set diverso di pipeline e strumenti per gestire e automatizzare l'integrazione continua e il recapito continuo per IaC.

Quando si adotta IaC, è importante creare test di automazione durante lo sviluppo del codice. Questi test riducono la complessità dei test IaC quando il carico di lavoro viene ridimensionato. È possibile usare gli stati di configurazione dell'infrastruttura locale, ad esempio gli stati di Terraform e i piani per lo sviluppo guidato dai test. Questi stati di configurazione emulano le distribuzioni effettive. È possibile eseguire test di integrazione per IaC nelle distribuzioni effettive dell'infrastruttura usando l'API REST di Azure Resource Graph.

PaC è un altro metodo importante per offrire un'infrastruttura conforme alle normative e alla governance aziendale. È possibile aggiungere flussi di lavoro PaC nelle pipeline per automatizzare la governance del cloud.

La protezione dell'infrastruttura nelle prime fasi di sviluppo riduce i rischi di infrastruttura configurata in modo errato che espone punti per gli attacchi dopo la distribuzione. È possibile integrare strumenti di analisi del codice statici come Snyk o Aqua Security Trivy con GitHub Advanced Security per analizzare le vulnerabilità di sicurezza nel codice dell'infrastruttura. Questo processo è simile ai test di sicurezza statici delle applicazioni.

Quando l'infrastruttura viene distribuita e operativa, la deviazione della configurazione cloud può essere difficile da risolvere, soprattutto negli ambienti di produzione.

Configurare entità servizio dedicate per distribuire o modificare l'infrastruttura cloud per gli ambienti di produzione. Rimuovere quindi tutti gli altri accessi che consentono la configurazione manuale dell'ambiente. Se sono necessarie configurazioni manuali, elevare l'accesso per l'amministratore designato e quindi rimuovere l'accesso con privilegi elevati dopo aver apportato la modifica. È consigliabile configurare Monitoraggio di Azure per generare un problema di GitHub in modo che gli sviluppatori possano riconciliare le modifiche. Evitare la configurazione manuale, se possibile.

È importante monitorare continuamente l'ambiente cloud per individuare minacce e vulnerabilità per prevenire gli incidenti di sicurezza. È possibile usare strumenti di protezione dalle minacce e SIEM per rilevare il traffico anomalo. Questi strumenti avvisano automaticamente gli amministratori della sicurezza e generano un problema di GitHub.

Potenziali casi d'uso

Si fa parte di un team centrale di sviluppatori IaC che usa una strategia multicloud per la società fittizia Contoso. Si vuole distribuire l'infrastruttura cloud in una nuova zona di destinazione di Azure usando DevSecOps per IaC per garantire la sicurezza e la qualità delle distribuzioni. Si vuole anche tenere traccia e controllare tutte le modifiche apportate all'infrastruttura.

Collaboratori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autori principali:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi