נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת CDL עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסוף מעבדת ידיים זו תפעיל, באמצעות Terraform פשוט, את טביעת הרגל המציאותית הקטנה ביותר ב-GCP — שני שירותי פרויקט מופעלים, דלי Cloud Storage עם גישה אחידה ברמת הדלי + מחזור חיים, ותקציב Cloud Billing שישלח מייל כאשר ההוצאה תחצה סף. ארבעה בלוקים, המקבילה ב-GCP ליצירת חשבון AWS והכנסת דלי S3 יחיד לתוכו.
הכנס את הקטעים לקובץ main.tf יחיד, הפעל terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.provider.gcloud auth application-default login.gcloud beta billing accounts list.your-project-id ואת your-billing-account-id בקטעים הבאים לפני הפעלת terraform apply.הכל בחינם בהיקף זה:
us-*; דלי המעבדה אינו מכיל דבר.המעבדה פועלת ללא עלות בקירוב של $0 לחודש. המטרה היא להוכיח שמנגנון בקרת החיובים עובד — כל בחינת CDL נסובה סביב מערך הכישורים של הפעלת GCP בבטחה, מתוכו "לדעת מה אתה מוציא" הוא כלל מספר 1.
GCP דורש ששירותי פרויקט (APIs) יופעלו במפורש לפני שניתן יהיה לספק משאבים. אנו מפעילים את storage.googleapis.com (לשלב 2) ואת billingbudgets.googleapis.com (לשלב 4). השווה ל-AWS שם ממשקי API מופעלים תמיד — GCP דורש ממך להצטרף לכל פרויקט.
החלף את your-project-id במזהה הפרויקט האמיתי שלך.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE with your GCP project ID
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-cdl"
managed_by = "terraform"
}
}
resource "google_project_service" "storage" {
service = "storage.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "budgets" {
service = "billingbudgets.googleapis.com"
disable_on_destroy = false
}Cloud Storage הוא המקבילה של GCP ל-S3 — אחסון אובייקטים עם אפשרויות שכפול אזוריות, מרובות אזורים ודו-אזוריות. בחינת CDL בוחנת שוב ושוב את השאלה איזו-מחלקת-אחסון: Standard (חם), Nearline (מעל 30 יום), Coldline (מעל 90 יום), Archive (מעל 365 יום).
אנו מפעילים גישה אחידה ברמת הדלי (ברירת המחדל האבטחתית המומלצת על ידי CDL — מבטלת ACLs מפורטים לכל אובייקט לטובת IAM בלבד) ומעבר מחזור חיים של 30 יום ← Nearline. השמות חייבים להיות ייחודיים גלובלית בכל GCP — אנו מוסיפים סיומת של הקס רנדומלי.
resource "random_id" "suffix" {
byte_length = 4
}
resource "google_storage_bucket" "main" {
name = "certlabpro-cdl-${random_id.suffix.hex}"
location = "US"
uniform_bucket_level_access = true
force_destroy = true # lab-only — never in production
lifecycle_rule {
condition {
age = 30
}
action {
type = "SetStorageClass"
storage_class = "NEARLINE"
}
}
labels = local.labels
depends_on = [google_project_service.storage]
}Cloud Logging של GCP מופעל כברירת מחדל עבור רוב השירותים — אך בחינת CDL בוחנת את ההבחנה בין יומני ביקורת מסוג נדרש לבין ברירת מחדל לבין גישה לנתונים. יומני ביקורת נדרשים (פעילות מנהל מערכת) פועלים תמיד, בחינם, ולא ניתן להשביתם. יומני ברירת מחדל (כתיבת נתונים עבור שירותים מסוימים) פועלים אך ניתנים להשבתה. יומני גישה לנתונים (קריאת נתונים) כבויים כברירת מחדל — יש להפעילם במפורש והם מחויבים כרגיל.
אנו מפעילים רישום Data Access עבור Cloud Storage כך שכל קריאה של כל אובייקט בדלי משלב 2 תגיע ל-Cloud Logging. המעבדה היא הדגמה של הפרימיטיב iam-audit-config; פריסות ייצור משתמשות בתבנית זו ברמת הארגון באמצעות תבניות [[gcp-pcse]].
resource "google_project_iam_audit_config" "storage_data_access" {
service = "storage.googleapis.com"
audit_log_config {
log_type = "DATA_READ"
}
audit_log_config {
log_type = "DATA_WRITE"
}
}בחינת CDL אוהבת תבנית זו — תקציבי Cloud Billing + התראות היא צורת שאלת בחינת CDL החוזרת לבקרת עלויות. אנו מגדירים תקציב של 10$ לחודש ומגדירים התראות ב-50% / 90% / 100% מההוצאה החזויה. ההתראה נשלחת באמצעות דוא"ל למנהלי חשבון החיוב (אין צורך בתצורה נוספת לדוא"ל; עבור Slack / PagerDuty היית מוסיף נושא Pub/Sub + Cloud Function fanout).
החלף את your-billing-account-id במזהה האמיתי שלך. התקציב מוגבל לפרויקט הנוכחי בלבד באמצעות מסנן projects — בחינת CDL בוחנת את ההבחנה הזו בין תקציב לכל פרויקט לבין תקציב לכלל הארגון.
data "google_project" "current" {}
resource "google_billing_budget" "monthly_10" {
billing_account = "your-billing-account-id" # REPLACE — find via `gcloud beta billing accounts list`
display_name = "certlabpro-cdl-$10-monthly"
budget_filter {
projects = ["projects/${data.google_project.current.number}"]
}
amount {
specified_amount {
currency_code = "USD"
units = "10"
}
}
threshold_rules {
threshold_percent = 0.5
spend_basis = "FORECASTED_SPEND"
}
threshold_rules {
threshold_percent = 0.9
spend_basis = "FORECASTED_SPEND"
}
threshold_rules {
threshold_percent = 1.0
spend_basis = "CURRENT_SPEND"
}
depends_on = [google_project_service.budgets]
}terraform destroy מפרק הכל בצורה נקייה. הדלי נמחק (במצב מעבדה בלבד, force_destroy = true מאפשר ל-Terraform למחוק אותו גם כשהוא לא ריק — לעולם אל תשתמש בזה בייצור). התקציב מתנתק; המיילים נפסיקים. תצורת ביקורת ה-IAM חוזרת לברירת המחדל. שירותי הפרויקט נשארים מופעלים (הגדרנו disable_on_destroy = false — הם בחינם להשאירם מופעלים, והשבתתם עלולה לשבור עומסי עבודה לא קשורים באותו פרויקט).
CDL מכסה משטחי GCP רבים שמעבדה זו אינה יכולה להכיל — Compute Engine VMs, GKE clusters, Cloud Run, Cloud Functions, App Engine, BigQuery, Cloud SQL, Spanner, Bigtable, Firestore, Cloud Pub/Sub, Dataflow, Dataproc, Vertex AI, Cloud Build, Cloud Deploy, Anthos / Multi-Cloud, Cloud CDN / Cloud Armor, VPC + Cloud NAT, Cloud Interconnect, Cloud IAM / Identity, Cloud KMS, Security Command Center, שוק ה-GCP המלא.
אנו נצמדים לפרימיטיבים של אחסון + רישום + חיוב מכיוון שהם טביעת הרגל המשותפת הנמוכה ביותר שכל תרחיש בחינת CDL מניח שהיא קיימת. כל שירות GCP אחר כותב ל-Cloud Storage / קורא מ-Cloud Storage / משגר יומנים ל-Cloud Logging / מופיע בלוח מחוונים של Cloud Billing. שלוט ביסודות; הוסף שירותים מיוחדים מאוחר יותר.
לכיסוי קונספטואלי של שירות אחר שירות, עיין במקטעי עיון, מדריך ו-Editorial של דף אישור זה.