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 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 Google Cloud .
Sebelum memulai
Selesaikan tugas ini untuk mulai menggunakan validasi IaC menggunakan Cloud Build.
Mengaktifkan Paket Premium atau Paket 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.
Menyiapkan izin
- Validator Shift-Left Postur Keamanan
- Log Writer
- Storage Writer
- Storage Reader
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih organisasi.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda ikuti. Untuk mengetahui grup mana saja yang Anda ikuti, hubungi administrator Anda.
- Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih organisasi.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Pilih peran, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
- Klik Simpan.
Pastikan Anda memiliki peran berikut di organisasi:
Memeriksa peran
Memberikan peran
Untuk mengetahui informasi selengkapnya tentang izin validasi IaC, lihat IAM untuk aktivasi tingkat organisasi.
Aktifkan 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.
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: shGanti kode berikut:
STATE_BUCKETdengan nama bucket Cloud Storage untuk menyimpan status TerraformREPOSITORY_NAMEdengan repositori yang menghosting kode Terraform Anda.FOLDERdengan 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: shKonversikan file rencana ke format JSON:
- name: hashicorp/terraform args: - '-c' - | terraform show -json tf.plan > plan.json dir: FOLDER id: Terraform Show entrypoint: shBuat 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/bashGanti
ORGANIZATION_IDdengan ID organisasi Anda.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 fileGanti
SCAN_RESULT_FILE_BUCKETdengan 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/bashOpsional: 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
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/bashGanti
FAILURE_CRITERIAdengan kriteria batas kegagalan yang menentukan kapan build gagal. Kriteria nilai minimum didasarkan pada jumlah masalah tingkat keseriusan kritis, tinggi, sedang, dan rendah yang ditemukan oleh pemindaian validasi IaC.FAILURE_CRITERIAmenentukan jumlah masalah dengan setiap tingkat keparahan yang diizinkan, dan juga menentukan cara masalah diagregasi (baikANDmaupunOR). Misalnya, jika Anda ingin build gagal jika menemukan satu masalah kritis atau satu masalah dengan tingkat keparahan tinggi, tetapkanFAILURE_CRITERIAkeCritical: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
- Melihat laporan validasi IaC di Cloud Storage.
- Tinjau skrip validasi IaC di GitHub.
- Tinjau contoh
cloud.yaml.