נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת AZ-400 עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
עד סוף מעבדת ידיים זו, תגדיר, באמצעות Terraform רגיל, את צד התשתית של צינור CI/CD עבור AZ-400 — Azure Container Registry לפרסום תמונות, אשכול AKS כיעד הפריסה עם זהות מנוהלת ושילוב Log Analytics, Key Vault לסודות הצינור, והקצאות התפקידים המחברות הכל לזהות ה-kubelet של AKS כך שיוכל למשוך תמונות ולקרוא סודות ללא אישורים ב-YAML של הצינור.
שחרר את קטעי הקוד לקובץ main.tf אחד, הפעל terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.az login).AKS הוא העלות העיקרית כאן:
סה"כ כ-75 דולר לחודש בזמן הפעלה. תבנית האנטי-עלות הנפוצה ביותר ב-AZ-400 היא השארת אשכול AKS שאינו בשימוש פועל — השמד או עצור את האשכול כשאינו בשימוש.
פתיח Azure סטנדרטי.
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
random = { source = "hashicorp/random", version = "~> 3.6" }
}
}
provider "azurerm" {
features {
key_vault {
purge_soft_delete_on_destroy = true
}
}
}
resource "random_id" "suffix" {
byte_length = 3
}
data "azurerm_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-az-400"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-400-rg"
location = "eastus"
tags = local.tags
}ACR הוא המקום אליו צינור ה-CI דוחף תמונות קונטיינר שצינור ה-CD מושך. AZ-400 בוחן גבול דחיפה/משיכה זה כתבנית אבטחה: צינור הבנייה מקבל AcrPush, יעד הפריסה מקבל AcrPull, והשניים לעולם לא יפגשו.
אנו משתמשים בשכבת Basic — הזולה ביותר, יעד שכפול יחיד. Premium מוסיפה שכפול גיאוגרפי ותכונת Content Trust (חתימת תמונה); שניהם נושאי בחינת AZ-400 אך יקרים מדי עבור המעבדה.
resource "azurerm_container_registry" "main" {
name = "acrcertlabpro${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "Basic"
admin_enabled = false # admin user disabled — Entra-only access
tags = local.tags
}AKS הוא יעד הפריסה המועדף ב-AZ-400 עבור עומסי עבודה של קונטיינרים. אנו משתמשים בזהות מנוהלת שהוקצתה למערכת (ברירת המחדל המודרנית; אימות מנהל שירות מוצא משימוש), מאגר צמתים מערכתי קטן ויחיד, ו-azure_policy_enabled = true (התשובה של AZ-400 ליישום תאימות לאכיפת מדיניות ברמת האשכול באמצעות הרחבת Azure Policy).
שילוב סביבת העבודה של Log Analytics + סוכן OMS הוא התשובה של AZ-400 ליישום כלי מדידה עבור יכולת תצפית ברמת האשכול — כל לוג פוד, כל מדד צומת, כל אירוע ביקורת של Kubernetes נוחת ב-Log Analytics לצורך שאילתות KQL.
resource "azurerm_log_analytics_workspace" "main" {
name = "log-az400"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "PerGB2018"
retention_in_days = 30
tags = local.tags
}
resource "azurerm_kubernetes_cluster" "main" {
name = "aks-az400"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
dns_prefix = "azaks${random_id.suffix.hex}"
default_node_pool {
name = "system"
node_count = 1
vm_size = "Standard_D2s_v3"
}
identity {
type = "SystemAssigned"
}
oms_agent {
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
}
azure_policy_enabled = true
tags = local.tags
}
# Grant the AKS kubelet identity AcrPull on the registry from Step 2.
# This is the AZ-400 password-less image-pull pattern.
resource "azurerm_role_assignment" "aks_acr_pull" {
scope = azurerm_container_registry.main.id
role_definition_name = "AcrPull"
principal_id = azurerm_kubernetes_cluster.main.kubelet_identity[0].object_id
}סודות צינור — מפתחות API, אישורי פריסה, אסימונים של צד שלישי — לעולם לא צריכים לשבת ב-YAML של הצינור. תחום היישום אבטחה ואימות בסיסי קוד לתאימות של AZ-400 בוחן תבנית זו של הפניית Key Vault במשימת צינור: צינורות מפנים לסודות לפי שם מ-Key Vault בזמן ריצה.
אנו מעניקים לזהות ה-kubelet של AKS את תפקיד 'Key Vault Secrets User' כך שגם פודים פרוסים יוכלו לקרוא סודות באמצעות ה-Secrets Store CSI Driver (מנגנון הטמעת סודות מגובים ב-Key Vault בתוך האשכול). עם התפקיד במקומו, כל פוד שזקוק לסיסמת מסד נתונים קורא אותה באמצעות מנהל ה-CSI, ולא ממשתנה סביבה שנאפה לתוך התמונה.
resource "azurerm_key_vault" "main" {
name = "kv-az400-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "standard"
enable_rbac_authorization = true
soft_delete_retention_days = 7
tags = local.tags
}
resource "azurerm_role_assignment" "kv_admin_self" {
scope = azurerm_key_vault.main.id
role_definition_name = "Key Vault Administrator"
principal_id = data.azurerm_client_config.current.object_id
}
resource "azurerm_role_assignment" "aks_kv_reader" {
scope = azurerm_key_vault.main.id
role_definition_name = "Key Vault Secrets User"
principal_id = azurerm_kubernetes_cluster.main.kubelet_identity[0].object_id
}Log Analytics מטפל באותות ברמת האשכול (מדדי צומת, לוגים של פודים); App Insights מטפל ברמת האפליקציה (מעקב בקשות, טלמטריית חריגים, מעקב תלויות, עקבות מבוזרות). AZ-400 יישום כלי מדידה בוחן את שתי השכבות — הבחינה מצפה ממך לחבר אותן כזוג, כאשר App Insights במצב מבוסס סביבת עבודה המשתמש בסביבת העבודה של Log Analytics מהשלב השלישי.
עם החלק האחרון הזה במקום, מבנה יעד ה-CI/CD של AZ-400 הושלם: ACR מקבל תמונות בנייה, AKS פורס אותן, Key Vault מספק סודות, Log Analytics + App Insights צופים בתוצאה. ה-YAML של הצינור (Azure DevOps או GitHub Actions) מניע את כל העניין — זה נמצא במאגר המקור, לא ב-Terraform.
resource "azurerm_application_insights" "main" {
name = "appi-az400"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
workspace_id = azurerm_log_analytics_workspace.main.id
application_type = "web"
tags = local.tags
}terraform destroy מפרק הכל. AKS הוא הפריט החיוב של 70 דולר לחודש עבור צומת המערכת — השמד אותו במהירות. ACR Basic הוא 5 דולר לחודש. סביבת העבודה של Log Analytics שומרת נתונים לתקופת השמירה (30 יום כאן) גם לאחר השמדת הצרכנים; סביבת העבודה עצמה נמחקת בצורה נקייה.
AZ-400 מכסה את Azure DevOps Services ומשטחי GitHub-on-Azure שאינם נמצאים בספק ה-azurerm — ארגוני Azure DevOps, פרויקטים, מאגרים, צינורות, מאגרי סוכנים, סביבות, קבוצות משתנים, חיבורי שירות (כולם בספק ה-azuredevops הנפרד), GitHub Advanced Security עבור Azure DevOps, וכללי Live Metrics + Smart Detection של Application Insights.
אנו נצמדים לתשתית יעד הפריסה מכיוון שהיא התשתית שעליה צינורות AZ-400 פורסים בפועל. ברגע ש-ACR + AKS + Key Vault + יכולת תצפית נמצאים במקום, ה-YAML של הצינור (במאגר המקור שלך, לא ב-Terraform) מבצע את עבודת הבנייה-דחיפה-פריסה באמצעות משימות Azure CLI הסטנדרטיות.
לכיסוי דפוסי Azure DevOps Services + GitHub Actions, עיין בקטעי עיון, מדריך ו-Editorial בדף אישור זה.