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 Anda melanggar kebijakan organisasi yang ada dan pendeteksi Security Health Analytics yang diterapkan ke resource Google Cloud .

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

Sebelum memulai

Selesaikan tugas-tugas ini untuk memulai validasi IaC menggunakan Cloud Build.

Mengaktifkan paket Premium Security Command Center atau paket Enterprise

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

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

Siapkan izin

  1. Make sure that you have the following role or roles on the organization:

    • Security Posture Shift-Left Validator
    • Log Writer
    • Storage Writer
    • Storage Reader

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih organisasi.
    3. Klik Berikan akses.
    4. Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.

    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. Klik Simpan.

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

    Mengaktifkan Cloud Build API

    1. Enable the Cloud Build API.

      Enable the API

    Menentukan kebijakan Anda

    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 tempat artefak Terraform disimpan.
    2. Membuat 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/gsutil
        args:
          - cp
          - IaCScanReport_$BUILD_ID.json
          - SCAN_RESULT_FILE_BUCKET
        dir: FOLDER
        id: Upload report file
      

      Ganti SCAN_RESULT_FILE_BUCKET dengan bucket Cloud Storage tempat Anda akan mengupload file hasil.

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

      1. Konversi 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/gsutil
          args:
            - 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 dengan tingkat keparahan kritis, tinggi, sedang, dan rendah yang ditemukan oleh pemindaian validasi IaC. FAILURE_CRITERIA menentukan jumlah masalah dari setiap tingkat keparahan yang diizinkan, dan juga menentukan cara masalah digabungkan (AND atau OR). Misalnya, jika Anda ingin build gagal jika mengalami satu masalah kritis atau satu masalah tingkat keparahan 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 keparahan apa pun, build harus gagal.

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

    Langkah selanjutnya