נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת AZ-700 עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
בסיום מעבדה זו תצרו, באמצעות Terraform פשוט, את רשת הייחוס של AZ-700 – VNet מרכזית (hub) עם תת-רשת שירותים משותפים (shared-services), VNet לווינית (spoke) עם תת-רשת אפליקציות, הצמדה דו-כיוונית (bidirectional peering) ביניהן, אזור DNS פרטי המקושר לשני ה-VNets לצורך פתרון שמות בין-VNet, ויומני זרימה של NSG ל-Log Analytics לצורך נראות תעבורה.
הכניסו את קטעי הקוד לקובץ main.tf אחד, הפעילו terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.az login).בדרך כלל בחינם, עם הסתייגות אחת:
כ-1–2$/חודש במצב סרק. מלכודות העלות של AZ-700 הן VPN Gateway (כ-60$/חודש) ו-ExpressRoute (200$+/חודש) – שניהם הושמטו כאן.
הפתיחה הסטנדרטית של Azure.
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
}
}
provider "azurerm" {
features {}
}
locals {
tags = {
Project = "certlabpro-az-700"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-700-rg"
location = "eastus"
tags = local.tags
}ארכיטקטורת Hub-spoke היא טופולוגיית הייחוס של AZ-700. ה-hub מרכז שירותים משותפים (חומת אש, שער VPN, מנתח DNS, ניטור) וה-spokes מתקשרים עם ה-hub כדי לגשת אליהם. אנו בונים את ה-hub בכתובת 10.0.0.0/16 עם תת-רשת אחת — ב-hub אמיתי יהיה לך GatewaySubnet עבור שער VPN/ExpressRoute, AzureFirewallSubnet עבור Azure Firewall, ותת-רשת שירותים משותפים עבור נקודות קצה נכנסות/יוצאות של DNS Resolver. היקף המעבדה הוא צורת הטופולוגיה; שירותי השער אינם בהיקף (עלות גבוהה).
resource "azurerm_virtual_network" "hub" {
name = "vnet-hub"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
address_space = ["10.0.0.0/16"]
tags = local.tags
}
resource "azurerm_subnet" "hub_shared" {
name = "shared-services"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.hub.name
address_prefixes = ["10.0.1.0/24"]
}ה-spoke בכתובת 10.1.0.0/16 — בכוונה אינו חופף ל-hub. ה-NSG המחובר לתת-רשת האפליקציות היה מגביל בסביבת ייצור כניסה ל-CIDRs ספציפיים; המעבדה משתמשת ב-* עבור המקור כדי שהארכיטקטורה תהיה ניתנת לבדיקה.
AZ-700 יישום תשתית רשת ליבה מתמודד שוב ושוב עם השאלה NSG-לפי-תת-רשת לעומת NSG-לפי-NIC. NSGs ברמת תת-הרשת (מעבדה זו) הם התשובה הנכונה כאשר השאלה מציינת "מיושם על כל המשאבים בתת-הרשת"; רמת ה-NIC היא הביטול.
resource "azurerm_virtual_network" "spoke" {
name = "vnet-spoke"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
address_space = ["10.1.0.0/16"]
tags = local.tags
}
resource "azurerm_subnet" "spoke_app" {
name = "app"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.spoke.name
address_prefixes = ["10.1.1.0/24"]
}
resource "azurerm_network_security_group" "spoke_app" {
name = "nsg-spoke-app"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
security_rule {
name = "AllowHttpsFromInternet"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "443"
source_address_prefix = "*"
destination_address_prefix = "*"
}
tags = local.tags
}
resource "azurerm_subnet_network_security_group_association" "spoke_app" {
subnet_id = azurerm_subnet.spoke_app.id
network_security_group_id = azurerm_network_security_group.spoke_app.id
}הצמדת VNet (VNet peering) היא פרימיטיב הקישוריות של AZ-700 בתוך אזור. שתי תכונות מפתח שהבחינה בודקת:
allow_forwarded_traffic — נדרש כאשר ה-hub מתכנן להעביר תעבורה מ-spoke אחד לאחר (מעבר דרך חומת אש ב-hub).use_remote_gateways / allow_gateway_transit — ה-spoke משתמש ב-use_remote_gateways = true כדי להשתמש בשער VPN/ER של ה-hub. אין לנו שער במעבדה זו, אך צורת התכונה נבדקת בבחינה.resource "azurerm_virtual_network_peering" "hub_to_spoke" {
name = "hub-to-spoke"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.hub.name
remote_virtual_network_id = azurerm_virtual_network.spoke.id
allow_forwarded_traffic = true
allow_gateway_transit = true
}
resource "azurerm_virtual_network_peering" "spoke_to_hub" {
name = "spoke-to-hub"
resource_group_name = azurerm_resource_group.main.name
virtual_network_name = azurerm_virtual_network.spoke.name
remote_virtual_network_id = azurerm_virtual_network.hub.id
allow_forwarded_traffic = true
# use_remote_gateways = true # uncomment when a gateway exists in the hub
}אזורי Private DNS הם התשובה של AZ-700 ל-תכנון ויישום פתרון שמות עבור פתרון שמות בין-VNets שאינו מסתמך על DNS ברירת המחדל של Azure. אנו יוצרים את האזור internal.contoso.com ומקשרים אליו את שני ה-VNets, גם את ה-hub וגם את ה-spoke. משאבים בכל אחד מה-VNets יכולים כעת לבצע שאילתות על רשומות באזור זה.
הדגל registration_enabled = true בקישור ה-hub מאפשר למשאבים ב-hub לרשום את שמות המארחים שלהם באופן אוטומטי. AZ-700 בוחן רישום אוטומטי זה לעומת יצירת רשומת A ידנית בתור השאלה החוזרת ונשנית "איך אני מקבל שמות DNS נקיים עבור ה-VMs שלי".
resource "azurerm_private_dns_zone" "main" {
name = "internal.contoso.com"
resource_group_name = azurerm_resource_group.main.name
tags = local.tags
}
resource "azurerm_private_dns_zone_virtual_network_link" "hub" {
name = "hub-link"
resource_group_name = azurerm_resource_group.main.name
private_dns_zone_name = azurerm_private_dns_zone.main.name
virtual_network_id = azurerm_virtual_network.hub.id
registration_enabled = true # auto-register hub-resident VMs
tags = local.tags
}
resource "azurerm_private_dns_zone_virtual_network_link" "spoke" {
name = "spoke-link"
resource_group_name = azurerm_resource_group.main.name
private_dns_zone_name = azurerm_private_dns_zone.main.name
virtual_network_id = azurerm_virtual_network.spoke.id
registration_enabled = false # spoke resources query but don't register
tags = local.tags
}terraform destroy מפרק הכל. משאבי הצמדה מתנתקים אוטומטית כאשר כל VNet נהרס; Terraform מטפל בסדר בצורה נכונה. אזורי DNS פרטיים עם רשומות פעילות יכולים להיות איטיים להריסה (Azure ממתין שכל קישורי הצרכנים יתנתקו תחילה) — היו סבלניים.
AZ-700 מכסה שטחי רשת שהמעבדה הזו אינה יכולה להכיל — VPN Gateway (כ-60$/חודש, יקר מדי למעבדה), ExpressRoute + ER Gateway, Azure Firewall + Firewall Policy + Premium IDPS (כ-1$/שעה במצב סרק), Application Gateway + WAF, Azure Front Door, Azure Load Balancer (רמת Standard), אזורי DNS ציבוריים של Azure, DNS Private Resolver, Azure Bastion, התקני רשת וירטואליים (Network Virtual Appliances), Virtual WAN, Route Server, טבלאות ניתוב מותאמות אישית (UDRs), Service Endpoints, Private Endpoints + Private Link Service, ו-DDoS Protection Standard.
אנו נשארים עם מבנה ה-hub-spoke + peering + Private DNS מכיוון שהוא המצע שכל שאר תבניות AZ-700 נצמדות אליו. VPN Gateway הולך ל-hub. חומת אש הולכת ל-hub. Application Gateway מגן על תת-רשת האפליקציות של ה-spoke. Private Endpoints מנותבים דרך ה-hub. קבל את הטופולוגיה נכונה; בנה שכבות לפי תבנית.
עבור השירותים הנ"ל, ראה את חלקי עיון, מדריך, ו-Editorial בדף הסמכה זה.