Anda dapat menulis konfigurasi build yang menginstruksikan Cloud Build untuk memvalidasi infrastructure as code (IaC) yang merupakan bagian dari build Anda. Memvalidasi IaC memungkinkan Anda menentukan apakah definisi resource Terraform Anda melanggar kebijakan organisasi yang ada dan detektor Security Health Analytics yang diterapkan ke resource Google Cloud Anda.
Untuk mengetahui informasi selengkapnya tentang validasi IaC, lihat Memvalidasi IaC terhadap kebijakan organisasi Anda. Google Cloud
Sebelum memulai
Selesaikan tugas berikut untuk mulai menggunakan validasi IaC menggunakan Cloud Build.
Mengaktifkan paket Premium atau Enterprise Security Command Center
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
-
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
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
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.
- 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
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih organisasi.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya berupa alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Untuk mengetahui informasi selengkapnya tentang izin validasi IaC, lihat IAM untuk aktivasi tingkat organisasi.
Aktifkan Cloud Build API
-
Enable the Cloud Build 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.
Buat kode Terraform Anda
Untuk mengetahui petunjuknya, lihat Membuat kode Terraform.
Memvalidasi IAC Anda di Cloud Build
Tambahkan tugas berikut ke file
cloudbuild.yaml
Anda: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 TerraformREPOSITORY_NAME
dengan repositori yang menghosting kode Terraform Anda.FOLDER
dengan nama folder untuk menyimpan artefak Terraform.
Buat file rencana:
- name: hashicorp/terraform args: - '-c' - | terraform plan -out tf.plan dir: FOLDER id: Terraform Plan entrypoint: sh
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
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.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 file hasil akan diupload.Untuk melihat hasil dalam format SARIF, selesaikan langkah-langkah berikut:
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
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
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 batas 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 dengan setiap tingkat keparahan yang diizinkan, dan juga menentukan cara masalah diagregasi (baikAND
maupunOR
). Misalnya, jika Anda ingin build gagal jika menemukan satu masalah kritis atau satu masalah dengan tingkat keparahan tinggi, tetapkanFAILURE_CRITERIA
keCritical:1,High:1,Operator:OR
. Defaultnya adalahCritical: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.Jika build gagal, selesaikan pelanggaran apa pun dalam kode Terraform Anda.
Langkah berikutnya
- Lihat laporan validasi IaC di Cloud Storage.
- Tinjau skrip validasi IaC di GitHub.
- Tinjau contoh
cloud.yaml
.