Security Testing Automatisering: Geautomatiseerde Beveiligingstests In CI/CD Pipelines

💼 Management Samenvatting

Security testing automatisering vormt een kritieke component van moderne DevSecOps-praktijken binnen Nederlandse overheidsorganisaties. Het gaat om het integreren van geautomatiseerde beveiligingstests zoals SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), dependency scanning, container scanning en infrastructure-as-code scanning in CI/CD pipelines, zodat beveiligingsproblemen vroegtijdig worden gedetecteerd voordat code wordt gedeployed naar productie. Zonder adequate security testing automatisering kunnen kwetsbaarheden onopgemerkt blijven totdat zij worden misbruikt door aanvallers, wat kan leiden tot datalekken, service-onderbrekingen en compliance-schendingen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
100u (tech: 60u)
Van toepassing op:
Azure DevOps
GitHub Actions
GitLab CI/CD
Jenkins
CI/CD Pipelines
DevSecOps

Zonder geautomatiseerde security testing in CI/CD pipelines lopen Nederlandse overheidsorganisaties aanzienlijke beveiligingsrisico's. Kwetsbaarheden in applicatiecode, onveilige dependencies, kwetsbare container images en onveilige infrastructure-as-code configuraties kunnen onopgemerkt blijven totdat zij worden misbruikt door aanvallers. Dit risico is bijzonder hoog wanneer security testing handmatig wordt uitgevoerd, omdat handmatige tests tijdrovend zijn, vaak worden overgeslagen onder druk van deadlines, en niet alle kwetsbaarheden detecteren. Voor Nederlandse overheidsorganisaties die moeten voldoen aan strikte compliance-vereisten zoals de BIO-normen, ISO 27001, of de NIS2-richtlijn, is het essentieel dat security testing wordt geautomatiseerd in CI/CD pipelines om te waarborgen dat alle code wordt getest voordat deze wordt gedeployed. Het ontbreken van security testing automatisering kan leiden tot kritieke beveiligingsincidenten, niet-naleving van compliance-vereisten, en verlies van vertrouwen bij burgers en stakeholders.

PowerShell Modules Vereist
Primary API: Azure DevOps REST API, GitHub API, Azure Security Center API
Connection: Connect-AzAccount, az devops login
Required Modules: Az.Accounts, Az.DevOps, Az.Security

Implementatie

Dit artikel beschrijft een volledige aanpak voor security testing automatisering in CI/CD pipelines. We behandelen de verschillende typen security testing die kunnen worden geautomatiseerd, waaronder SAST voor het analyseren van broncode op kwetsbaarheden, DAST voor het testen van draaiende applicaties, dependency scanning voor het identificeren van kwetsbare open source componenten, container scanning voor het analyseren van container images, en infrastructure-as-code scanning voor het detecteren van onveilige configuraties. We bespreken hoe deze tests kunnen worden geïntegreerd in verschillende CI/CD platforms zoals Azure DevOps, GitHub Actions en GitLab CI/CD, hoe testresultaten kunnen worden geanalyseerd en geprioriteerd, hoe false positives kunnen worden beheerd, en hoe security testing kan worden geïntegreerd met security monitoring en incident response processen. Daarnaast laten we zien hoe organisaties een security testing strategie kunnen ontwikkelen die past bij hun development workflows en compliance-vereisten.

Typen Security Testing voor Automatisering

Security testing automatisering omvat verschillende typen tests die elk verschillende aspecten van applicatiebeveiliging analyseren. Static Application Security Testing (SAST) analyseert broncode zonder deze uit te voeren, waarbij wordt gezocht naar bekende kwetsbaarheden, onveilige code patterns, en beveiligingsbest practices schendingen. SAST-tools scannen code tijdens development en kunnen worden geïntegreerd in IDE's voor real-time feedback, in pre-commit hooks om te voorkomen dat onveilige code wordt gecommit, en in CI/CD pipelines om automatisch alle code te analyseren voordat deze wordt gemerged. Populaire SAST-tools voor verschillende programmeertalen omvatten SonarQube, Checkmarx, Veracode, GitHub Advanced Security, en Azure DevOps Security Scanning. SAST is bijzonder effectief voor het detecteren van kwetsbaarheden zoals SQL injection, cross-site scripting (XSS), onveilige cryptografie, en hardcoded credentials, maar kan false positives genereren en vereist vaak handmatige review van resultaten.

Dynamic Application Security Testing (DAST) test draaiende applicaties door deze aan te vallen alsof een aanvaller dit zou doen. DAST-tools simuleren aanvallen zoals SQL injection, XSS, en andere OWASP Top 10 kwetsbaarheden, waarbij wordt gezocht naar kwetsbaarheden die alleen zichtbaar zijn wanneer applicaties daadwerkelijk draaien. DAST-tests worden typisch uitgevoerd tegen staging of pre-productie omgevingen, omdat zij applicaties kunnen beïnvloeden en mogelijk service-onderbrekingen kunnen veroorzaken. Populaire DAST-tools omvatten OWASP ZAP, Burp Suite, Acunetix, en Azure Security Center. DAST is complementair aan SAST omdat het kwetsbaarheden detecteert die SAST mist, zoals runtime configuratieproblemen, authenticatie- en autorisatieproblemen, en server-side configuratieproblemen. DAST-tests moeten regelmatig worden uitgevoerd, bijvoorbeeld na elke deployment naar staging omgevingen, en moeten worden geïntegreerd in CI/CD pipelines voor geautomatiseerde uitvoering.

