From 3f29dd7e168d33bc6c27533f9842e2b57670d381 Mon Sep 17 00:00:00 2001 From: Anthony Shaw Date: Thu, 6 Jun 2024 12:40:33 +1000 Subject: [PATCH] Use PSRule for security testing --- .github/workflows/bicep-audit.yml | 26 +++++++++++++++++--------- infra/main.test.bicep | 17 +++++++++++++++++ ps-rule.yaml | 3 +++ 3 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 infra/main.test.bicep create mode 100644 ps-rule.yaml diff --git a/.github/workflows/bicep-audit.yml b/.github/workflows/bicep-audit.yml index 56cb69e..6eae131 100644 --- a/.github/workflows/bicep-audit.yml +++ b/.github/workflows/bicep-audit.yml @@ -4,12 +4,12 @@ on: branches: - main paths: - - "infra/**" + - "**/*.bicep" pull_request: branches: - main paths: - - "infra/**" + - "**/*.bicep" workflow_dispatch: jobs: @@ -21,15 +21,23 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Run Microsoft Security DevOps Analysis - uses: microsoft/security-devops-action@preview - id: msdo - continue-on-error: true + - name: Run PSRule analysis + uses: microsoft/ps-rule@v2.9.0 with: - tools: templateanalyzer + modules: PSRule.Rules.Azure + baseline: Azure.Pillar.Security + inputPath: infra/*.test.bicep + outputFormat: Sarif + outputPath: reports/ps-rule-results.sarif + summary: true + continue-on-error: true + + env: + PSRULE_CONFIGURATION_AZURE_BICEP_FILE_EXPANSION: 'true' + PSRULE_CONFIGURATION_AZURE_BICEP_FILE_EXPANSION_TIMEOUT: '30' - - name: Upload alerts to Security tab + - name: Upload results to security tab uses: github/codeql-action/upload-sarif@v3 if: github.repository_owner == 'Azure-Samples' with: - sarif_file: ${{ steps.msdo.outputs.sarifFile }} + sarif_file: reports/ps-rule-results.sarif diff --git a/infra/main.test.bicep b/infra/main.test.bicep new file mode 100644 index 0000000..19899b8 --- /dev/null +++ b/infra/main.test.bicep @@ -0,0 +1,17 @@ +// This file is for doing static analysis and contains sensible defaults +// for the bicep analyser to minimise false-positives and provide the best results. + +// This file is not intended to be used as a runtime configuration file. + +targetScope = 'subscription' + +param environmentName string = 'testing' +param location string = 'westus2' + +module main 'main.bicep' = { + name: 'main' + params: { + environmentName: environmentName + location: location + } +} diff --git a/ps-rule.yaml b/ps-rule.yaml new file mode 100644 index 0000000..bb4904b --- /dev/null +++ b/ps-rule.yaml @@ -0,0 +1,3 @@ +# YAML: Set the AZURE_BICEP_FILE_EXPANSION configuration option to enable expansion +configuration: + AZURE_BICEP_FILE_EXPANSION: true \ No newline at end of file