Tutorial ini menjelaskan cara memverifikasi bahwa infrastruktur sebagai kode (IaC) Anda tidak melanggar kebijakan organisasi atau detektor Security Health Analytics.
Tujuan
- Membuat postur keamanan.
- Men-deploy postur pada project.
- Memeriksa contoh file Terraform untuk mengetahui pelanggaran.
- Memperbaiki pelanggaran dalam file Terraform, dan memeriksa file lagi untuk memverifikasi perbaikan.
Sebelum memulai
Menyiapkan izin
-
Di Google Cloud konsol, 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 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 Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih organisasi.
- Klik Berikan akses.
-
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 Tambahkan peran lain , lalu tambahkan setiap peran tambahan.
- Klik Simpan.
Pastikan Anda memiliki peran berikut di organisasi: Project Creator dan Admin Postur Keamanan
Memeriksa peran
Memberikan peran
Menyiapkan Cloud Shell
- Temukan ID organisasi Anda:
gcloud organizations list
Di konsol, aktifkan Cloud Shell. Google Cloud
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan prompt command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Menyiapkan lingkungan
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan layanan Postur keamanan dan API pengelolaan Security Command Center:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable securityposture.googleapis.com
securitycentermanagement.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus terlebih dahulu login ke gcloud CLI dengan identitas gabungan Anda.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih Google Cloud project yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama Google Cloud project Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk Google Cloud project Anda.
Aktifkan layanan Postur keamanan dan API pengelolaan Security Command Center:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable securityposture.googleapis.com
securitycentermanagement.googleapis.com - Salin nomor project. Anda memerlukan nomor project untuk menetapkan resource target saat men-deploy postur.
gcloud projects describe PROJECT_ID
- Lakukan inisialisasi Terraform:
terraform init
Membuat dan men-deploy postur
Di Cloud Shell, luncurkan Cloud Shell Editor. Untuk meluncurkan editor, klik
Buka Editor di toolbar jendela Cloud Shell.Buat file YAML bernama
example-standard.yaml.Tempelkan kode berikut ke dalam file Anda:
name: organizations/ORGANIZATION_ID/locations/global/postures/example-standard state: ACTIVE policySets: - policies: - constraint: orgPolicyConstraintCustom: customConstraint: actionType: ALLOW condition: "resource.initialNodeCount == 3" description: Set initial node count to be exactly 3. displayName: fixedNodeCount methodTypes: - CREATE name: organizations/ORGANIZATION_ID/customConstraints/custom.fixedNodeCount resourceTypes: - container.googleapis.com/NodePool policyRules: - enforce: true policyId: fixedNodeCount - constraint: securityHealthAnalyticsCustomModule: config: customOutput: {} description: Set MTU for a network to be exactly 1000. predicate: expression: "!(resource.mtu == 1000)" recommendation: Only create networks whose MTU is 1000. resourceSelector: resourceTypes: - compute.googleapis.com/Network severity: HIGH displayName: fixedMTU moduleEnablementState: ENABLED policyId: fixedMTU - constraint: securityHealthAnalyticsModule: moduleEnablementState: ENABLED moduleName: BUCKET_POLICY_ONLY_DISABLED policyId: bucket_policy_only_disabled - constraint: securityHealthAnalyticsModule: moduleEnablementState: ENABLED moduleName: BUCKET_LOGGING_DISABLED policyId: bucket_logging_disabled policySetId: policySet1
Ganti ORGANIZATION_ID dengan ID organisasi Anda.
Di Cloud Shell, buat postur:
gcloud scc postures create organizations/ORGANIZATION_ID/locations/global/postures/example-standard --posture-from-file=example-standard.yaml
Salin ID revisi postur yang dihasilkan perintah.
Deploy postur ke project Anda:
gcloud scc posture-deployments create organizations/ORGANIZATION_ID/locations/global/postureDeployments/example-standard \ --posture-name=organizations/ORGANIZATION_ID/locations/global/postures/example-standard \ --posture-revision-id="POSTURE_REVISION_ID" \ --target-resource=projects/PROJECT_NUMBER
Ganti kode berikut:
ORGANIZATION_ID: ID organisasi Anda.POSTURE REVISION_ID: ID revisi postur yang Anda salin.PROJECT_NUMBER: nomor project Anda.
Membuat file Terraform dan memvalidasi
Di Cloud Shell, luncurkan Cloud Shell Editor.
Buat file Terraform bernama
main.tf.Tempelkan kode berikut ke dalam file Anda:
terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { region = "us-central1" zone = "us-central1-c" } resource "google_compute_network" "example_network"{ name = "example-network-1" delete_default_routes_on_create = false auto_create_subnetworks = false routing_mode = "REGIONAL" mtu = 100 project = "PROJECT_ID" } resource "google_container_node_pool" "example_node_pool" { name = "example-node-pool-1" cluster = "example-cluster-1" project = "PROJECT_ID" initial_node_count = 2 node_config { preemptible = true machine_type = "e2-medium" } } resource "google_storage_bucket" "example_bucket" { name = "example-bucket-1" location = "EU" force_destroy = true project = "PROJECT_ID" uniform_bucket_level_access = false }Ganti
PROJECT_IDdengan project ID project yang Anda buat.Di Cloud Shell, buat file rencana Terraform dan konversikan ke format JSON:
terraform plan -out main.plan terraform show -json main.plan > mainplan.json
Buat laporan validasi IaC untuk
mainplan.json:gcloud scc iac-validation-reports create organizations/ORGANIZATION_ID/locations/global --tf-plan-file=mainplan.json
Perintah ini menampilkan laporan validasi IaC yang menjelaskan pelanggaran berikut:
mtuuntukexample_networkbukan 1000.initial_node_countuntukexample_node_poolbukan 3.example_buckettidak mengaktifkan akses level bucket yang seragam.example_buckettidak mengaktifkan logging.
Mengatasi pelanggaran
Di Cloud Shell, luncurkan Cloud Shell Editor.
Perbarui file
main.tfdengan perubahan berikut:terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { region = "us-central1" zone = "us-central1-c" } resource "google_compute_network" "example_network"{ name = "example-network-1" delete_default_routes_on_create = false auto_create_subnetworks = false routing_mode = "REGIONAL" mtu = 1000 project = "PROJECT_ID" } resource "google_container_node_pool" "example_node_pool" { name = "example-node-pool-1" cluster = "example-cluster-1" project = "PROJECT_ID" initial_node_count = 3 node_config { preemptible = true machine_type = "e2-medium" } } resource "google_storage_bucket" "example_bucket" { name = "example-bucket-1" location = "EU" force_destroy = true project = "PROJECT_ID" uniform_bucket_level_access = true logging { log_bucket = "my-unique-logging-bucket" // Create a separate bucket for logs log_object_prefix = "tf-logs/" // Optional prefix for better structure } }Ganti
PROJECT_IDdengan project ID project yang Anda buat.Di Cloud Shell, buat file rencana Terraform dan konversikan ke format JSON:
terraform plan -out main.plan terraform show -json main.plan > mainplan.json
Buat ulang laporan validasi IaC untuk
mainplan.json:gcloud scc iac-validation-reports create organizations/ORGANIZATION_ID/locations/global --tf-plan-file=mainplan.json
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Hapus a Google Cloud project:
gcloud projects delete PROJECT_ID
Langkah berikutnya
- Tinjau Validasi IaC Anda terhadap kebijakan organisasi Anda.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.