Dependency scanning analyseert gebruikte open source en commerciële dependencies op bekende kwetsbaarheden. Wanneer applicaties gebruik maken van open source libraries, kunnen deze libraries kwetsbaarheden bevatten die kunnen worden misbruikt door aanvallers. Dependency scanning tools identificeren automatisch alle gebruikte dependencies, controleren deze tegen databases met bekende kwetsbaarheden zoals de National Vulnerability Database (NVD), en genereren waarschuwingen wanneer kwetsbare dependencies worden gedetecteerd. Populaire dependency scanning tools omvatten Snyk, WhiteSource, GitHub Dependabot, Azure DevOps Dependency Scanning, en OWASP Dependency-Check. Dependency scanning moet worden uitgevoerd bij elke dependency update, omdat nieuwe kwetsbaarheden regelmatig worden ontdekt en omdat dependencies vaak worden bijgewerkt. Dependency scanning moet worden geïntegreerd in CI/CD pipelines zodat automatisch wordt gecontroleerd wanneer nieuwe dependencies worden toegevoegd of wanneer bestaande dependencies worden bijgewerkt.

Container scanning analyseert container images op kwetsbaarheden in base images, geïnstalleerde packages, en applicatiecode. Wanneer applicaties worden gedeployed als containers, kunnen container images kwetsbare base images of packages bevatten die kunnen worden misbruikt. Container scanning tools analyseren container images voordat deze worden gedeployed, identificeren kwetsbare packages en base images, en genereren waarschuwingen wanneer kwetsbaarheden worden gedetecteerd. Populaire container scanning tools omvatten Trivy, Clair, Aqua Security, Snyk Container Scanning, en Azure Container Registry Security Scanning. Container scanning moet worden uitgevoerd tijdens de build fase van CI/CD pipelines, zodat kwetsbare container images niet worden gedeployed. Container scanning moet ook worden geïntegreerd met container registries zoals Azure Container Registry, zodat automatisch wordt gescand wanneer nieuwe images worden gepusht.

Infrastructure-as-Code (IaC) scanning analyseert infrastructure configuratiebestanden zoals Terraform, ARM templates, en CloudFormation templates op onveilige configuraties. Wanneer infrastructure wordt gedefinieerd als code, kunnen configuratiebestanden onveilige instellingen bevatten zoals open storage accounts, onveilige netwerkconfiguraties, of overprivileged service principals. IaC scanning tools analyseren configuratiebestanden voordat infrastructure wordt gedeployed, identificeren onveilige configuraties, en genereren waarschuwingen wanneer problemen worden gedetecteerd. Populaire IaC scanning tools omvatten Checkov, Terrascan, tfsec, Azure Policy, en Pulumi Security Scanning. IaC scanning moet worden uitgevoerd tijdens de planning fase van CI/CD pipelines, zodat onveilige infrastructure configuraties niet worden gedeployed. IaC scanning moet ook worden geïntegreerd met infrastructure deployment tools zoals Azure Resource Manager, zodat automatisch wordt gecontroleerd voordat infrastructure wordt gedeployed.

Gebruik PowerShell-script security-testing-automation.ps1 (functie Invoke-Monitoring) – Controleert of security testing automatisering correct is geconfigureerd in CI/CD pipelines.

Integratie in CI/CD Pipelines

Het integreren van security testing in CI/CD pipelines vereist een gestructureerde aanpak waarbij verschillende typen tests worden uitgevoerd op verschillende momenten in de development lifecycle. In de pre-commit fase kunnen developers SAST-tests uitvoeren in hun IDE's of via pre-commit hooks, zodat onveilige code niet wordt gecommit. In de build fase moeten SAST-tests, dependency scanning, en container scanning worden uitgevoerd, zodat kwetsbaarheden vroegtijdig worden gedetecteerd voordat code wordt gemerged. In de deployment fase moeten DAST-tests worden uitgevoerd tegen staging omgevingen, zodat runtime kwetsbaarheden worden gedetecteerd voordat code wordt gedeployed naar productie. IaC scanning moet worden uitgevoerd tijdens de planning fase, zodat onveilige infrastructure configuraties niet worden gedeployed.

Voor Azure DevOps kunnen security tests worden geïntegreerd via Azure Pipelines tasks, waarbij verschillende security scanning tools worden aangeroepen als pipeline tasks. Azure DevOps biedt ingebouwde integraties met tools zoals SonarQube, WhiteSource, en Azure Security Center, maar organisaties kunnen ook custom tasks maken voor andere tools. Security tests moeten worden geconfigureerd als verplichte pipeline steps, zodat builds falen wanneer kritieke kwetsbaarheden worden gedetecteerd. Testresultaten moeten worden opgeslagen in Azure Artifacts of Azure Log Analytics voor analyse en rapportage. Azure DevOps biedt ook security dashboards die een overzicht bieden van security test resultaten across alle pipelines, waarbij trends worden geïdentificeerd en problemen worden geprioriteerd.

