נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת AGWA עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסיום מעבדה זו תצייד, באמצעות Terraform פשוט, את התשתית בצד GCP שכל מנהל Google Workspace צריך להבין — ממשק ה-API של Cloud Identity מופעל, קבוצת IAM נוצרה בהיקף הפרויקט, הקבוצה קשורה לתפקיד צופה, ושלב יומני ביקורת של Cloud Audit Logs המנתב אירועי ביקורת ברמת הארגון לדלי יומנים ייעודי. ארבעה בלוקים; הגבול של Cloud Identity + יומני ביקורת שהבחינה של AGWA בודקת.
העתק את הקטעים לקובץ main.tf יחיד, הרץ terraform init, ולאחר מכן terraform apply צעד אחר צעד.
הערה: רוב תוכן הבחינה של AGWA נמצא במסוף הניהול של Workspace (ניתוב Gmail, מדיניות שיתוף ב-Drive, ניהול מכשירים ניידים, גישה מודעת הקשר) שאינו ניתן ל-Terraform ישירות דרך ספק ה-google. ספק ה-googleworkspace קיים אך דורש חשבון שירות של מנהל-על ב-Workspace עם הרשאת ייפוי כוח ברמת דומיין — מחוץ לתחום מעבדה זו.
>= 1.5 או OpenTofu >= 1.6.your-project-id ו-your-org-id בקטעים הבאים.הכל בחינם בהיקף המעבדה:
מוצר Workspace עצמו מחייב לפי מושב (~6$ למשתמש/חודש עבור Business Starter, ועד ~30$ למשתמש/חודש עבור Enterprise) — מחוץ לתחום המעבדה. התשתית שמתוארת מטה היא בחינם.
הפעל את ממשקי ה-API של Cloud Identity, IAM ו-Cloud Logging.
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
}
locals {
labels = {
project = "certlabpro-agwa"
managed_by = "terraform"
}
}
resource "google_project_service" "cloudidentity" {
service = "cloudidentity.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "logging" {
service = "logging.googleapis.com"
disable_on_destroy = false
}קבוצות Cloud Identity הן המראה בצד GCP של קבוצות Google Workspace — הן נמצאות באותה ספריית זהויות וניתן לטפל בהן באותו פורמט group-email@your-domain.com. בחינת AGWA בודקת את מודל הזהות של ממשק ניהול אחיד: משתמש שסופק ב-Workspace הוא אותה זהות שמקבלת קישורי IAM ב-GCP.
אנו יוצרים קבוצת אבטחה dev-readers@your-domain.com. החלף את your-org-id במזהה הלקוח של Cloud Identity שלך (מצא באמצעות gcloud organizations list ← השדה directoryCustomerId).
משאב זה דורש בעלות על דומיין — הוא ייכשל אלא אם אתה שולט ב-your-domain.com ו-API של Cloud Identity מופעל בהיקף הארגון. עבור מעבדה מהירה ללא דומיין אמיתי, דלג על שלב זה והשתמש בזהות IAM קיימת בשלב 3.
resource "google_cloud_identity_group" "dev_readers" {
display_name = "dev-readers"
description = "Lab Cloud Identity group for the AGWA walkthrough"
parent = "customers/your-org-id" # REPLACE — find via `gcloud organizations list`
group_key {
id = "dev-readers@your-domain.com" # REPLACE with your Workspace domain
}
labels = {
"cloudidentity.googleapis.com/groups.discussion_forum" = ""
}
initial_group_config = "WITH_INITIAL_OWNER"
depends_on = [google_project_service.cloudidentity]
}מנהלי Workspace מקצים באופן קבוע הרשאות GCP לקבוצות Workspace — התבנית המומלצת על ידי AGWA היא הענק תפקידים לקבוצות, נהל חברות ב-Workspace. אנו קושרים את קבוצת dev-readers משלב 2 לתפקיד roles/viewer בפרויקט הנוכחי. כל מי שמנהל ה-Workspace שלו מוסיף אותו ל-dev-readers@your-domain.com יורש באופן מיידי תפקיד Viewer בפרויקט GCP זה. כל מי שמוסר מאבד את ההרשאה.
שים לב לקידומת group: בשדה member של IAM — זוהי התחביר הקנוני לקישור זהות קבוצה. קידומות נוספות שהבחינה של AGWA בודקת: user: (פרט), serviceAccount: (חשבון שירות), domain: (כל המשתמשים בדומיין).
data "google_project" "current" {}
resource "google_project_iam_member" "dev_readers_viewer" {
project = data.google_project.current.project_id
role = "roles/viewer"
member = "group:${google_cloud_identity_group.dev_readers.group_key[0].id}"
}בחינת AGWA בודקת את היקף יומני ביקורת של Cloud: יומני פעילות מנהל מופעלים תמיד ובחינם; יומני גישה לנתונים מושבתים כברירת מחדל ומחויבים כרגיל; יומני אירועי מערכת מופעלים תמיד ובחינם; יומני מדיניות נדחתה (דחיות VPC-SC) מופעלים תמיד ובחינם.
אנו יוצרים דלי יומנים ייעודי (נפרד מדלי _Required ו-_Default ברירת המחדל) בשם audit-events, ולאחר מכן שלב יומנים המנתב כל יומן ביקורת הקשור ל-IAM אליו. זה מספק לצוותי תאימות חלון שמירה נפרד מהיומנים התפעוליים ב-_Default — התבנית המומלצת על ידי AGWA עבור שמירת יומני ביקורת שתאריך ימים יותר מתגובה לאירועים.
resource "google_logging_project_bucket_config" "audit" {
project = data.google_project.current.project_id
location = "global"
retention_days = 400 # 13 months — typical compliance ask
bucket_id = "audit-events"
depends_on = [google_project_service.logging]
}
resource "google_logging_project_sink" "audit_sink" {
name = "certlabpro-agwa-audit-sink"
destination = "logging.googleapis.com/${google_logging_project_bucket_config.audit.id}"
filter = "logName:\"cloudaudit.googleapis.com\" AND protoPayload.serviceName=\"iam.googleapis.com\""
unique_writer_identity = true
}terraform destroy מוחק הכל. קבוצת Cloud Identity נמחקת (נמחקת רק מ-Cloud Identity; אם זו הייתה קבוצת Workspace אמיתית, שחזר מקונסולת הניהול תוך 25 יום). קישור ה-IAM מתנתק; חברי הקבוצה מאבדים את הרשאת Viewer באופן מיידי. דלי היומנים + שלב היומנים נמחקים באופן נקי; שמירת ה-400 יום רלוונטית רק כל עוד יומנים נוחתים שם.
AGWA מכסה משטחי ניהול של Workspace שאינם ניתנים ל-Terraform ישירות דרך ספק ה-google — כללי ניתוב Gmail / מסנני ספאם / DMARC / DKIM / SPF, ברירות מחדל לשיתוף Drive / כוננים משותפים / תוויות, מדיניות הקלטת Meet, הקצאת חדרי יומן, ניהול מכשירים ניידים (מתקדם + בסיסי), מדיניות דפדפן Chrome, מדיניות גישה מודעת הקשר (אשר אכן יש לה משטח TF דרך google_access_context_manager_* אך קיימת בהיקף ארגוני ודורשת Cloud Identity Premium), כללי שמירה של Vault, ייצוא eDiscovery, ועץ הגדרות קונסולת הניהול הרחב יותר של Workspace.
ספק ה-Terraform googleworkspace קיים עבור משתמשים / קבוצות / יחידות ארגוניות / דומיינים / הקצאות תפקידים בתוך Workspace עצמו, אך דורש חשבון שירות עם הרשאת ייפוי כוח ברמת דומיין ו-subject של מנהל-על — מחוץ לתחום מעבדה מהירה.
אנו נצמדים לפרימיטיבים של קבוצות Cloud Identity + IAM + יומני ביקורת מכיוון שהם הגבול המתועד בין Workspace ל-GCP — החלק שכל מנהל Workspace חייב להיות בעליו. עבור דפוסי ניהול פנימיים של Workspace (Gmail / Drive / Meet / mobile / Chrome), סעיפי המדריך והEditorial מכסים את המשטח הקונספטואלי.