DevSecOps per l'infrastruttura come codice (IaC)
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
Scaricare un file di Visio di questa architettura.
Flusso di dati
Il flusso di dati seguente corrisponde al diagramma precedente:
Usare lo sviluppo basato su test per controllare le modifiche del codice per le definizioni dell'infrastruttura, ad esempio i modelli IaC, nei repository GitHub. Si sviluppano unit test, test di integrazione e criteri come codice (PaC) contemporaneamente per testare la qualità dell'IaC.
Le richieste pull attivano unit test automatizzati tramite GitHub Actions.
Configurare il processo del flusso di lavoro di GitHub Actions per testare l'IaC usando gli stati e i piani dell'infrastruttura distribuiti in locale.
Configurare GitHub Actions per analizzare la qualità del codice e i problemi di sicurezza. Creare query Personalizzate di GitHub CodeQL 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.
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.
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. È anche consigliabile registrare un problema di GitHub per la riconciliazione dell'IaC. I passaggi e gli approcci di riconciliazione dipendono dagli strumenti IaC specifici.
SecOps monitora e difende continuamente dalle minacce e dalle vulnerabilità della sicurezza. Criteri di Azure applica la governance del cloud.
Quando viene rilevata un'anomalia, viene registrato automaticamente un problema di GitHub in modo che possa essere risolto.
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, 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 (Security Information and Event Management) nativa del cloud e soAR (Security Orchestration Automated Response). 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 i problemi IT usando definizioni di criteri che possono applicare regole per le risorse cloud. Ad esempio, se il progetto sta per distribuire una macchina virtuale con uno SKU non riconosciuto, Criteri di Azure segnala il 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 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 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 Synk o Aqua Security tfsec usando CodeQL di GitHub 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, 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 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:
- Il Mento di Siteo | Senior Cloud Solution Architect
- Yee Shian Lee | Senior Cloud Solution Architect
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Prendere in considerazione gli strumenti IaC preferiti da usare per DevSecOps e assicurarsi che siano dotati di estensioni per eseguire l'analisi della sicurezza IaC.
- Prendere in considerazione il linguaggio o i modelli IaC preferiti, Bicep o Terraform in Azure.
- Guida a GitHub per le organizzazioni
- Usare GitHub Actions per connettersi ad Azure
- GitHub Actions
- Cosa si intende per conformità Zero Trust?
- Modelli di AzOps per Azure Resource Manager
- Modulo e soluzioni delle zone di destinazione terraform
- Introduzione a IaC con Bicep