From 39dc790ecf975fab1ffb0bc6f1c70fbeec9e02d6 Mon Sep 17 00:00:00 2001 From: hughfl <87244517+hughfl@users.noreply.github.com> Date: Wed, 12 Nov 2025 11:45:05 -0500 Subject: [PATCH 1/2] Add Checkov workflow for security scanning --- .github/workflows/checkov.yaml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/checkov.yaml diff --git a/.github/workflows/checkov.yaml b/.github/workflows/checkov.yaml new file mode 100644 index 000000000..00e3ec636 --- /dev/null +++ b/.github/workflows/checkov.yaml @@ -0,0 +1,32 @@ +name: checkov +on: + pull_request: + push: + branches: + - main +jobs: + scan: + runs-on: ubuntu-latest + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for GitHub/codeql-action/upload-sarif to upload SARIF results + + steps: + - uses: actions/checkout@v2 + + - name: Run checkov + id: checkov + uses: bridgecrewio/checkov-action@master + with: + directory: code/ + #soft_fail: true + + - name: Upload SARIF file + uses: GitHub/codeql-action/upload-sarif@v3 + + # Results are generated only on a success or failure + # this is required since GitHub by default won't run the next step + # when the previous one has failed. Alternatively, enable soft_fail in checkov action. + if: success() || failure() + with: + sarif_file: results.sarif From 809d023380c2b19f5119d4e3e2ddd791541c3a6c Mon Sep 17 00:00:00 2001 From: hughfl <87244517+hughfl@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:09:03 -0500 Subject: [PATCH 2/2] Add Terraform configuration for GCS bucket --- build/gcs.tf | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 build/gcs.tf diff --git a/build/gcs.tf b/build/gcs.tf new file mode 100644 index 000000000..c898c7a53 --- /dev/null +++ b/build/gcs.tf @@ -0,0 +1,21 @@ +provider "google" { + project = "qwiklabs-gcp-01-ea273999a3d4" + region = "us-central1" +} + +resource "google_storage_bucket" "example" { + name = "demo-${random_id.rand_suffix.hex}" + location = "us-central1" + force_destroy = true + + uniform_bucket_level_access = false + public_access_prevention = "enforced" +} + +resource "random_id" "rand_suffix" { + byte_length = 4 +} + +output "bucket_name" { + value = google_storage_bucket.example.name +}