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.
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.
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:
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.
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.
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ă.
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
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). |
Înțelegerea diferențelor:
Adoptarea unui mindset de tip Security First.
Trecerea de la DevOps la DevSecOps necesită o schimbare culturală sau, mai bine zis, o schimbare a modului de gândire. Securitatea nu mai poate fi lăsată la finalul ciclului de release, ea trebuie să devină o responsabilitate comună a tuturor membrilor echipei. Fiecare developer, DevOps engineer, QA engineer trebuie să învețe să gândească proactiv și să prevadă potențialele riscuri de securitate de la bun început.
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:
Static Application Security Testing (SAST): SonarQube, Checkmarx
Dynamic Application Security Testing (DAST): OWASP ZAP, Burp Suite
Container Security: Aqua Security, Falco
Secrets Management: HashiCorp Vault, AWS Secrets Manager
Î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:
Automated Security Testing: Integrarea de teste care detectează vulnerabilitățile în timp ce codul trece prin procesele de build.
Infrastructure as Code (IaC) Security: Folosirea tool-urilor IaC precum Terraform împreună cu tool-urile de validare a securității IaC pentru a ne asigura că infrastructura respectă bunele practici în materie de securitate.
Investiții în training de securitate pentru toate echipele.
Investirea în programe de formare continuă în ceea ce privește secure coding practices, modelarea amenințărilor (threat modeling) și procese de răspuns la incidente.
Concentrarea pe conformitate (Compliance) și guvernanță (Governance).
Folosirea de tool-uri automate pentru compliance monitoring pentru a ne asigura că procesele respectă standarde precum GDPR, ISO 27001 sau PCI DSS.
Măsurarea succesului prin KPIs și procese de îmbunătățire continuă.
Pentru a urmări eficacitatea tranziției, putem stabili indicatori cheie de performanță (KPI) care se aliniază cu obiectivele de securitate, precum:
Vulnerabilitățile MTTD (Mean Time to Detect).
Incidentele de securitate MTTR (Mean Time to Resolve).
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.
de Alin Turcu
de Ovidiu Mățan