अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ DP-300 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप सादे टेराफॉर्म के साथ एक उत्पादन-मजबूत Azure SQL डेटाबेस प्रदान कर चुके होंगे — Microsoft Entra-केवल प्रमाणीकरण के साथ सर्वर, सबसे सस्ते सशुल्क टियर पर एकल डेटाबेस, एक समर्पित स्टोरेज अकाउंट में ऑडिटिंग, खतरे का पता लगाने वाले अलर्ट के साथ SQL के लिए Microsoft Defender, और सभी सर्वर डायग्नोस्टिक्स प्राप्त करने वाला Log Analytics। यह DP-300 संदर्भ बेसलाइन है।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply को चरण-दर-चरण चलाएँ।
>= 1.5 या ओपनटोफू >= 1.6।az login) — आपकी साइन-इन की गई पहचान चरण 3 में SQL सर्वर का Entra व्यवस्थापक बन जाएगी।enabled = false सेट कर सकते हैं और खतरे से सुरक्षा संसाधन का बिल नहीं आएगा।पूरा स्टैक ~$5–20/माह, यह इस बात पर निर्भर करता है कि डिफेंडर चालू है या नहीं। तुरंत नष्ट करें।
मानक 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 {}
}
resource "random_id" "suffix" {
byte_length = 3
}
data "azurerm_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-dp-300"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-300-rg"
location = "eastus"
tags = local.tags
}DP-300 का एक सुरक्षित वातावरण लागू करें डोमेन वर्कलोड डेटा और ऑडिट डेटा के बीच अलगाव का परीक्षण करता है। एक सामान्य उत्पादन पैटर्न: केवल ऑडिट लॉग के लिए एक समर्पित स्टोरेज अकाउंट, जिसमें वर्कलोड के अपने स्टोरेज की तुलना में एक अलग प्रतिधारण नीति (लंबी) और सख्त एक्सेस कंट्रोल होते हैं।
हम यहां ऑडिट अकाउंट प्रदान करते हैं, 90-दिवसीय ब्लॉब प्रतिधारण सेट करते हैं (जो कई विनियमित उद्योगों के लिए SQL ऑडिट स्टोरेज आवश्यकता से मेल खाता है), और सार्वजनिक एक्सेस को लॉक करते हैं। चरण 3 में SQL सर्वर अपने ऑडिट लॉग यहां लिखेगा।
resource "azurerm_storage_account" "audit" {
name = "dp300audit${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
blob_properties {
delete_retention_policy {
days = 90
}
}
tags = local.tags
}एंट्रा-केवल प्रमाणीकरण (azuread_authentication_only = true) DP-300 उत्पादन-सर्वोत्तम-अभ्यास का उत्तर है — यह SQL-प्रमाणीकरण व्यवस्थापक लॉगिन को पूरी तरह से अक्षम कर देता है, जिससे प्रत्येक कनेक्शन Entra ID के माध्यम से मजबूर हो जाता है। परीक्षा इस पैटर्न का बार-बार परीक्षण करती है।
एंट्रा एडमिन ब्लॉक वर्तमान टेराफॉर्म प्रिंसिपल का नाम देता है — जिसका अर्थ है कि terraform apply के बाद, आप अपनी az login पहचान का उपयोग करके sqlcmd -G के माध्यम से कनेक्ट कर सकते हैं, जिसमें कहीं भी कोई SQL पासवर्ड नहीं होता। नीचे दिया गया डेटाबेस सबसे छोटा Basic टियर है; रुक-रुक कर लोड वाले उत्पादन वर्कलोड के लिए General Purpose Serverless पर स्विच करें (निष्क्रिय होने के बाद स्वतः-विराम)।
resource "azurerm_mssql_server" "main" {
name = "sql-dp300-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
version = "12.0"
minimum_tls_version = "1.2"
public_network_access_enabled = true
# Entra-only mode: no SQL admin login created.
azuread_administrator {
login_username = "sqladmins"
object_id = data.azurerm_client_config.current.object_id
azuread_authentication_only = true
}
identity {
type = "SystemAssigned"
}
tags = local.tags
}
resource "azurerm_mssql_database" "main" {
name = "app"
server_id = azurerm_mssql_server.main.id
sku_name = "Basic"
max_size_gb = 2
tags = local.tags
}SQL सर्वर-स्तर ऑडिटिंग हर DBCC कमांड, स्कीमा परिवर्तन, लॉगिन प्रयास, और अनुदान/रद्द को कैप्चर करती है। हम इसे चरण 2 से स्टोरेज अकाउंट में 90-दिवसीय प्रतिधारण के साथ जोड़ते हैं। चरण 3 से SQL सर्वर की प्रबंधित पहचान को ऑडिट अकाउंट पर Storage Blob Data Contributor प्रदान किया जाता है — यह पहचान-आधारित प्रमाणीकरण पैटर्न है जिसे DP-300 स्टोरेज-अकाउंट-की-आधारित पर पसंद करता है।
सर्वर-स्तर ऑडिटिंग सर्वर के तहत हर डेटाबेस पर लागू होती है। परीक्षा सर्वर-स्तर (यह) और डेटाबेस-स्तर ऑडिटिंग (प्रति-DB ओवरराइड) के बीच के अंतर का परीक्षण करती है। सभी डेटाबेस को ऑडिट किया जाना चाहिए प्रश्नों के लिए सर्वर-स्तर सही उत्तर है।
resource "azurerm_role_assignment" "sql_audit_writer" {
scope = azurerm_storage_account.audit.id
role_definition_name = "Storage Blob Data Contributor"
principal_id = azurerm_mssql_server.main.identity[0].principal_id
}
resource "azurerm_mssql_server_extended_auditing_policy" "main" {
server_id = azurerm_mssql_server.main.id
storage_endpoint = azurerm_storage_account.audit.primary_blob_endpoint
retention_in_days = 90
log_monitoring_enabled = true
depends_on = [azurerm_role_assignment.sql_audit_writer]
}SQL के लिए Microsoft Defender खतरे का पता लगाने के लिए DP-300 का मॉनिटर और ऑप्टिमाइज़ उत्तर है — यह SQL इंजेक्शन प्रयासों, असामान्य लॉगिन स्थानों, ब्रूट-फोर्स जांचों, और असामान्य विशेषाधिकार उन्नयन के लिए स्कैन करता है। उन्नत खतरे से सुरक्षा संसाधन प्रति-सर्वर सक्षम है; सुरक्षा अलर्ट नीति यह कॉन्फ़िगर करती है कि खतरे का पता चलने पर किसे ईमेल प्राप्त होता है।
हम एक Log Analytics वर्कस्पेस भी जोड़ते हैं और डेटाबेस डायग्नोस्टिक्स (SQL इनसाइट्स, क्वेरी स्टोर मेट्रिक्स, त्रुटियां) को इसमें डालते हैं। इस अंतिम टुकड़े के साथ, DP-300 की मजबूत-SQL बेसलाइन आकार ले चुकी है: एंट्रा-केवल प्रमाणीकरण, सर्वर ऑडिटिंग, खतरे का पता लगाना, Log Analytics ऑब्जर्वेबिलिटी। प्रत्येक DP-300 प्रबंधित और कॉन्फ़िगर करें प्रश्न इनमें से किसी एक प्रिमिटिव पर केंद्रित होता है।
resource "azurerm_log_analytics_workspace" "main" {
name = "log-dp300"
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_mssql_server_security_alert_policy" "main" {
resource_group_name = azurerm_resource_group.main.name
server_name = azurerm_mssql_server.main.name
state = "Enabled"
email_account_admins = true
email_addresses = ["dba@example.com"] # replace
retention_days = 30
disabled_alerts = [] # all alert types enabled
}
resource "azurerm_monitor_diagnostic_setting" "sql_db" {
name = "diag"
target_resource_id = azurerm_mssql_database.main.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
enabled_log {
category = "SQLInsights"
}
enabled_log {
category = "AutomaticTuning"
}
enabled_log {
category = "Errors"
}
metric {
category = "AllMetrics"
enabled = true
}
}terraform destroy सब कुछ नष्ट कर देता है। नोट्स:
terraform destroy के माध्यम से अक्षम करने पर ~$15/माह/सर्वर का शुल्क बंद हो जाता है।DP-300 Azure पर SQL की अधिक सतहों को कवर करता है जिन्हें यह लैब शामिल नहीं कर सकती — Azure SQL Managed Instance (अलग प्रोविजनिंग आकार, मासिक बिलिंग), Azure VMs पर SQL सर्वर (IaaS), PostgreSQL के लिए Azure डेटाबेस Flexible Server, MySQL के लिए Azure डेटाबेस Flexible Server, MariaDB (बंद हो रहा है), इलास्टिक पूल, जियो-रेप्लिकेशन / फेलओवर समूह, ग्राहक-प्रबंधित कुंजियों के साथ पारदर्शी डेटाबेस एन्क्रिप्शन, ऑलवेज एन्क्रिप्टेड (कॉलम-स्तर), डायनेमिक डेटा मास्किंग, रो-स्तर सुरक्षा, और पूरा क्वेरी स्टोर प्रदर्शन-ट्यूनिंग सतह।
हम एकल मजबूत Azure SQL डेटाबेस पर टिके रहते हैं क्योंकि यह सबसे सामान्य DP-300 परिदृश्य है और वह आधार है जिसे हर दूसरा वेरिएंट (MI, जियो-रेप्लिकेशन, फेलओवर समूह) विस्तारित करता है। एक बार जब आप एक सर्वर + DB को एंट्रा-केवल प्रमाणीकरण + ऑडिटिंग + डिफेंडर + Log Analytics के साथ एक साथ प्रदान कर सकते हैं, तो वेरिएंट विभिन्न संसाधन प्रकारों के साथ समान आकार का पालन करते हैं।
सेवा-दर-सेवा कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।