Perché GitOps è essenziale per DevSecOps
Pubblicato: 2022-02-24I vantaggi di DevOps per l'automazione, la tracciabilità e, in particolare, la collaborazione tra i gruppi e le parti interessate precedentemente isolati sono ampiamente accettati. Ma poiché i gruppi DevOps hanno il compito significativo di spostare le operazioni in ambienti Kubernetes containerizzati, le lunghe tattiche DevOps tentate e testate possono ridursi. Anche i problemi di sicurezza - e le insidie - si manifestano con metodi unici.
L'informazione fantastica è che GitOps serve a colmare una selezione di lacune in DevOps per la stabilità degli ambienti distribuiti. Ciò è dovuto al fatto che i processi GitOps sono molto favorevoli per DevSecOps, definiti qui come le tattiche più efficaci per la sicurezza che si applicano all'intero ciclo di vita del software.
In questo articolo, diamo un'occhiata a come GitOps offre un framework vitale per DevSecOps, per i controlli di sicurezza che aumentano tramite CI/CD, nonché attraverso le fasi di riscrittura e distribuzione dell'amministrazione delle applicazioni sui cluster Kubernetes.
Una risorsa solitaria immutabile della realtà
GitOps può essere descritto come:
Un design funzionante per Kubernetes e altri sistemi indigeni del cloud, fornendo una serie di procedure ottimali che unificano la distribuzione, la gestione e il monitoraggio di Git per cluster e scopi containerizzati.
Un percorso nella direzione di un'esperienza pratica per sviluppatori per prendersi cura di programmi esattamente in cui le pipeline CI/CD end-to-end e i flussi di lavoro Git vengono utilizzati per ogni operazione e sviluppo.
Git è la risorsa solitaria della verità reale, poiché la configurazione desiderata è dichiarata proprio qui. C'è un agente GitOps che funziona all'interno di Kubernetes, confronta regolarmente il punto reale all'interno di Kubernetes con il punto ricercato salvato in Git. Qualsiasi nuova variazione unita al reparto monitorato in Git viene applicata immediatamente a Kubernetes. Al contrario, qualsiasi variazione del manuale utilizzata per Kubernetes viene ripristinata meccanicamente allo stato ideale dichiarato in Git. La deriva della configurazione è eliminata.
Git è solitamente giustamente descritto come l'unica risorsa di verità reale in quanto si applica a GitOps, grazie alla sua composizione immutabile. Tra le altre cose, aiuterà a mantenere un confine, non contrario a un firewall, che separa le preoccupazioni tra CI e CD. In questo modo, la gamma di modi coinvolti nell'avanzamento dell'applicazione come parte di CI: pull request, screening, commit e così via. — continua a essere separato su Git.
Per lo sviluppatore che crea una richiesta pull, la richiesta pull, al momento rivista e consentita, viene unita e utilizzata di routine nel cluster nella riconciliazione in arrivo, che di solito richiede 15 minuti.
Per impostazione predefinita, il processo è bidirezionale: ciò implica che una modifica prodotta direttamente su Kubernetes viene ricambiata su Git quando viene eseguito il ciclo di riconciliazione futuro (generalmente ogni 15 minuti). Anche così, questo stato di cose è significativamente inferiore al migliore, quando un membro della forza lavoro DevOps o, peggio ancora, un intruso con attore negativo apporterà immediatamente variazioni ai cluster. Queste variazioni dirette al cluster non sono state adeguatamente controllate mediante richieste di unione e approvazioni e, di conseguenza, violano la teoria GitOps di Git che funge da fonte immutabile di verità della questione quando si verifica la deriva.
In alternativa per consentire il verificarsi di una deriva attenuata, una risorsa di controllo GitOps può inviare avvisi se vengono apportate modifiche al cluster che non sono state inizialmente utilizzate in Git. Quando ciò accade, grazie all'audit trail, il codice software su Git può quindi scambiare le modifiche difettose progettate per i cluster, tramite i controller nel suo punto di distribuzione nell'ambiente naturale di runtime.
Al contrario, quando l'immutabilità non viene raggiunta, può verificarsi una deriva. Ciò potrebbe verificarsi durante un attacco alla rete o quando un membro dello staff DevOps altera inavvertitamente la configurazione del cluster in modo che sia diversa da quella che si trova su Git. L'incongruenza viene segnalata quando ciò accade, attraverso l'uso della giusta attrezzatura GitOps, a simboleggiare così un DevSecOps per eccellenza che i processi GitOps presentano.
Applicazioni appropriate automatizzano il sistema di controllo continuo per garantire che il punto di uscita desiderato della configurazione sul repository Git corrisponda al vero stato nel cluster Kubernetes. Viene anche utilizzato per riconciliare e completare le distribuzioni non appena vengono effettivamente dedicate nella condizione dichiarata del repository.
Gestione dell'audit
Anche le funzionalità di controllo presentate da GitOps sono cruciali per l'aiuto di DevSecOps. Rimanendo sul repository Git come unica fonte di informazioni, tutte le applicazioni, il codice e le configurazioni sono sottoposte a versionamento e mantengono un intero percorso di audit, che è una necessità principale per qualsiasi ambiente naturale protetto. Questo audit trail viene solitamente offerto anche agli sviluppatori e ai membri del personale operativo, in modo che possano notare cosa sta operando nel cluster (la maggior parte degli utenti è limitata all'accessibilità di sola navigazione alla configurazione del cluster).
Lo sviluppatore potrebbe non richiedere sempre di dipendere dagli audit trail come fanno le funzioni e i clienti del personale DevSecOps, ma può sfruttare la capacità di comprendere quali variazioni sono emerse e quale sia l'unità dietro le modifiche al repository che sono avvenute . In poche parole, per lo sviluppatore, così come per tutti i membri dello staff di DevOps, ogni cosa è solo un log di Git.
Sono disponibili anche audit trail su Git e molto semplici da visualizzare quando necessario. Ciò è dovuto al fatto che l'eredità finale del processo è catturata nel programma di report Git, che i costruttori comprendono.
Con la disponibilità dell'audit trail, è anche possibile ripristinare rapidamente le modifiche alle app che hanno provocato difficoltà. Ciò è particolarmente vantaggioso quando i cluster sono stati compromessi o configurati in modo errato. In questo caso, in alternativa al possesso di ricostruire un cluster da zero, l'audit trail è costituito dal punto ricercato nel repo. La configurazione del cluster ei programmi con il punto desiderato dall'audit trail vengono quindi distribuiti e la procedura di ricostruzione è automatica.
Numero di "chiavi del regno"

