Mengintegrasikan validasi IaC dengan Cloud Build

Anda dapat menulis konfigurasi build yang menginstruksikan Cloud Build untuk memvalidasi infrastruktur sebagai kode (IaC) yang merupakan bagian dari build Anda. Dengan memvalidasi IaC, Anda dapat menentukan apakah definisi resource Terraform melanggar kebijakan organisasi dan detektor Security Health Analytics yang ada yang diterapkan ke resource Anda. Google Cloud

Untuk mengetahui informasi selengkapnya tentang validasi IaC, lihat Memvalidasi IaC terhadap kebijakan organisasi Anda. Google Cloud

Sebelum memulai

Selesaikan tugas berikut untuk memulai validasi IaC menggunakan Cloud Build.

Mengaktifkan paket Premium Security Command Center atau paket Enterprise

Pastikan bahwa Security Command Center Premium atau paket Enterprise diaktifkan di tingkat organisasi.

Mengaktifkan Security Command Center akan mengaktifkan API securityposture.googleapis.com dan securitycentermanagement.googleapis.com.

Menyiapkan izin

    Pastikan Anda memiliki peran berikut di organisasi:

    • Validator Shift-Left Postur Keamanan
    • Penulis Log
    • Penulis Penyimpanan
    • Pembaca Penyimpanan

    Memeriksa peran

    1. Di Google Cloud konsol, buka halaman IAM.

      Buka IAM
    2. Pilih organisasi.
    3. Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang menyertakan Anda. Untuk mengetahui grup mana yang menyertakan Anda, hubungi administrator Anda.

    4. Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di Google Cloud konsol, buka halaman IAM.

      Buka IAM
    2. Pilih organisasi.
    3. Klik Grant access.
    4. Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.

    5. Klik Select a role, lalu telusuri peran.
    6. Untuk memberikan peran tambahan, klik Add another role , lalu tambahkan setiap peran tambahan.
    7. Klik Save.

Untuk mengetahui informasi selengkapnya tentang izin validasi IaC, lihat IAM untuk aktivasi level organisasi.

Mengaktifkan Cloud Build API

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Mengaktifkan API

Menentukan kebijakan

Tentukan kebijakan organisasi dan detektor Security Health Analytics. Untuk menentukan kebijakan ini menggunakan postur keamanan, selesaikan tugas di Membuat dan men-deploy postur.

Membuat kode Terraform

Untuk mengetahui petunjuknya, lihat Membuat kode Terraform.

Memvalidasi IAC di Cloud Build

Tambahkan tugas berikut ke file cloudbuild.yaml Anda:

  1. Lakukan inisialisasi Terraform:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform init \
            -backend-config="bucket=STATE_BUCKET" \
            -backend-config="prefix=REPOSITORY_NAME" \
      dir: FOLDER
      id: Terraform Init
      entrypoint: sh
    

    Ganti kode berikut:

    • STATE_BUCKET dengan nama bucket Cloud Storage untuk menyimpan status Terraform di
    • REPOSITORY_NAME dengan repositori yang menghosting kode Terraform Anda.
    • FOLDER dengan nama folder untuk menyimpan artefak Terraform.
  2. Buat file rencana:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform plan -out tf.plan
      dir: FOLDER
      id: Terraform Plan
      entrypoint: sh
    
  3. Konversikan file rencana ke format JSON:

    - name: hashicorp/terraform
      args:
        - '-c'
        - |
          terraform show -json tf.plan > plan.json
      dir: FOLDER
      id: Terraform Show
      entrypoint: sh
    
  4. Buat laporan validasi IaC:

    - name: gcr.io/cloud-builders/gcloud
      args:
        - '-c'
        - |
          gcloud scc iac-validation-reports create \
          organizations/ORGANIZATION_ID/locations/global --tf-plan-file=plan.json \
          --format="json(response.iacValidationReport)" > IaCScanReport_$BUILD_ID.json
      dir: FOLDER
      id: Run IaC scan
      entrypoint: /bin/bash
    

    Ganti ORGANIZATION_ID dengan ID organisasi Anda.

  5. Jika Anda menggunakan Cloud Storage, upload file hasil JSON ke Cloud Storage:

    - name: gcr.io/cloud-builders/gcloud
      args:
        - storage
        - cp
        - IaCScanReport_$BUILD_ID.json
        - SCAN_RESULT_FILE_BUCKET
      dir: FOLDER
      id: Upload report file
    

    Ganti SCAN_RESULT_FILE_BUCKET dengan bucket Cloud Storage untuk mengupload file hasil.

  6. Untuk melihat hasil dalam format SARIF, selesaikan langkah berikut:

    1. Konversikan file:

      - name: golang
        args:
          - '-c'
          - |
            go run github.com/google/gcp-scc-iac-validation-utils/SARIFConverter@latest \
              --inputFilePath=IaCScanReport_$BUILD_ID.json
              --outputFilePath=IaCScanReport_$BUILD_ID.sarif.json
        dir: FOLDER
        id: Convert to SARIF format
        entrypoint: /bin/bash
      
    2. Opsional: upload file ke Cloud Storage:

      - name: gcr.io/cloud-builders/gcloud
        args:
          - storage
          - cp
          - IaCScanReport_$BUILD_ID.sarif.json
          - SCAN_RESULT_FILE_BUCKET
        dir: FOLDER
        id: Upload report file
      
  7. Validasi hasilnya. Selesaikan langkah ini pada file JSON hasil yang belum Anda konversi ke format SARIF:

    - name: golang
      args:
        - '-c'
        - |
          go run github.com/google/gcp-scc-iac-validation-utils/ReportValidator@latest \
            --inputFilePath=IaCScanReport_$BUILD_ID.json --failure_expression=FAILURE_CRITERIA
      dir: FOLDER
      id: Validate results
      entrypoint: /bin/bash
    

    Ganti FAILURE_CRITERIA dengan kriteria nilai minimum kegagalan yang menentukan kapan build gagal. Kriteria nilai minimum didasarkan pada jumlah masalah tingkat keseriusan kritis, tinggi, sedang, dan rendah yang ditemui oleh pemindaian validasi IaC. FAILURE_CRITERIA menentukan jumlah masalah dari setiap tingkat keseriusan yang diizinkan, dan juga menentukan cara masalah diagregasi (baik AND atau OR). Misalnya, jika Anda ingin build gagal jika menemukan satu masalah kritis atau satu masalah tingkat keseriusan tinggi, tetapkan FAILURE_CRITERIA ke Critical:1,High:1,Operator:OR. Nilai defaultnya adalah Critical:1,High:1,Medium:1,Low:1,Operator:OR, yang berarti bahwa jika pemindaian validasi IaC menemukan pelanggaran dengan tingkat keseriusan apa pun, build harus gagal.

  8. Jika build gagal, selesaikan pelanggaran apa pun dalam kode Terraform Anda.

Langkah berikutnya