DevSecOps per l'infrastruttura come codice (IaC)

Microsoft Sentinel
Monitoraggio di Azure
GitHub

Idee per le soluzioni

Questo articolo è un'idea di soluzione. Per espandere il contenuto con altre informazioni, ad esempio potenziali casi d'uso, servizi alternativi, considerazioni sull'implementazione o indicazioni sui prezzi, inviare commenti e suggerimenti su GitHub.

Questa idea di soluzione illustra la pipeline DevSecOps usando GitHub per IaC e 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

  1. Con lo sviluppo basato su test, è possibile controllare le modifiche al codice per le definizioni dell'infrastruttura, ad esempio i modelli IaC, nei repository GitHub. Si sviluppano unit test, test di integrazione e PaC contemporaneamente per testare la qualità di IaC.
  2. Le richieste pull attivano unit test automatizzati tramite GitHub Actions.
  3. È possibile configurare il processo del flusso di lavoro di GitHub Actions per testare l'IaC con gli stati e i piani dell'infrastruttura distribuiti in locale.
  4. È possibile configurare GitHub Actions per analizzare la qualità del codice e i problemi di sicurezza. Si usano quindi gli strumenti di analisi della sicurezza basati su CodeQL di GitHub per analizzare le vulnerabilità di sicurezza nell'IaC. 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, dimensioni personalizzate, 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'accesso amministratore designato viene elevato per eseguire le modifiche. Dopo la modifica, l'accesso con privilegi elevati viene rimosso e deve essere registrato un problema in GitHub per la riconciliazione dell'IaC. I passaggi di riconciliazione e la possibilità 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 viene rilevata un'anomalia, un problema deve essere generato automaticamente in GitHub per le correzioni.

Componenti

  • GitHub è una piattaforma di hosting del codice per il controllo della versione e la collaborazione. Un repository di controllo del codice sorgente di GitHub contiene tutti i file di progetto e la relativa cronologia delle revisioni. Gli sviluppatori possono collaborare per contribuire, discutere e gestire il codice nel repository.
  • GitHub Actions offre una suite di flussi di lavoro di compilazione e rilascio che coprono l'integrazione continua (CI), i test automatizzati e le distribuzioni di contenitori.
  • GitHub Advanced Security offre funzionalità per proteggere l'IaC. Richiede un'altra licenza.
  • CodeQL fornisce strumenti di analisi della sicurezza eseguiti nel codice statico per rilevare errori di configurazione dell'infrastruttura.
  • Terraform è un prodotto partner sviluppato da HashiCorp che consente l'automazione dell'infrastruttura in Azure e in altri ambienti.
  • Microsoft Defender for Cloud offre la gestione unificata della sicurezza e la protezione avanzata dalle minacce nei carichi di lavoro su cloud ibrido.
  • Microsoft Sentinel è una soluzione SIEM e soAR (Security Orchestration Automated Response) nativa del cloud. Usa l'intelligenza artificiale avanzata e l'analisi della sicurezza per rilevare e rispondere alle minacce nell'intera azienda.
  • Criteri di Azure consente ai team di gestire e prevenire problemi IT con definizioni di criteri che applicano regole per le risorse cloud. Ad esempio, se il progetto sta per distribuire una macchina virtuale con uno SKU non riconosciuto, Criteri di Azure avvisa l'utente al problema e arresta la distribuzione.
  • Monitoraggio di Azure raccoglie e analizza i dati di telemetria delle app, ad esempio metriche delle prestazioni e log attività. Quando questo servizio identifica condizioni irregolari, avvisa le app e il personale.

Dettagli dello scenario

Concettualmente, DevSecOps per l'infrastruttura come codice (IaC) è 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 (CI/CD) 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 stati di configurazione dell'infrastruttura locale come gli stati di Terraform e i piani per sviluppare lo sviluppo basato su test (TDD) per IaC. 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.

I criteri come codice (PaC) sono anche un 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 all'inizio della fase di sviluppo riduce i rischi di configurazione errata dell'infrastruttura che apre punti per l'attacco dopo la distribuzione. È possibile integrare strumenti di analisi del codice statici per l'infrastruttura come Synk o Aquasecurity tfsec usando CodeQL di GitHub per analizzare i problemi di sicurezza nel codice dell'infrastruttura. Questo processo è simile a Static Application Security Testing (SAST).

Quando l'infrastruttura viene distribuita e operativa, le deviazioni della configurazione cloud possono essere difficili 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 la modifica. È consigliabile configurare Monitoraggio di Azure per generare un problema in GitHub per gli sviluppatori per riconciliare le modifiche. Tuttavia, è consigliabile evitare la configurazione manuale, se possibile.

È importante monitorare continuamente l'ambiente cloud per individuare minacce e vulnerabilità per evitare eventi imprevisti di sicurezza. È possibile usare strumenti di protezione dalle minacce e informazioni sulla sicurezza e gestione degli eventi (SIEM) per rilevare il traffico anomalo. Questi strumenti avvisano automaticamente gli amministratori della sicurezza e generano un problema in GitHub per ricevere attenzione.

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

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Passaggi successivi