TSM - De la DevOps la DevSecOps

Tudor Voicu Rogojan - Senior DevOps Engineer @ Cognizant Romania

Adoptarea practicilor DevOps care, în esență, reprezintă colaborarea strânsă dintre echipele de dezvoltatori și operațiuni a devenit un standard în industrie, mai ales în ultimii 10 ani, datorită așteptării consumatorilor de produse și servicii digitale ca firmele să poată satisface nevoile lor într-un timp scurt fără sacrificarea calității acestora, dar și datorită nevoii companiilor de a se putea adapta rapid atât așteptărilor consumatorilor, cât și schimbărilor din piață, păstrându-și profitabilitatea.

Conceput inițial ca o punte de legătură între echipele de dezvoltare (DEV) și de operațiuni IT (Ops), metodologia DevOps a revoluționat industria dezvoltatoare de software, îmbunătățind viteza și calitatea printr-o cultură a colaborării și a unei suite de tool-uri și procese pentru automatizare, dar și CI/CD.

Scurt istoric

Conceptul DevOps își are originile în 2009 și a devenit public în cadrul unei prezentări numite "10+ Deploys a Day: Dev and Ops Cooperation at Flickr" a lui John Allspaw (Flickr/Yahoo!) and Paul Hammond (Flickr) la un eveniment organizat de O'Reilly, dar practicile și cultura DevOps au evoluat din abordarea practicilor de producție de tip lean (concept administrativ care consideră că cheltuielile de resurse pentru orice alt scop decât crearea de valoare pentru clientul final este o risipă și, astfel, o țintă pentru eliminare) ale companiei Toyota.

Aceste abordări fac parte din sistemul de management integrat și de producție al companiei Toyota, numit și Toyota Production System (TPS) bazat pe concepte cheie similare cu DevOps precum automatizarea cu intervenție umană, îmbunătățirea continuă și producția just in time.

De ce DevSecOps?

Asemănător industriei Automotive, aceste concepte au permis scalarea rapidă a proceselor de dezvoltare și implementare a codului (a deployment-ului), păstrând calitatea. Practicile vechi de securitate nu au reușit să ajute prea mult la securizarea în mod eficient a aplicațiilor moderne din era DevOps din considerente precum:

  1. Ritmul crescut al schimbărilor: Introducerea practicilor DevOps în paralel cu apariția infrastructurilor în cloud-uri publice (Azure, AWS, Google Cloud), private (OpenStack) sau hibride a însemnat o creștere a ritmului de schimbare pentru mediile de dezvoltare, testare și productie a aplicatiilor. Tehnologiile și procesele vechi de securitate au fost concepute pentru infrastructuri rigide on-premise sau centre de date tradiționale, ele fiind tributare metodologiei Waterfall care a precedat metodologia Agile, populară în prezent.

  2. Dezvoltarea aplicațiilor native în cloud: Securitatea on-premise opera în cadrul unui parametru bine definit, pe când suprafața de atac a arhitecturilor în cloud este mult mai mare, având un perimetru mult mai slab definit.

  3. Containerizarea și Infrastructure as Code (IaC): Proliferarea containerizării și folosirea conceptului de Infrastructure as Code, ceea ce reprezintă managementul infrastructurii, atât la nivel extern (în cloud), dar și intern (OS) mediului de dezvoltare, a lăsat ușa deschisă pentru greșeli de configurare care nu sunt tratate de către procesele și tool-urile tradiționale de securitate.

Combinația celor 3 factori de mai sus a însemnat că responsabilitatea primară pentru securitatea codului la fiecare release cade acum mai mult asupra dezvoltatorilor, decât asupra persoanelor responsabile pentru operațiuni (administratori de servere, de rețea, de sisteme.)

