De ce GitOps este esențial pentru DevSecOps
Publicat: 2022-02-24Câștigurile DevOps în ceea ce privește automatizarea, trasabilitatea și, în special, colaborarea între grupurile și părțile interesate izolate anterior sunt foarte acceptate. Dar, deoarece grupurile DevOps sunt însărcinate în mod semnificativ cu mutarea operațiunilor în medii Kubernetes containerizate, tacticile DevOps îndelungate, încercate și testate, pot aluneca mai scurt. Problemele de securitate – și capcanele – se manifestă și în metode unice.
Informația fantastică este că GitOps servește pentru a completa o selecție de lacune în DevOps pentru stabilitatea mediilor distribuite. Acest lucru se datorează faptului că procesele GitOps sunt foarte favorabile pentru DevSecOps, definite aici ca fiind cele mai eficiente tactici de siguranță care se aplică întregului ciclu de viață al software-ului.
În acest articol, vedem cum GitOps oferă un cadru vital pentru DevSecOps, pentru verificări de siguranță care cresc prin CI/CD, precum și prin fazele de redactare-implementare ale administrării aplicațiilor pe clusterele Kubernetes.
O resursă imuabilă solitară a realității
GitOps poate fi descris ca:
Un design funcțional pentru Kubernetes și alte sisteme indigene din cloud, care oferă un set de cele mai bune proceduri care unifică implementarea, gestionarea și monitorizarea Git pentru clustere și scopuri containerizate.
O cale în direcția unei experiențe practice de dezvoltator pentru a avea grijă de programe exact în cazul în care conductele CI/CD de la final la capăt și fluxurile de lucru Git sunt utilizate pentru fiecare operațiune și dezvoltare.
Git este resursa solitară a adevărului real, așa cum configurația dorită este declarată chiar aici. Există un agent GitOps care rulează în Kubernetes, care compară în mod regulat punctul real din Kubernetes cu punctul căutat salvat în Git. Orice variații noi îmbinate în departamentul monitorizat din Git sunt aplicate instantaneu Kubernetes. Dimpotrivă, orice variație manuală folosită în Kubernetes este revenită mecanic din nou la starea ideală declarată în Git. Deviația de configurare este eliminată.
Git este de obicei descris în mod adecvat ca singura resursă a adevărului real, așa cum se aplică GitOps, datorită compoziției sale imuabile. Printre altele, va ajuta la menținerea unei granițe – nu contrară unui firewall – care separă preocupările între CI și CD. În acest fel, gama de modalități implicate în avansarea aplicației ca parte a CI - solicitări de extragere, screening, comite și așa mai departe. — continuă să fii separat pe Git.
Pentru dezvoltatorul care construiește o cerere de extragere, cererea de extragere pentru, la momentul revizuit și permis, este îmbinată și utilizată în mod obișnuit cu clusterul la următoarea reconciliere - care necesită de obicei 15 minute.
În mod implicit, procesul este bidirecțional - aceasta implică faptul că o modificare produsă direct către Kubernetes este inversată pe Git atunci când rulează viitoarea buclă de reconciliere (în general, la fiecare 15 minute). Chiar și așa, această stare de lucruri este semnificativ mai mică decât cea mai bună, atunci când un membru al forței de muncă DevOps sau, mai rău, un intrus cu actor negativ va face imediat variații clusterelor. Aceste variații direct-la-cluster nu au fost verificate în mod corespunzător prin intermediul solicitărilor de fuziune și aprobărilor și, ca urmare, încalcă teoria GitOps conform căreia Git servește drept sursă imuabilă de adevăr a problemei pe măsură ce are loc deriva.
Ca o alternativă pentru a permite atenuarea apariției derivei, o resursă de verificare GitOps poate trimite alerte dacă în cluster sunt produse modificări care nu au fost utilizate pentru început în Git. Când se întâmplă acest lucru, mulțumită pistei de audit, codul software de pe Git poate schimba apoi modificările defecte concepute pentru clustere, prin controlerele din punctul său implementat în mediul natural de rulare.
În schimb, atunci când imuabilitatea nu este atinsă, poate apărea deriva. Acest lucru s-ar putea concretiza în cazul unui atac de rețea sau atunci când un membru al personalului DevOps modifică din greșeală configurația clusterului, astfel încât să fie diferită de ceea ce este pe Git. Incongruența este semnalată atunci când se întâmplă acest lucru - prin utilizarea echipamentelor GitOps potrivite - simbolizând astfel un DevSecOps prin excelență pe care îl prezintă procesele GitOps.
Aplicațiile adecvate automatizează sistemul de verificare continuă pentru a se asigura că punctul dorit al configurației din depozitul Git se potrivește cu starea reală din clusterul Kubernetes. De asemenea, este folosit pentru a reconcilia și a totaliza implementările imediat ce acestea sunt dedicate efectiv în starea declarată a depozitului.
Gestionarea auditului
Caracteristicile de audit pe care le prezintă GitOps sunt, de asemenea, cruciale pentru ajutorul DevSecOps. Rămânând în depozitul Git ca singura sursă de fapt, toate aplicațiile, codul și configurațiile sunt versionate și păstrează o cale întreagă de audit, care este o necesitate principală pentru orice mediu natural protejat. Această pistă de audit este, de asemenea, oferită în mod egal dezvoltatorilor și membrilor personalului operațional, pentru ca aceștia să observe ce funcționează în cluster (cei mai mulți utilizatori sunt restricționați la acces la configurația cluster-ului doar prin navigare).
Dezvoltatorul poate să nu solicite întotdeauna să depindă de pistele de audit la fel de mult ca funcțiile și clienții personalului DevSecOps, dar pot folosi capacitatea de a înțelege ce variații au apărut și ce a fost unitatea din spatele ajustărilor aduse depozitului care s-au întâmplat. . Pe scurt, pentru dezvoltator - precum și pentru toți membrii personalului DevOps - fiecare lucru este doar la o distanță de jurnal Git.
Traseele de audit pe Git sunt, de asemenea, disponibile și foarte simple pentru constructori, atunci când este necesar. Acest lucru se datorează faptului că moștenirea finală a procesului este capturată în programul Git de raport, pe care constructorii îl înțeleg.
Odată cu disponibilitatea pistei de audit, este, de asemenea, fezabilă să anulați rapid ajustările aplicațiilor care au declanșat dificultăți. Acest lucru este benefic în special atunci când clusterele au fost compromise sau configurate greșit. În acest caz, ca alternativă de a deține pentru a reconstrui un cluster de la zero, pista de audit constă în punctul căutat în repo. Configurația clusterului și programele cu punctul dorit din pista de audit sunt apoi implementate, iar procedura de reconstrucție este automată.
Numărul de „chei ale regatului”