Voor GitHub Actions kunnen security tests worden geïntegreerd via GitHub Actions workflows, waarbij verschillende security scanning tools worden aangeroepen als workflow steps. GitHub biedt ingebouwde security features zoals GitHub Advanced Security, Dependabot, en CodeQL, maar organisaties kunnen ook custom actions maken voor andere tools. Security tests moeten worden geconfigureerd als verplichte workflow steps, zodat workflows falen wanneer kritieke kwetsbaarheden worden gedetecteerd. Testresultaten moeten worden opgeslagen in GitHub Security Advisories of externe security monitoring systemen voor analyse en rapportage. GitHub biedt ook security dashboards die een overzicht bieden van security test resultaten across alle repositories, waarbij trends worden geïdentificeerd en problemen worden geprioriteerd.

Voor GitLab CI/CD kunnen security tests worden geïntegreerd via GitLab CI/CD pipelines, waarbij verschillende security scanning tools worden aangeroepen als pipeline jobs. GitLab biedt ingebouwde security features zoals SAST, DAST, dependency scanning, en container scanning via GitLab Security Scanning, maar organisaties kunnen ook custom jobs maken voor andere tools. Security tests moeten worden geconfigureerd als verplichte pipeline jobs, zodat pipelines falen wanneer kritieke kwetsbaarheden worden gedetecteerd. Testresultaten moeten worden opgeslagen in GitLab Security Dashboard of externe security monitoring systemen voor analyse en rapportage. GitLab biedt ook security dashboards die een overzicht bieden van security test resultaten across alle projects, waarbij trends worden geïdentificeerd en problemen worden geprioriteerd.

Testresultaten moeten worden geaggregeerd en geanalyseerd om trends te identificeren en problemen te prioriteren. Security testing tools genereren vaak grote hoeveelheden resultaten, waarvan sommige false positives zijn en andere echte kwetsbaarheden. Organisaties moeten processen hebben voor het analyseren van testresultaten, het identificeren van false positives, het prioriteren van echte kwetsbaarheden op basis van risico, en het toewijzen van kwetsbaarheden aan developers voor remediatie. Security testing resultaten moeten ook worden geïntegreerd met security monitoring systemen zoals Azure Sentinel of SIEM oplossingen, zodat security teams onmiddellijk worden geïnformeerd wanneer kritieke kwetsbaarheden worden gedetecteerd.

Beheer van False Positives en Testresultaten

False positives vormen een belangrijke uitdaging bij security testing automatisering, omdat zij developers kunnen overweldigen met waarschuwingen die geen echte kwetsbaarheden zijn. False positives ontstaan wanneer security testing tools code patterns detecteren die lijken op kwetsbaarheden maar in werkelijkheid veilig zijn, bijvoorbeeld wanneer input validation correct is geïmplementeerd maar tools dit niet kunnen detecteren. Het beheren van false positives vereist een gestructureerde aanpak waarbij false positives worden geïdentificeerd, gedocumenteerd, en geconfigureerd in security testing tools zodat zij niet opnieuw worden gerapporteerd.

Het identificeren van false positives vereist security expertise en kennis van de applicatiecode. Wanneer security testing tools waarschuwingen genereren, moeten security engineers of senior developers deze waarschuwingen reviewen om te bepalen of zij echte kwetsbaarheden zijn of false positives. False positives moeten worden gedocumenteerd met uitleg waarom zij false positives zijn, zodat toekomstige reviews sneller kunnen worden uitgevoerd. False positives moeten ook worden geconfigureerd in security testing tools via suppression rules of whitelists, zodat zij niet opnieuw worden gerapporteerd in toekomstige scans.

Testresultaten moeten worden geprioriteerd op basis van risico, waarbij kritieke kwetsbaarheden zoals remote code execution of SQL injection onmiddellijk worden aangepakt, terwijl minder kritieke kwetsbaarheden zoals informatie disclosure kunnen worden gepland voor reguliere remediatie. Prioritering moet gebaseerd zijn op factoren zoals de ernst van de kwetsbaarheid, de exploitability, de impact op de organisatie, en de compliance-vereisten. Kritieke kwetsbaarheden moeten automatisch builds of deployments blokkeren, terwijl minder kritieke kwetsbaarheden waarschuwingen kunnen genereren zonder builds te blokkeren.

