Automaattinen koodin laatu- ja tietoturvatestaus : DevSecOps-pipeline Azure-ympäristössä
Aikio, Samuel (2026)
Aikio, Samuel
2026
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202604176794
https://urn.fi/URN:NBN:fi:amk-202604176794
Tiivistelmä
Ohjelmistokehityksen nopeutunut julkaisutahti on tehnyt tietoturvan varmistamisesta keskeisen haasteen nykyaikaisessa kehitysympäristössä. Opinnäytetyö toteutettiin organisaatiossa, jonka jatkuvan integraation (Continuous Integration, CI) prosessi sisälsi tietoturvatarkistuksia vain osittain ja pääosin manuaalisesti suoritettuina. Työn tavoitteena oli rakentaa DevSecOps-periaatteiden mukainen automaattinen CI-putki Microsoft Azure DevOps -ympäristöön sekä toteuttaa keskitetty raportointiratkaisu tietoturvan ja laadun seurantaan.
Opinnäytetyön tietoperusta muodostui DevOps- ja DevSecOps-toimintamalleista, CI/CD-putken periaatteista sekä keskeisistä tietoturvatestausmenetelmistä, kuten staattisesta sovellusturvatestauksesta (Static Application Security Testing, SAST) ja ohjelmistoriippuvuuksien analyysista (Software Composition Analysis, SCA). Sopivimpien tietoturvatyökalujen valinta suoritettiin päätösmatriisimenetelmällä, jossa vertailtiin työkaluja kuuden kriteerin perusteella. Vertailun pohjalta ratkaisuun valittiin Snyk, Gitleaks sekä Psalm niiden teknisen yhteensopivuuden ja Azure DevOps -integraatiomahdollisuuksien perusteella.
Toteutusvaiheessa rakennettiin YAML-pohjainen monivaiheinen putki, johon integroidut työkalut suorittavat salaisuuksien skannauksen, koodin staattisen analyysin sekä riippuvuuksien tietoturvatarkistukset. Putkeen määritettiin automaattiset kynnysarvot, jotka keskeyttävät koodin etenemisen, mikäli kriittisiä haavoittuvuuksia havaitaan. Pitkän aikavälin seurantaa varten putken tuottamat metriikat ohjattiin Azure Log Analytics -palveluun ja visualisoitiin Grafana-dashboardilla.
Tuloksena syntynyt ratkaisu siirsi tietoturvatarkistukset osaksi jokaista koodimuutosta toteuttaen DevSecOpsin Shift Left -periaatteen. Automaatio paransi haavoittuvuuksien havaitsemiskykyä merkittävästi ja teki tietoturvasta mitattavan osan kehitysprosessia. Jatkokehityskohteina tunnistettiin dynaamisen sovellusturvatestauksen (Dynamic Application Security Testing, DAST) integrointi sekä automaattisten korjausehdotusten laajempi käyttöönotto. The accelerating release pace of software development has made ensuring security a key challenge in modern development environments. The thesis was implemented in an organization whose continuous integration (CI) process included security checks only partially, and these were mainly performed manually. The objective of the work was to build an automated CI pipeline aligned with DevSecOps principles in a Microsoft Azure DevOps environment, and to implement a centralized reporting solution for monitoring security and quality.
The theoretical foundation of the thesis consisted of DevOps and DevSecOps operating models, CI/CD pipeline principles, and key security testing methods such as Static Application Security Testing (SAST) and Software Composition Analysis (SCA). The selection of the most suitable security tools was carried out using a decision matrix method, in which tools were compared based on six criterias. Based on the comparison, Snyk, Gitleaks, and Psalm were selected for the solution due to their technical compatibility and Azure DevOps integration capabilities.
During the implementation phase, a YAML-based multi-stage pipeline was developed where integrated tools execute secret scanning, static code analysis and security checks for dependencies. The pipeline was configured with automatic thresholds, halting code integration when critical vulnerabilities are identified. To monitor the logs for a longer period, the output metrics generated from the pipeline were uploaded to Azure Log Analytics and visualized in Grafana dashboard.
The resulting solution incorporated security checks into every code change, implementing the DevSecOps Shift Left principle. Automation significantly improved the vulnerability detection capability and made the security a measurable part of the development process. Integration of Dynamic Application Security Testing (DAST) and broader adoption of automated remediation suggestions were identified as areas for future development.
Opinnäytetyön tietoperusta muodostui DevOps- ja DevSecOps-toimintamalleista, CI/CD-putken periaatteista sekä keskeisistä tietoturvatestausmenetelmistä, kuten staattisesta sovellusturvatestauksesta (Static Application Security Testing, SAST) ja ohjelmistoriippuvuuksien analyysista (Software Composition Analysis, SCA). Sopivimpien tietoturvatyökalujen valinta suoritettiin päätösmatriisimenetelmällä, jossa vertailtiin työkaluja kuuden kriteerin perusteella. Vertailun pohjalta ratkaisuun valittiin Snyk, Gitleaks sekä Psalm niiden teknisen yhteensopivuuden ja Azure DevOps -integraatiomahdollisuuksien perusteella.
Toteutusvaiheessa rakennettiin YAML-pohjainen monivaiheinen putki, johon integroidut työkalut suorittavat salaisuuksien skannauksen, koodin staattisen analyysin sekä riippuvuuksien tietoturvatarkistukset. Putkeen määritettiin automaattiset kynnysarvot, jotka keskeyttävät koodin etenemisen, mikäli kriittisiä haavoittuvuuksia havaitaan. Pitkän aikavälin seurantaa varten putken tuottamat metriikat ohjattiin Azure Log Analytics -palveluun ja visualisoitiin Grafana-dashboardilla.
Tuloksena syntynyt ratkaisu siirsi tietoturvatarkistukset osaksi jokaista koodimuutosta toteuttaen DevSecOpsin Shift Left -periaatteen. Automaatio paransi haavoittuvuuksien havaitsemiskykyä merkittävästi ja teki tietoturvasta mitattavan osan kehitysprosessia. Jatkokehityskohteina tunnistettiin dynaamisen sovellusturvatestauksen (Dynamic Application Security Testing, DAST) integrointi sekä automaattisten korjausehdotusten laajempi käyttöönotto.
The theoretical foundation of the thesis consisted of DevOps and DevSecOps operating models, CI/CD pipeline principles, and key security testing methods such as Static Application Security Testing (SAST) and Software Composition Analysis (SCA). The selection of the most suitable security tools was carried out using a decision matrix method, in which tools were compared based on six criterias. Based on the comparison, Snyk, Gitleaks, and Psalm were selected for the solution due to their technical compatibility and Azure DevOps integration capabilities.
During the implementation phase, a YAML-based multi-stage pipeline was developed where integrated tools execute secret scanning, static code analysis and security checks for dependencies. The pipeline was configured with automatic thresholds, halting code integration when critical vulnerabilities are identified. To monitor the logs for a longer period, the output metrics generated from the pipeline were uploaded to Azure Log Analytics and visualized in Grafana dashboard.
The resulting solution incorporated security checks into every code change, implementing the DevSecOps Shift Left principle. Automation significantly improved the vulnerability detection capability and made the security a measurable part of the development process. Integration of Dynamic Application Security Testing (DAST) and broader adoption of automated remediation suggestions were identified as areas for future development.
