In this page we are going to add some tasks in Azure Release pipeline to do the tests.
Prerequisites
There is already a docker image containing Zap2 files and a Python file called zap-baseline.py to run the process. The image is called owasp/zap2docker-stable requires a shared folder to put the report in it. To mount a file share I use a storage account in azure containing the shared location called security. I generate the Key to access the shared location and start the process.
When process has been completed you need to have a file called OWASPToNUnit3.xslt to convert the report into an NUnit file that can be published as a test result.
OWASP Stage Tasks
There are 3 tasks in this stage:
- OWASP in Azure CLI
which stes up a Container Instance that runs the tests - Transforming PowerShell Script
which uses a PowerShell script to transform the result into NUnit - Publish Test Results
which makes the result visible in the pipeline as Test Results
Stage Tasks Yaml
steps: - task: AzureCLI@2 displayName: 'OWASP in Azure CLI ' inputs: azureSubscription: 'Owasp_grp_sp' scriptType: ps scriptLocation: inlineScript inlineScript: | $key='"the-Key-to-Storage-Account-shared-location=="' $ZAP_COMMAND="/zap/zap-baseline.py -t """"https://the-url-to-test.something"""" -x OWASP-ZAP-Report.xml" az container create ` --resource-group owasp_grp ` --name owasp ` --image owasp/zap2docker-stable ` --ip-address public ` --ports 8080 ` --azure-file-volume-account-name owaspstore1000 ` --azure-file-volume-account-key $key ` --azure-file-volume-share-name security ` --azure-file-volume-mount-path /zap/wrk/ ` --command-line $ZAP_COMMAND az storage file download ` --account-name owaspstore1000 ` --account-key $key ` -s security ` -p OWASP-ZAP-Report.xml ` --dest %SYSTEM_DEFAULTWORKINGDIRECTORY%OWASP-ZAP-Report.xml - powershell: | ## The powershell task for converting the test report $XslPath = "$($Env:SYSTEM_DEFAULTWORKINGDIRECTORY)\_Managed-Security/OWASPToNUnit3.xslt" $XmlInputPath = "$($Env:SYSTEM_DEFAULTWORKINGDIRECTORY)\OWASP-ZAP-Report.xml" $XmlOutputPath = "$($Env:SYSTEM_DEFAULTWORKINGDIRECTORY)\Converted-OWASP-ZAP-Report.xml" $XslTransform = New-Object System.Xml.Xsl.XslCompiledTransform $XslTransform.Load($XslPath) $XslTransform.Transform($XmlInputPath, $XmlOutputPath) displayName: 'Transforming PowerShell Script' - task: PublishTestResults@2 displayName: 'Publish Test Results Converted-OWASP-ZAP-Report.xml' inputs: testResultsFormat: NUnit testResultsFiles: 'Converted-OWASP-ZAP-Report.xml'