Testresultaten moeten worden opgeslagen en bewaard voor audit-doeleinden, waarbij wordt vastgelegd welke tests zijn uitgevoerd, wanneer tests zijn uitgevoerd, welke kwetsbaarheden zijn gedetecteerd, en welke remediatieacties zijn ondernomen. Deze informatie moet worden bewaard voor minimaal 90 dagen, maar voor compliance-doeleinden kunnen langere bewaartermijnen nodig zijn. Testresultaten moeten ook worden geïntegreerd met security monitoring systemen zoals Azure Sentinel of SIEM oplossingen, zodat security teams trends kunnen identificeren en proactief kunnen ingrijpen wanneer nieuwe kwetsbaarheden worden gedetecteerd.

Compliance en Auditing

Security testing automatisering is essentieel voor naleving van verschillende compliance-vereisten die van toepassing zijn op Nederlandse organisaties, met name in de publieke sector. De Baseline Informatiebeveiliging Overheid (BIO) bevat in Thema 12.01 specifieke vereisten voor secure development en secure coding practices, waarbij organisaties moeten zorgen dat beveiliging wordt geïntegreerd in development processen en dat security testing regelmatig wordt uitgevoerd. Security testing automatisering implementeert deze vereisten door automatisch security tests uit te voeren in CI/CD pipelines, door kwetsbaarheden vroegtijdig te detecteren, en door testresultaten te loggen voor audit-doeleinden. Voor overheidsorganisaties die moeten voldoen aan BIO-normen is documentatie van security testing processen, testresultaten, en remediatieacties een essentieel onderdeel van audit-evidentie.

ISO 27001:2022 bevat in controle A.14.2 specifieke vereisten voor secure development, waarbij organisaties moeten zorgen dat security testing wordt uitgevoerd tijdens development en dat kwetsbaarheden worden gedetecteerd en aangepakt voordat applicaties worden gedeployed. Controle A.12.6 vereist dat organisaties technische kwetsbaarheden beheren, waarbij security testing automatisering essentieel is voor het detecteren van kwetsbaarheden. Security testing automatisering implementeert beide controles door automatisch security tests uit te voeren in CI/CD pipelines, door kwetsbaarheden vroegtijdig te detecteren, en door testresultaten te loggen voor audit-doeleinden. De auditlogs die worden gegenereerd door security testing tools kunnen worden gebruikt als audit-evidentie om aan te tonen dat organisaties proactief security testing implementeren voor alle ontwikkelde software.

De NIS2-richtlijn vereist in Artikel 21 dat organisaties passende maatregelen treffen voor beveiliging van systemen en diensten, waarbij security testing essentieel is. De richtlijn benadrukt het belang van regelmatige security testing en van het detecteren en aanpakken van kwetsbaarheden. Security testing automatisering implementeert dit principe door automatisch security tests uit te voeren in CI/CD pipelines, door kwetsbaarheden vroegtijdig te detecteren, en door testresultaten te loggen voor audit-doeleinden. Voor organisaties die onder NIS2 vallen is het daarom niet alleen aanbevolen maar verplicht om security testing automatisering te implementeren voor alle kritieke softwareontwikkeling.

De Algemene Verordening Gegevensbescherming (AVG) vereist in Artikel 32 dat organisaties passende technische en organisatorische maatregelen implementeren om persoonsgegevens te beschermen, waarbij security testing essentieel is. Wanneer applicaties worden ontwikkeld die persoonsgegevens verwerken, is het essentieel dat security testing wordt uitgevoerd om te waarborgen dat kwetsbaarheden worden gedetecteerd en aangepakt voordat applicaties worden gedeployed. Security testing automatisering zorgt ervoor dat security tests automatisch worden uitgevoerd in CI/CD pipelines, dat kwetsbaarheden vroegtijdig worden gedetecteerd, en dat testresultaten worden gelogd voor audit-doeleinden.

Gebruik PowerShell-script security-testing-automation.ps1 (functie Invoke-Remediation) – Implementeert security testing automatisering in CI/CD pipelines.

Monitoring en Remediatie

Effectieve monitoring van security testing automatisering is essentieel om te waarborgen dat security tests correct worden uitgevoerd en dat organisaties altijd beschikken over actuele informatie over de security status van ontwikkelde software. Monitoring omvat het continu volgen van security test uitvoeringen, het verifiëren dat alle tests worden uitgevoerd, het analyseren van testresultaten, en het waarborgen dat alle beveiligingsvereisten worden nageleefd.

Security test uitvoering monitoring vormt het centrale punt voor het volgen van hoe security tests worden uitgevoerd in CI/CD pipelines. Regelmatig moeten security test uitvoeringen worden gereviewed om te verifiëren dat alle tests worden uitgevoerd, dat tests correct zijn geconfigureerd, en dat testresultaten worden opgeslagen en geanalyseerd. Configureer dashboards die een overzicht bieden van security test uitvoeringen across alle pipelines, waarbij trends worden geïdentificeerd en problemen worden geprioriteerd. Stel waarschuwingen in voor mislukte security tests, zodat security teams onmiddellijk kunnen worden geïnformeerd wanneer tests falen of wanneer kritieke kwetsbaarheden worden gedetecteerd. Genereer wekelijkse of maandelijkse rapporten die een overzicht bieden van security test status, trends, en verbeterpunten.