I costruttori di solito dipendono da Jenkins, un server di automazione, per lo sviluppo, l'esame e l'assistenza CI/CD per la produzione di pipeline per ambienti Kubernetes. Senza GitOps, gli sviluppatori potrebbero in ogni altro caso avere l'accessibilità immediata ai cluster Kubernetes mentre distribuiscono il loro codice direttamente. In altre parole e frasi, i costruttori, indipendentemente dal fatto che siano componenti dell'organizzazione o un appaltatore che opera in remoto, avrebbero un'accessibilità immediata all'ambiente di produzione e avrebbero le "chiavi del regno", quindi per conversare. Questa è raramente una circostanza di sicurezza ideale.
Tutto ciò che sceglierebbe, nel caso menzionato in precedenza, è che l'utente improprio (o peggio ancora, un intruso) abbia l'accessibilità dei comandi KubeConfig o Kubectl ai cluster nella produzione che potrebbero eseguire dal proprio notebook. Se un utente malintenzionato ha compromesso il processo CI e le credenziali stabilite, ad esempio, può anche avere accessibilità a qualsiasi cluster a cui il sistema CI ha accesso.
Il semplice fatto che GitOps aiuti a evitare che gli utenti, o gli aggressori, modifichino le configurazioni dei cluster senza lasciare traccia è fondamentale soprattutto per i team operativi e di sicurezza, oltre a ridurre al minimo il carico mentale dello sviluppatore. Per ottenere Manage, ad esempio, lo sviluppatore deve generalmente non avere accesso diretto ai nodi Kubernetes e/o alle righe di comando kubectl. GitOps riconcilia praticamente tutto ciò che i builder delineano in Git, ma non consentirà l'accessibilità manuale ai cluster Kubernetes o agli ambienti di produzione, tranne per il fatto che i builder hanno autorizzazioni di controllo dell'accesso univoche.
DevSecOps di GitOps è un modo per contrastare questa situazione di vettore di attacco per CD, proteggendo così le "chiavi del regno". Quando gli operatori GitOps, come l'open source Flux - ulteriori informazioni su questo in basso - vengono eseguiti all'interno di Kubernetes e di conseguenza hanno l'accessibilità ai cluster, i controlli di acquisizione continuano a essere all'interno del framework di sicurezza di Kubernetes. L'accessibilità dei consumatori viene stabilita assegnando privilegi agli spazi dei nomi di gruppi distinti e membri del gruppo.
Come esempio di come DevSecOps e GitOps siano notevolmente favorevoli a una persona diversa, la Sezione della Difesa statunitense (DoD), Nicolas Chaillan, principale responsabile del software per computer della US Air Power, ha descritto poco tempo fa come DevSecOps e GitOps — con Flux — svolge un ruolo fondamentale nell'avanzamento del suo programma software che supporta l'intero spettro delle forze di sicurezza statunitensi.
"Sicurezza e protezione non sono negoziabili, ma vogliamo anche che l'azienda autonoma degli sviluppatori migliori l'efficienza e la velocità", ha affermato Chaillan.
Ad esempio, GitOps è la "chiave per i nostri risultati nella creazione e implementazione di Platform Just one in tutto il DoD", afferma il DoD. Secondo il DoD, System Just one è "un assortimento di distribuzioni Kubernetes consentite e rinforzate conformi alla Cloud Indigenous Computing Foundation (CNCF), infrastrutture come playbook di codici e contenitori rinforzati", con pipeline di sicurezza integrate.
Pesi e contrappesi
Le procedure DevSecOps si combinano con i controlli e i bilanci di fornitura di GitOps. In questo modo, il comando di accessibilità che fornisce aiuta a impedire allo sviluppatore - o all'intruso - di accedere a un repository di codice di fornitura per introdurre, a titolo illustrativo, una backdoor, zero-day o ancora un'altra forma di vulnerabilità per la durata del CI procedura. Questo è semplicemente perché tutte le richieste pull sono sottoposte a revisione paritaria.
Con DevSecOps che supporta il sistema CI, i controlli e i saldi utilizzati prima del codice sono dedicati su Git e distribuiti nel cluster. Lo sviluppatore pubblicherà normalmente una modifica come richiesta pull, che viene sottoposta a revisione paritaria. Dopo essere stato esaminato e autorizzato, il codice viene unito su Git e il file YAML dello stato ricercato viene quindi modificato di conseguenza.
La condizione desiderata verrà immediatamente applicata al cluster Kubernetes. Come accennato in precedenza, l'attrezzatura GitOps corretta con le funzionalità DevSecOps tiene costantemente traccia della condizione precisa nel processo di obiettivo, per assicurarsi che ricambia ciò che è dichiarato su Git. In caso di variazione viene emesso un avviso, quindi è possibile eseguire un'azione correttiva.
DevSecOps supponeva
Una quantità di strumenti GitOps assiste DevSecOps. La fornitura aperta Flux, per esempio, aiuta a sostenere il repository Git come l'unica fonte immutabile di verità reale. Le capacità di Flux si estendono anche alla regolazione dell'accessibilità per controlli e equilibri durante CI/CD per il codice dedicato e distribuito.
Per un incontro con Flux molto più supponente, l'open source Weave GitOps Main semplifica i primi modi per abilitare l'automazione di CI/CD in molti cluster. Il sistema di posizionamento di un metodo GitOps e DevSecOps con Weave GitOps Main prevede un paio di comandi semplici su una console.
Weave GitOps Company è emersa come la piattaforma GitOps iniziale che automatizza la spedizione costante delle applicazioni e la gestione operativa automatica per Kubernetes su qualsiasi scala attraverso architetture cloud ibride, multi-cloud ed edge.
Tutti i pochi strumenti aiutano ad automatizzare il monitoraggio per garantire che la configurazione del cluster corrisponda normalmente a quella presente su Git per evitare la deriva. Un audit trail completo e disponibile consente di produrre rollback delle applicazioni e della configurazione del cluster su una base essenziale, senza dover ricostruire il cluster da zero.
In sintesi, GitOps rappresenta l'evoluzione di DevOps per ambienti Kubernetes dispersi, sebbene DevSecOps sia emerso come un modo importante per mantenere la stabilità CI/CD per GitOps, attraverso il ciclo di vita dell'applicazione.
Steve Waterworth è Technical Marketing Supervisor presso Weaveworks .