Constructorii depind de obicei de Jenkins, un server de automatizare, pentru a dezvolta, a examina și a ajuta CI/CD pentru fabricarea conductelor pentru mediile Kubernetes. Lipsiți de GitOps, dezvoltatorii ar putea, în orice alt caz, să aibă acces imediat la clusterele Kubernetes, pe măsură ce își implementează codul direct. Cu alte cuvinte și expresii, constructorii – indiferent dacă fac parte din organizație sau sunt un antreprenor care operează de la distanță – ar avea acces imediat la împrejurimile de producție și ar avea „cheile regatului”, deci pentru a conversa. Aceasta este rareori o circumstanță ideală de siguranță.
Tot ceea ce ar alege, în cazul menționat mai devreme, este ca utilizatorul nepotrivit - sau chiar mai rău, totuși, un intrus - să aibă acces la comenzile KubeConfig sau Kubectl la clusterele în producție pe care le-ar putea rula de pe notebook-ul lor. Dacă un atacator a compromis procesul CI și acreditările stabilite, pentru un caz concret, atunci poate avea acces și la orice cluster la care are acces sistemul CI.
Simplul fapt că GitOps ajută la prevenirea utilizatorilor – sau atacatorilor – de la modificarea configurațiilor cluster-ului fără a lăsa urme este în primul rând vital pentru echipele de operațiuni și de siguranță – pe lângă faptul că sprijină reducerea la minimum a sarcinii mentale a dezvoltatorului. Prin obținerea gestionării, de exemplu, dezvoltatorul trebuie să nu aibă, în general, acces direct la nodurile Kubernetes și/sau liniile de comandă kubectl. GitOps reconciliază aproape tot ceea ce constructorii descriu în Git, dar nu va permite accesul manual la clusterele Kubernetes sau mediile de producție, cu excepția faptului că constructorii au permisiuni unice de control al accesului.
DevSecOps de la GitOps funcționează ca o modalitate de a zădărnici această situație de vector de atac pentru CD, protejând astfel „cheile regatului”. Când operatorii GitOps, cum ar fi Flux cu sursă deschisă – suplimentar despre asta mai jos – rulează în Kubernetes și, prin urmare, au acces la clustere, controalele de obținere continuă să fie în cadrul de siguranță Kubernetes. Accesibilitatea consumatorilor este stabilită prin atribuirea de privilegii spațiilor de nume ale unor grupuri distincte și membrilor grupului.
Ca un exemplu al modului în care DevSecOps și GitOps sunt remarcabil de propice pentru o persoană diferită, Secția de Apărare din SUA (DoD), Nicolas Chaillan, ofițer principal de software pentru computer al US Air Power, a descris cu puțin timp în urmă modul în care DevSecOps și GitOps — cu Flux — joacă un rol esențial în dezvoltarea programului său software care sprijină întregul spectru al forțelor de securitate ale SUA.
„Siguranța și securitatea nu sunt negociabile, dar dorim, de asemenea, ca firma dezvoltatorului să sporească eficiența și viteza”, a spus Chaillan.
De exemplu, GitOps este „cheia realizării noastre în configurarea și lansarea Platform Just one în întregul DoD”, susține DoD. Potrivit DoD, System Just one este „un sortiment de distribuții Kubernetes permise, întărite, conform Cloud Indigenous Computing Foundation (CNCF), infrastructură ca manuale de cod și containere întărite”, cu conducte de securitate integrate.
Control și echilibru
Procedurile DevSecOps se combină cu verificările și echilibrările aprovizionării GitOps. În acest fel, comanda de accesibilitate pe care o oferă ajută la prevenirea dezvoltatorului – sau intrusului – să acceseze un depozit de coduri de furnizare pentru a introduce, de exemplu, o ușă în spate, zero-day sau încă o altă formă de vulnerabilitate pe durata CI. procedură. Acest lucru se datorează faptului că toate cererile de extragere sunt revizuite de către colegi.
Cu DevSecOps care acceptă sistemul CI, controalele și echilibrele utilizate înainte de cod sunt dedicate pe Git și implementate în cluster. Dezvoltatorul va posta de obicei o modificare ca cerere de extragere, care este revizuită de colegi. După revizuire și autorizare, codul este îmbinat pe Git, iar fișierul YAML al statului căutat este apoi modificat în consecință.
Condiția dorită va fi aplicată imediat clusterului Kubernetes. După cum sa menționat anterior, echipamentele GitOps corecte cu caracteristici DevSecOps țin evidența constantă a condiției precise în procesul de obiectiv, pentru a se asigura că corespunde ceea ce este declarat pe Git. Se emite o alertă dacă există vreo variație, astfel încât se poate lua o mișcare corectivă.
DevSecOps are opinie
O cantitate de instrumente GitOps ajută DevSecOps. Open supply Flux, pentru un caz concret, ajută la susținerea depozitului Git ca singura sursă imuabilă a adevărului real. Abilitățile Flux se extind și până la reglementarea accesibilității pentru verificări și echilibrări în timpul CI/CD pentru codul care este dedicat și implementat.
Pentru o întâlnire cu Flux mult mai obișnuită, sursa deschisă Weave GitOps Main simplifică primele modalități de a activa automatizarea CI/CD în multe clustere. Sistemul de plasare a unei metode GitOps și DevSecOps cu Weave GitOps Main implică câteva comenzi necomplicate pe o consolă.
Weave GitOps Company a apărut ca platforma inițială GitOps care automatizează livrarea constantă a aplicațiilor și gestionarea operațională automată pentru Kubernetes la orice scară prin arhitecturi hibride cloud, multi-cloud și edge.
Toate cele câteva instrumente ajută la automatizarea monitorizării pentru a garanta că configurația clusterului se potrivește în mod normal cu ceea ce este pe Git pentru a evita deriva. O pistă de audit completă și disponibilă permite ca aplicațiile și configurarea clusterului să fie produse pe o bază esențială - fără a fi nevoie să reconstruiți clusterul de la zero.
În rezumat, GitOps semnifică evoluția DevOps pentru mediile Kubernetes dispersate, deși DevSecOps a apărut ca o modalitate importantă de a menține stabilitatea CI/CD pentru GitOps, prin ciclul de viață al aplicației.
Steve Waterworth este supervizor tehnic de marketing la Weaveworks .