Testresultaten monitoring moet regelmatig worden uitgevoerd om te verifiëren dat kwetsbaarheden worden gedetecteerd en aangepakt. Analyseer testresultaten om trends te identificeren, zoals welke typen kwetsbaarheden het meest voorkomen, welke applicaties de meeste kwetsbaarheden hebben, en welke developers het meest worden beïnvloed door security waarschuwingen. Review regelmatig testresultaten om te identificeren welke kwetsbaarheden zijn gedetecteerd, welke kwetsbaarheden zijn aangepakt, en welke kwetsbaarheden nog open staan. Configureer waarschuwingen die worden gegenereerd wanneer kritieke kwetsbaarheden worden gedetecteerd, zoals remote code execution of SQL injection, zodat security teams onmiddellijk kunnen worden geïnformeerd.

Voer regelmatig security reviews uit om te verifiëren dat security testing automatisering correct is geconfigureerd en dat alle beveiligingsvereisten worden nageleefd. Tijdens reviews moeten alle CI/CD pipelines worden gecontroleerd, inclusief of security tests zijn geïntegreerd, of tests correct zijn geconfigureerd, en of testresultaten worden opgeslagen en geanalyseerd. Review ook of false positives correct worden beheerd, inclusief of suppression rules correct zijn geconfigureerd en of false positives regelmatig worden gereviewed. Tijdens reviews moeten trends worden geïdentificeerd, zoals welke beveiligingsproblemen het meest voorkomen, welke security testing tools het meest effectief zijn, en welke verbeteringen nodig zijn in security testing processen.

Genereer maandelijks compliance-rapporten die een overzicht bieden van de security testing status. Deze rapporten moeten informatie bevatten over het aantal uitgevoerde security tests, het aantal gedetecteerde kwetsbaarheden, het aantal aangepakte kwetsbaarheden, het aantal openstaande kwetsbaarheden, en eventuele afwijkingen of problemen die zijn geïdentificeerd. Deze rapporten kunnen worden gebruikt voor management reporting, audit-doeleinden, en voor het identificeren van trends of verbeterpunten. Rapporten moeten worden gedistribueerd naar relevante stakeholders, zoals security officers, development leads, en DevOps engineers.