Pe măsură ce termenele de implementare s-au accelerat și fiabilitatea software-ului s-a îmbunătățit, a devenit clar că securitatea trebuie să fie mai mult decât un un simplu checkpoint la finalul procesului de release, adică securitatea trebuie "să se deplaseze la stânga" (de aici și conceptul de shift to the left) pentru deveni o parte intrinsecă a procesului de dezvoltare (SDLC) încă de la început.

Sursa: Atlassian

Practic, în locul unei inspecții finale a codului chiar înainte de release, securitatea trebuie să devină parte integrală a procesului de dezvoltare (SDLC), ceea ce înseamnă ca DevSecOps este evoluția naturală a metodologiei DevOps și implementarea acesteia reprezintă valorificarea componentei de securitate în ceea ce privește crearea și menținerea codului. Putem spune că DevSecOps s-a născut din DevOps.

Această abordare proactivă pledează pentru integrarea timpurie a practicilor și a instrumentelor de securitate, obiectivul fiind clar: identificarea și abordarea vulnerabilităților mult mai repede, făcând dezvoltarea mai sigură și mai eficientă.

Evitarea confuziilor

Deoarece ambele modele de practici conțin multe similarități și se bazează atât pe colaborare, cât și pe automatizare, există riscul apariției unor confuzii.

Dacă ar fi să gândim în termeni simpli, am putea compară DevOps vs DevSecOps în felul următor:

Toate echipele ce au implementat practici DevSecOps folosesc practici DevOps, dar nu toate echipele DevOps folosesc practici DevSecOps.

DevSecOps se concentrează pe conceptul de "shifting security to left" amintit mai sus, ceea ce reprezintă dezvoltarea activă a unor aplicații securizate, în locul practicii tradiționale de a securiza ulterior aplicația sau componenta realizată.

Importanța DevSecOps crește, mai ales în contextul dezvoltării soluțiilor bazate pe ML care, în mod inevitabil, vor duce la construirea de aplicații mult mai complexe, atât din punctul de vedere al codului, mai ales în ceea ce privește cantitatea (deoarece în aceste vremuri vorbim de o democratizare a posibilității de a scrie cod de către nespecialiști), cât și din punctul de vedere al operațiunilor.

Este foarte puțin probabil ca îngrijorările multor oameni care lucrează în domeniul dezvoltării software în ceea ce privește cariera lor să nu se materializeze, fiind foarte probabil să asistăm la un efect invers, adică să asistăm la o cerere mai mare de forță de muncă, dar și la o specializare mult mai mare a profesiilor datorită complexității rezultate, având în vedere faptul că "automatizarea muncii" este un fenomen constant în industria noastră.

Înțelegerea practicilor DevOps și DevSecOps, este deosebit de importantă pentru echipele care vor să își îmbunătățească workflow-urile, să își îmbunătățească produsele din punctul de vedere al calității și să se asigure că securitatea acestor aplicații nu este lăsată în urmă sau privită ca o simplă extensie.

Sursa: NovelVista

Asemănări și deosebiri între DevOps și DevSecOps

Având în vedere că ambele metodologii pun accent pe colaborare, automatizare, îmbunătățire continuă și responsabilitate comună, DevSecOps punând accent specific pe integrarea securității în procesul de dezvoltare, putem sintetiza asemănările și deosebirile în Tabelul următor.

