अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ AZ-500 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप साधारण टेराफॉर्म के साथ, एज़ूर सुरक्षा-इंजीनियर बेसलाइन को प्रावधानित कर चुके होंगे — जिसमें ग्राहक-प्रबंधित एन्क्रिप्शन कुंजी होस्ट करने वाला एक Key Vault, उस कुंजी से एन्क्रिप्ट किया गया एक Storage Account, Log Analytics में प्रवाह लॉग के साथ एक Network Security Group, और सदस्यता दायरे पर Microsoft Defender for Cloud की क्लाउड सुरक्षा मुद्रा प्रबंधन योजना सक्षम होगी। पाँच ब्लॉक; AZ-500 संदर्भ मुद्रा।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply को चरण-दर-चरण चलाएँ।
>= 1.5 या OpenTofu >= 1.6।az login)।अधिकतर निःशुल्क या लगभग निःशुल्क:
निष्क्रिय होने पर ~$1/माह। यदि आप Defender for Cloud की उन्नत योजनाओं को सक्षम करते हैं तो अतिरिक्त लागत आती है।
मानक 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" {}
data "azurerm_subscription" "current" {}
locals {
tags = {
Project = "certlabpro-az-500"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-500-rg"
location = "eastus"
tags = local.tags
}ग्राहक-प्रबंधित कुंजी (CMK) AZ-500 की डेटा सुरक्षा आदिम हैं: आप एन्क्रिप्शन कुंजी प्रदान करते हैं और घुमाते हैं, Azure स्टोरेज/SQL/आदि इसे लिफाफा एन्क्रिप्शन के लिए उपयोग करते हैं। Microsoft-प्रबंधित कुंजी (MMK) से तुलना करें — यह आसान है लेकिन Microsoft कुंजी रखता है।
हम RBAC प्राधिकरण के साथ एक Key Vault बनाते हैं, फिर उसके अंदर 2048-बिट RSA कुंजी बनाते हैं। चरण 3 में Storage Account इस कुंजी को एट-रेस्ट एन्क्रिप्शन के लिए संदर्भित करेगा। AZ-500 के प्लेटफ़ॉर्म सुरक्षा लागू करें और सुरक्षा संचालन प्रबंधित करें डोमेन दोनों इस CMK पैटर्न पर एट-रेस्ट एन्क्रिप्शन उत्तर के रूप में निर्भर करते हैं जब प्रश्न में "संगठन कुंजियों को नियंत्रित करता है" का उल्लेख होता है।
resource "azurerm_key_vault" "main" {
name = "kv-az500-${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
purge_protection_enabled = false # set true in production
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_key_vault_key" "cmk" {
name = "storage-cmk"
key_vault_id = azurerm_key_vault.main.id
key_type = "RSA"
key_size = 2048
key_opts = ["unwrapKey", "wrapKey"]
depends_on = [azurerm_role_assignment.kv_admin_self]
rotation_policy {
automatic {
time_before_expiry = "P30D"
}
expire_after = "P365D"
notify_before_expiry = "P30D"
}
}ग्राहक-प्रबंधित कुंजी का उपयोग करने वाले Storage Account को Key Vault से कुंजी पढ़ने के लिए एक उपयोगकर्ता-असाइन की गई पहचान की आवश्यकता होती है। हम उस पहचान को बनाते हैं, उसे Key Vault पर Key Vault Crypto Service Encryption User प्रदान करते हैं, फिर इसे customer_managed_key ब्लॉक के माध्यम से स्टोरेज अकाउंट से जोड़ते हैं।
key_versionless मोड (customer_managed_key.key_vault_key_id = key_vault_key.cmk.versionless_id का उपयोग करके) स्वचालित कुंजी-रोटेशन के लिए AZ-500 का सर्वोत्तम-अभ्यास उत्तर है: जब कुंजी घूमती है, तो स्टोरेज बिना किसी मैन्युअल पुनर्संरचना के स्वचालित रूप से नया संस्करण उठा लेता है।
resource "azurerm_user_assigned_identity" "storage_cmk" {
name = "uami-az500-storage"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tags = local.tags
}
resource "azurerm_role_assignment" "storage_kv_user" {
scope = azurerm_key_vault.main.id
role_definition_name = "Key Vault Crypto Service Encryption User"
principal_id = azurerm_user_assigned_identity.storage_cmk.principal_id
}
resource "azurerm_storage_account" "data" {
name = "az500data${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
identity {
type = "UserAssigned"
identity_ids = [azurerm_user_assigned_identity.storage_cmk.id]
}
customer_managed_key {
key_vault_key_id = azurerm_key_vault_key.cmk.versionless_id
user_assigned_identity_id = azurerm_user_assigned_identity.storage_cmk.id
}
tags = local.tags
depends_on = [azurerm_role_assignment.storage_kv_user]
}NSG प्रवाह लॉग नेटवर्क-ट्रैफिक दृश्यता के लिए AZ-500 सुरक्षा संचालन प्रबंधित करें आदिम हैं — वे एक NSG नियम (5-टपल + बाइट्स + पैकेट + परिणाम) द्वारा स्वीकार या अस्वीकृत प्रत्येक प्रवाह को रिकॉर्ड करते हैं, एक स्टोरेज अकाउंट में बनाए रखते हैं और Log Analytics पर Traffic Analytics के माध्यम से क्वेरी करने योग्य होते हैं।
हम NSG, एक Network Watcher (क्षेत्रीय Azure-प्रबंधित सेवा जो प्रवाह-लॉग एंडपॉइंट का मालिक है), और Traffic Analytics सक्षम के साथ एक प्रवाह लॉग संसाधन का प्रावधान करते हैं। प्रवाह लॉग एक स्टोरेज अकाउंट (हमारे डेटा स्टोरेज से अलग) में आते हैं और KQL प्रश्नों के लिए Log Analytics में संसाधित होते हैं।
resource "azurerm_network_security_group" "main" {
name = "nsg-az500"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tags = local.tags
}
resource "azurerm_network_watcher" "main" {
name = "nw-az500"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tags = local.tags
}
resource "azurerm_storage_account" "flow_logs" {
name = "az500flow${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
tags = local.tags
}
resource "azurerm_log_analytics_workspace" "main" {
name = "log-az500"
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_network_watcher_flow_log" "main" {
name = "nsg-az500-flow"
network_watcher_name = azurerm_network_watcher.main.name
resource_group_name = azurerm_resource_group.main.name
target_resource_id = azurerm_network_security_group.main.id
storage_account_id = azurerm_storage_account.flow_logs.id
enabled = true
version = 2
retention_policy {
enabled = true
days = 30
}
traffic_analytics {
enabled = true
workspace_id = azurerm_log_analytics_workspace.main.workspace_id
workspace_region = azurerm_log_analytics_workspace.main.location
workspace_resource_id = azurerm_log_analytics_workspace.main.id
interval_in_minutes = 10
}
}Defender for Cloud Azure का CSPM (Cloud Security Posture Management) और CWP (Cloud Workload Protection) सेवा है। Foundational CSPM टियर मुफ्त है और इसमें Microsoft Cloud Security Benchmark आकलन शामिल है — Azure का CIS / NIST नियंत्रणों का स्वचालित जाँच में पोर्ट। AZ-500 का सुरक्षा संचालन प्रबंधित करें डोमेन इस बेसलाइन को डे-वन सुरक्षा दृश्यता आदिम के रूप में परखता है।
हम आधारभूत सदस्यता-दायरे की मूल्य निर्धारण योजना (मुफ्त) और एक auto_provisioning_setting को सक्षम करते हैं जो नए VM पर Log Analytics एजेंट को स्वचालित रूप से हुक करता है — जिसका अर्थ है कि इस सदस्यता में नया कंप्यूट मैनुअल इंस्टॉलेशन के बिना अवलोकन क्षमता प्राप्त करता है। भुगतान की गई Defender योजनाएँ (Defender for Servers, Defender for Storage, Defender for SQL, आदि) प्रत्येक संसाधन-प्रकार का पता लगाने को सक्षम करती हैं; हम लागत के लिए उन्हें यहाँ बंद रखते हैं लेकिन उन्हें अनुवर्ती प्रश्न के रूप में उल्लेख करते हैं।
इस अंतिम भाग के साथ, AZ-500 बेसलाइन को आकार दिया गया है: आराम पर CMK एन्क्रिप्शन, नेटवर्क-फ्लो दृश्यता, मुद्रा प्रबंधन। प्रत्येक अतिरिक्त AZ-500 पैटर्न (Sentinel, Conditional Access, Private Endpoints, Azure Firewall) इस आधार से जुड़ता है।
resource "azurerm_security_center_subscription_pricing" "cspm" {
tier = "Free" # Foundational CSPM
resource_type = "CloudPosture"
}
# Optional uncomment to enable paid Defender plans (each charges per resource).
# resource "azurerm_security_center_subscription_pricing" "servers" {
# tier = "Standard"
# resource_type = "VirtualMachines"
# subplan = "P2"
# }terraform destroy सब कुछ हटा देता है। नोट्स:
purge_soft_delete_on_destroy = true नष्ट करने को वास्तव में हटा देता है।AZ-500 एक व्यापक सुरक्षा सतह को कवर करता है जिसे यह लैब फिट नहीं कर सकती है — Microsoft Sentinel (पूरा SIEM, SC-200 में कवर किया गया), Microsoft Entra Conditional Access नीतियां, Privileged Identity Management (PIM), Identity Protection, Azure Firewall + Firewall Policy + Premium IDPS, Azure Bastion, DDoS Protection Standard, Front Door / App Gateway पर Web Application Firewall, Application Security Groups, Private Endpoints + Private Link Service, ग्राहक-लॉकबॉक्स, KEK के साथ Azure Disk Encryption, अनुपालन के लिए Azure Policy पहलें, और Defender for Cloud Workload Protection योजनाएँ (Defender for Servers / Storage / SQL / Containers / Kubernetes)।
हम CMK + नेटवर्क प्रवाह लॉग + CSPM त्रयी पर टिके रहते हैं क्योंकि वे वह आधार हैं जिस पर हर अधिक-उन्नत AZ-500 पैटर्न बनता है। Sentinel हमारे जैसे Log Analytics कार्यक्षेत्रों से पढ़ता है। Conditional Access CMK-एन्क्रिप्टेड स्टोरेज तक पहुँचने वाली पहचानों की सुरक्षा करता है। Private Endpoints स्टोरेज अकाउंट पर सार्वजनिक नेटवर्क पहुँच को प्रतिस्थापित करते हैं।
उपरोक्त सतहों के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।