Wanneer tijdens monitoring wordt vastgesteld dat security testing automatisering niet correct is geconfigureerd of dat kwetsbaarheden niet worden gedetecteerd, moet direct actie worden ondernomen om de beveiliging te herstellen. Het remediatieproces begint met het identificeren van de specifieke problemen, zoals ontbrekende security tests, onjuist geconfigureerde tests, of kwetsbaarheden die niet worden gedetecteerd. Prioriteer problemen op basis van risico en bedrijfskritiek, waarbij hoog-risico problemen zoals ontbrekende SAST-tests voor kritieke applicaties onmiddellijk moeten worden aangepakt. Voor ontbrekende security tests moeten deze worden toegevoegd aan CI/CD pipelines en moeten tests worden geconfigureerd als verplichte pipeline steps. Voor onjuist geconfigureerde tests moeten configuraties worden aangepast en moeten tests opnieuw worden uitgevoerd om te verifiëren dat zij correct werken. Voor kwetsbaarheden die niet worden gedetecteerd moeten security testing tools worden bijgewerkt of moeten aanvullende tests worden toegevoegd.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# ================================================================================ POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Security Testing Automatisering Monitoring en Remediatie .DESCRIPTION Monitort en beheert de implementatie van security testing automatisering in CI/CD pipelines, inclusief SAST, DAST, dependency scanning, container scanning, en IaC scanning. .NOTES Filename: security-testing-automation.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/devops/security-testing-automation.json .EXAMPLE .\security-testing-automation.ps1 -Monitoring Controleert de security testing automatisering configuratie .EXAMPLE .\security-testing-automation.ps1 -Remediation Implementeert security testing automatisering best practices #> #Requires -Version 5.1 #Requires -Modules Az.Accounts [CmdletBinding()] param( [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert, [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Security Testing Automatisering" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Controleert en initialiseert Azure en Azure DevOps connecties #> if (-not (Get-AzContext)) { Write-Host "Verbinden met Azure..." -ForegroundColor Gray Connect-AzAccount | Out-Null } # Controleer of Azure CLI is geïnstalleerd en Azure DevOps extensie beschikbaar is try { $azVersion = az version 2>&1 | ConvertFrom-Json Write-Host "Azure CLI versie: $($azVersion.'azure-cli')" -ForegroundColor Gray } catch { Write-Host "WAARSCHUWING: Azure CLI is mogelijk niet geïnstalleerd of niet beschikbaar in PATH" -ForegroundColor Yellow Write-Host "Installeer Azure CLI via: https://aka.ms/installazurecliwindows" -ForegroundColor Yellow } } function Test-SecurityTestingAutomation { <# .SYNOPSIS Test security testing automatisering configuratie #> param( [string]$OrganizationUrl, [string]$ProjectName ) $result = @{ isCompliant = $false issues = @() pipelinesWithoutSAST = 0 pipelinesWithoutDAST = 0 pipelinesWithoutDependencyScanning = 0 pipelinesWithoutContainerScanning = 0 pipelinesWithoutIaCScanning = 0 totalPipelines = 0 pipelinesWithSecurityTests = 0 } try { if ($ProjectName -and $OrganizationUrl) { # Controleer pipelines try { $pipelines = az pipelines list --organization $OrganizationUrl --project $ProjectName --output json 2>&1 | ConvertFrom-Json $result.totalPipelines = $pipelines.Count foreach ($pipeline in $pipelines) { # Vereenvoudigde controle - in productie zou je hier YAML-bestanden analyseren # op geïntegreerde security testing tools $pipelineYaml = az pipelines show --id $pipeline.id --organization $OrganizationUrl --project $ProjectName --output json 2>&1 | ConvertFrom-Json # Controleer of pipeline security tests bevat # Dit is een vereenvoudigde controle - in productie zou je YAML-bestanden analyseren $hasSecurityTests = $false # In productie zou je hier controleren op specifieke tasks zoals: # - SonarQube, Checkmarx, Veracode voor SAST # - OWASP ZAP, Burp Suite voor DAST # - Snyk, WhiteSource voor dependency scanning # - Trivy, Clair voor container scanning # - Checkov, Terrascan voor IaC scanning if (-not $hasSecurityTests) { $result.pipelinesWithoutSAST++ $result.pipelinesWithoutDAST++ $result.pipelinesWithoutDependencyScanning++ $result.pipelinesWithoutContainerScanning++ $result.pipelinesWithoutIaCScanning++ } else { $result.pipelinesWithSecurityTests++ } } } catch { Write-Host "Fout bij ophalen van pipelines: $_" -ForegroundColor Yellow } } # Bepaal compliance op basis van gevonden problemen if ($result.issues.Count -eq 0 -and $result.pipelinesWithoutSAST -eq 0 -and $result.pipelinesWithoutDAST -eq 0 -and $result.pipelinesWithoutDependencyScanning -eq 0) { $result.isCompliant = $true } return $result } catch { Write-Host "Fout bij het controleren van Security Testing Automatisering: $_" -ForegroundColor Red throw } } function Invoke-Monitoring { <# .SYNOPSIS Controleert de security testing automatisering configuratie #> try { Write-Host "Monitoring Security Testing Automatisering..." -ForegroundColor Yellow Connect-RequiredServices $orgUrl = Read-Host "Voer Azure DevOps organisatie URL in (bijv. https://dev.azure.com/yourorg)" $projectName = Read-Host "Voer project naam in (optioneel, druk Enter om over te slaan)" if ([string]::IsNullOrWhiteSpace($projectName)) { $projectName = $null } $result = Test-SecurityTestingAutomation -OrganizationUrl $orgUrl -ProjectName $projectName Write-Host "`nSecurity Testing Automatisering Status:" -ForegroundColor Cyan Write-Host " Totaal pipelines: $($result.totalPipelines)" -ForegroundColor White Write-Host " Pipelines met security tests: $($result.pipelinesWithSecurityTests)" -ForegroundColor $(if ($result.pipelinesWithSecurityTests -eq $result.totalPipelines) { "Green" } else { "Yellow" }) Write-Host " Pipelines zonder SAST: $($result.pipelinesWithoutSAST)" -ForegroundColor $(if ($result.pipelinesWithoutSAST -eq 0) { "Green" } else { "Red" }) Write-Host " Pipelines zonder DAST: $($result.pipelinesWithoutDAST)" -ForegroundColor $(if ($result.pipelinesWithoutDAST -eq 0) { "Green" } else { "Yellow" }) Write-Host " Pipelines zonder dependency scanning: $($result.pipelinesWithoutDependencyScanning)" -ForegroundColor $(if ($result.pipelinesWithoutDependencyScanning -eq 0) { "Green" } else { "Red" }) Write-Host " Pipelines zonder container scanning: $($result.pipelinesWithoutContainerScanning)" -ForegroundColor $(if ($result.pipelinesWithoutContainerScanning -eq 0) { "Green" } else { "Yellow" }) Write-Host " Pipelines zonder IaC scanning: $($result.pipelinesWithoutIaCScanning)" -ForegroundColor $(if ($result.pipelinesWithoutIaCScanning -eq 0) { "Green" } else { "Yellow" }) if ($result.issues.Count -gt 0) { Write-Host "`nGeïdentificeerde problemen:" -ForegroundColor Yellow foreach ($issue in $result.issues) { Write-Host " - $issue" -ForegroundColor Yellow } } Write-Host "`nAanbevelingen:" -ForegroundColor Cyan Write-Host " • Integreer SAST-tools zoals SonarQube, Checkmarx of Veracode in CI/CD pipelines" -ForegroundColor White Write-Host " • Integreer DAST-tools zoals OWASP ZAP of Burp Suite voor runtime testing" -ForegroundColor White Write-Host " • Implementeer dependency scanning met tools zoals Snyk, WhiteSource of Dependabot" -ForegroundColor White Write-Host " • Configureer container scanning met tools zoals Trivy of Clair" -ForegroundColor White Write-Host " • Implementeer IaC scanning met tools zoals Checkov of Terrascan" -ForegroundColor White Write-Host " • Configureer security tests als verplichte pipeline steps" -ForegroundColor White Write-Host " • Blokkeer builds wanneer kritieke kwetsbaarheden worden gedetecteerd" -ForegroundColor White Write-Host " • Bewaar testresultaten voor audit-doeleinden (minimaal 90 dagen)" -ForegroundColor White Write-Host " • Analyseer testresultaten regelmatig en beheer false positives" -ForegroundColor White Write-Host " • Integreer testresultaten met security monitoring systemen" -ForegroundColor White Write-Host "`n" -ForegroundColor Cyan if ($result.isCompliant) { Write-Host "[OK] COMPLIANT" -ForegroundColor Green exit 0 } else { Write-Host "[FAIL] NON-COMPLIANT" -ForegroundColor Red exit 1 } } catch { Write-Host "`n[FAIL] ERROR: $_" -ForegroundColor Red Write-Host "Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Implementeert security testing automatisering best practices #> try { Write-Host "Security Testing Automatisering Remediatie..." -ForegroundColor Yellow Connect-RequiredServices $orgUrl = Read-Host "Voer Azure DevOps organisatie URL in (bijv. https://dev.azure.com/yourorg)" $projectName = Read-Host "Voer project naam in" $result = Test-SecurityTestingAutomation -OrganizationUrl $orgUrl -ProjectName $projectName if ($result.isCompliant) { Write-Host "Geen remediatie nodig - configuratie is compliant" -ForegroundColor Green exit 0 } Write-Host "`nRemediatie-acties:" -ForegroundColor Cyan # Remediate SAST if ($result.pipelinesWithoutSAST -gt 0) { Write-Host " Integreren van SAST-tools..." -ForegroundColor Yellow Write-Host " [INFO] Kies een SAST-tool zoals SonarQube, Checkmarx of Veracode" -ForegroundColor Yellow Write-Host " [INFO] Configureer SAST-tool als Azure Pipeline task" -ForegroundColor White Write-Host " [INFO] Voeg SAST-task toe aan build fase van pipelines" -ForegroundColor White Write-Host " [INFO] Configureer SAST-task als verplichte pipeline step" -ForegroundColor White Write-Host " [INFO] Configureer build failure wanneer kritieke kwetsbaarheden worden gedetecteerd" -ForegroundColor White Write-Host " [INFO] Bewaar SAST-resultaten in Azure Artifacts of Log Analytics" -ForegroundColor White } # Remediate DAST if ($result.pipelinesWithoutDAST -gt 0) { Write-Host " Integreren van DAST-tools..." -ForegroundColor Yellow Write-Host " [INFO] Kies een DAST-tool zoals OWASP ZAP of Burp Suite" -ForegroundColor Yellow Write-Host " [INFO] Configureer DAST-tool als Azure Pipeline task" -ForegroundColor White Write-Host " [INFO] Voeg DAST-task toe aan deployment fase van pipelines" -ForegroundColor White Write-Host " [INFO] Configureer DAST-tests tegen staging of pre-productie omgevingen" -ForegroundColor White Write-Host " [INFO] Configureer DAST-task als verplichte pipeline step" -ForegroundColor White Write-Host " [INFO] Bewaar DAST-resultaten in Azure Artifacts of Log Analytics" -ForegroundColor White } # Remediate dependency scanning if ($result.pipelinesWithoutDependencyScanning -gt 0) { Write-Host " Integreren van dependency scanning..." -ForegroundColor Yellow Write-Host " [INFO] Kies een dependency scanning tool zoals Snyk, WhiteSource of Dependabot" -ForegroundColor Yellow Write-Host " [INFO] Configureer dependency scanning tool als Azure Pipeline task" -ForegroundColor White Write-Host " [INFO] Voeg dependency scanning task toe aan build fase van pipelines" -ForegroundColor White Write-Host " [INFO] Configureer dependency scanning task als verplichte pipeline step" -ForegroundColor White Write-Host " [INFO] Configureer build failure wanneer kritieke kwetsbaarheden worden gedetecteerd" -ForegroundColor White Write-Host " [INFO] Bewaar dependency scanning resultaten in Azure Artifacts of Log Analytics" -ForegroundColor White } # Remediate container scanning if ($result.pipelinesWithoutContainerScanning -gt 0) { Write-Host " Integreren van container scanning..." -ForegroundColor Yellow Write-Host " [INFO] Kies een container scanning tool zoals Trivy of Clair" -ForegroundColor Yellow Write-Host " [INFO] Configureer container scanning tool als Azure Pipeline task" -ForegroundColor White Write-Host " [INFO] Voeg container scanning task toe aan build fase van pipelines" -ForegroundColor White Write-Host " [INFO] Configureer container scanning voor alle container images" -ForegroundColor White Write-Host " [INFO] Configureer container scanning task als verplichte pipeline step" -ForegroundColor White Write-Host " [INFO] Integreer container scanning met Azure Container Registry" -ForegroundColor White } # Remediate IaC scanning if ($result.pipelinesWithoutIaCScanning -gt 0) { Write-Host " Integreren van IaC scanning..." -ForegroundColor Yellow Write-Host " [INFO] Kies een IaC scanning tool zoals Checkov of Terrascan" -ForegroundColor Yellow Write-Host " [INFO] Configureer IaC scanning tool als Azure Pipeline task" -ForegroundColor White Write-Host " [INFO] Voeg IaC scanning task toe aan planning fase van pipelines" -ForegroundColor White Write-Host " [INFO] Configureer IaC scanning voor Terraform, ARM templates en CloudFormation" -ForegroundColor White Write-Host " [INFO] Configureer IaC scanning task als verplichte pipeline step" -ForegroundColor White Write-Host " [INFO] Blokkeer deployments wanneer onveilige configuraties worden gedetecteerd" -ForegroundColor White } Write-Host "`nAanbevolen volgende stappen:" -ForegroundColor Cyan Write-Host " 1. Documenteer security testing automatisering beleid" -ForegroundColor White Write-Host " 2. Kies geschikte security testing tools voor uw organisatie" -ForegroundColor White Write-Host " 3. Integreer security tests in alle CI/CD pipelines" -ForegroundColor White Write-Host " 4. Configureer security tests als verplichte pipeline steps" -ForegroundColor White Write-Host " 5. Configureer build failures wanneer kritieke kwetsbaarheden worden gedetecteerd" -ForegroundColor White Write-Host " 6. Bewaar testresultaten voor audit-doeleinden" -ForegroundColor White Write-Host " 7. Analyseer testresultaten regelmatig en beheer false positives" -ForegroundColor White Write-Host " 8. Integreer testresultaten met security monitoring systemen" -ForegroundColor White Write-Host " 9. Review regelmatig security testing configuraties" -ForegroundColor White Write-Host " 10. Train developers in security testing best practices" -ForegroundColor White Write-Host "`n[OK] Remediatie instructies voltooid." -ForegroundColor Green Write-Host "Voer monitoring opnieuw uit om te verifiëren: .\security-testing-automation.ps1 -Monitoring" -ForegroundColor Cyan exit 0 } catch { Write-Host "`n[FAIL] ERROR: $_" -ForegroundColor Red Write-Host "Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Revert { <# .SYNOPSIS Revert security testing automatisering configuratie (NIET AANBEVOLEN) #> try { Write-Host "Revert:" -ForegroundColor Yellow Write-Host " [WAARSCHUWING] Revert functionaliteit is niet beschikbaar voor deze control" -ForegroundColor Red Write-Host " [INFO] Security testing configuraties moeten handmatig worden teruggedraaid" -ForegroundColor Yellow Write-Host " [INFO] Wijzigingen moeten worden teruggedraaid via Azure DevOps Portal of pipeline configuraties" -ForegroundColor Yellow Write-Host " [INFO] Contacteer de security officer voordat u security testing instellingen wijzigt" -ForegroundColor Yellow exit 0 } catch { Write-Host "ERROR: $_" -ForegroundColor Red exit 2 } } # ================================================================================ # Standaard Invoke-* Functions # ================================================================================ function Invoke-Implementation { <# .SYNOPSIS Implementeert de configuratie #> [CmdletBinding()] param() Invoke-Remediation } try { if ($Revert) { Invoke-Revert } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Gebruik: -Monitoring | -Remediation | -Revert" -ForegroundColor Yellow Write-Host "`nVoorbeelden:" -ForegroundColor Cyan Write-Host " .\security-testing-automation.ps1 -Monitoring" -ForegroundColor White Write-Host " .\security-testing-automation.ps1 -Remediation" -ForegroundColor White } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder geautomatiseerde security testing in CI/CD pipelines kunnen kwetsbaarheden onopgemerkt blijven totdat zij worden misbruikt door aanvallers. Dit risico is bijzonder hoog wanneer security testing handmatig wordt uitgevoerd, omdat handmatige tests tijdrovend zijn, vaak worden overgeslagen onder druk van deadlines, en niet alle kwetsbaarheden detecteren. Het ontbreken van security testing automatisering kan leiden tot kritieke beveiligingsincidenten, niet-naleving van compliance-vereisten zoals de BIO-normen, ISO 27001, of de NIS2-richtlijn, en verlies van vertrouwen bij burgers en stakeholders.

Management Samenvatting

Security testing automatisering integreert geautomatiseerde beveiligingstests zoals SAST, DAST, dependency scanning, container scanning en IaC scanning in CI/CD pipelines, zodat kwetsbaarheden vroegtijdig worden gedetecteerd voordat code wordt gedeployed. Configureer security tests in CI/CD pipelines, analyseer testresultaten, beheer false positives, en log testresultaten voor audit-doeleinden. Implementatie: 100 uur. Essentieel voor compliance met BIO, ISO 27001 en NIS2.