Aspect DevOps DevSecOps
Obiectiv principal Dezvoltare și livrare software mai Livrare software sigură și rezistentă,
rapidă și mai eficientă. cu accent pe securitatea continuă.
Colaborare Cultura DevOps pune accent pe DevSecOps extinde colaborarea, prin
colaborarea dintre echipele de includerea echipelor de securitate,
dezvoltare și operațiuni în vederea promovând o cultură a responsabilității
eficientizării procesului de dezvoltare. comune.
Automatizare Cultura DevOps susține automatizarea DevSecOps include în automatizare și
proceselor de dezvoltare, testare și procese de securitate precum scanarea
implementare, urmărind ca scop final vulnerabilităților și testarea
eficiența și fiabilitatea. securității.
Integrare continua / Livrare continua Cultura DevOps încurajează folosirea DevSecOps integrează testele de
(CI/CD) pipeline-urilor CI/CD pentru securitate și verificările de
release-uri rapide și fiabile. conformitate în pipeline pentru
asigurarea implementării securizate a
feature-urilor.
Schimbări culturale Cultura DevOps reprezintă o schimbare DevSecOps reprezintă o schimbare
culturală către proprietate comună, culturală care pune accent pe
transparență și îmbunătățire continuă. conștientizarea nevoii de securitate și
colaborarea între echipe.
Eficienta Accelerarea release-urilor și sporirea DevSecOps pune accent pe eficiență, dar
eficienței reduce timpul de lansare pe adaugă un nivel de integrare a
piață. securității pentru a asigura
conformitatea și reziliența.
Responsabilitate comuna Cultura DevOps stimulează DevSecOps extinde responsabilitatea
responsabilitatea comună pentru calitate comună a echipei, incluzând securitatea,
și performanță între echipele de făcând-o responsabilitatea tuturor în
dezvoltare și operațiuni. cadrul SDLC.
Focalizare Cultura DevOps promovează colaborarea DevSecOps promovează integrarea
între echipele de dezvoltare și practicilor de securitate în procesul
operațiuni pentru a eficientiza livrarea DevOps pentru a asigura release-uri
software-ului. sigure și reziliente.
Implicarea echipei Echipe de dezvoltare și operațiuni DevSecOps promovează colaborarea între
integrate într-un colectiv comun. echipele de dezvoltare, operațiuni și
securitate.
Ciclu de viată Dezvoltare și livrare de software. Securitatea este integrată în fiecare
pas al ciclului de dezvoltare (SDLC).
Tool-uri și tehnologii Tool-uri CI/CD, configuration Tool-uri pentru testarea securității,
management, tool-uri pentru vulnerabilităților, sisteme de tip
monitorizare, infrastructure as code security information and event
(IaC). management (SIEM).

Tranziția pas cu pas de la DevOps la DevSecOps

  1. Înțelegerea diferențelor:

  2. Adoptarea unui mindset de tip Security First.

  3. Familiarizarea cu tool-urile și framework-urile de securitate moderne. O parte cheie a acestei tranziții implică utilizarea instrumentelor potrivite. Putem începe prin a ne familiariza cu instrumente ce se integrează perfect în pipeline-urile CI/CD existente, precum:

  4. Încorporarea securității în pipeline-urile de CI-CD. Ar trebui automatizate porți de securitate în pipeline-urile CI/CD fără a cauza încetinirea release-urilor, prin implementarea de practici precum:

  5. Investiții în training de securitate pentru toate echipele.

  6. Concentrarea pe conformitate (Compliance) și guvernanță (Governance).

  7. Măsurarea succesului prin KPIs și procese de îmbunătățire continuă.

Concluzie

Tranziția de la DevOps la DevSecOps reprezintă o investiție strategică, atât în materie de securitate, cât și de agilitate. Ea necesită o schimbare a mentalității, a modului de formare continuă a echipelor, a integrării tool-urilor și un angajament pentru îmbunătățire continuă. Având securitatea aplicației inclusă în fiecare pas al procesului de dezvoltare software (SDLC), nu doar că reușim să reducem riscurile, dar câștigăm și un avantaj competitiv, construind produse mai reziliente care inspiră încredere atât clienților cât și partenerilor noștri.

Surse imagini:

  1. https://www.atlassian.com/devops/devops-tools/devsecops-tools

  2. https://wac-cdn.atlassian.com/dam/jcr:5f26d67b-bed6-4be1-912b-4032de4d06b0/devsecops-diagram.png?cdnVersion=2418

  3. https://www.novelvista.com/blogs/devops/devops-bs-devsecops

  4. https://www.novelvista.com/resources/images/blogs/details/devops-bs-devsecops.webp