Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена DP-300 с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы развернете с помощью чистого Terraform производственную базу данных Azure SQL — сервер с аутентификацией только через Microsoft Entra, одну базу данных на самом дешевом платном уровне, аудит, передаваемый в выделенную учетную запись хранения, Microsoft Defender для SQL с оповещениями об обнаружении угроз, и Log Analytics, получающую всю серверную диагностику. Это эталонный базовый уровень DP-300.
Вставьте фрагменты кода в один файл main.tf, запустите terraform init, затем terraform apply шаг за шагом.
>= 1.5 или OpenTofu >= 1.6.az login) — ваша вошедшая в систему учетная запись станет администратором Entra для SQL Server на Шаге 3.enabled = false для политики оповещений безопасности, и ресурс защиты от угроз не будет тарифицироваться.Вся связка ~$5–20/месяц в зависимости от того, включен ли Defender. Удалите оперативно.
Стандартное начало для 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-дневное хранение BLOB-объектов (соответствует требованиям к хранению аудита SQL для многих регулируемых отраслей) и блокируем публичный доступ. SQL Server на Шаге 3 будет записывать свои журналы аудита сюда.
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
}Аутентификация только через Entra (azuread_authentication_only = true) — это рекомендуемый производственный подход для DP-300: она полностью отключает вход администратора по SQL-аутентификации, принуждая каждое подключение проходить через Entra ID. Экзамен постоянно проверяет этот шаблон.
Блок администратора Entra именует текущего субъекта Terraform — это означает, что после terraform apply вы можете подключиться через sqlcmd -G, используя свою учетную запись az login, без каких-либо 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 Server фиксирует каждую команду DBCC, изменение схемы, попытку входа и предоставление/отзыв разрешений. Мы привязываем его к учетной записи хранения из Шага 2 с 90-дневным сроком хранения. Управляемому удостоверению SQL Server из Шага 3 предоставляется роль Storage Blob Data Contributor в учетной записи аудита — это шаблон аутентификации на основе удостоверений, который DP-300 предпочитает аутентификации на основе ключа учетной записи хранения.
Аудит на уровне сервера применяется ко всем базам данных под сервером. Экзамен проверяет различие между аудитом на уровне сервера (этот случай) и аудитом на уровне базы данных (переопределение для каждой БД). Аудит на уровне сервера является правильным ответом на вопросы типа все базы данных должны быть проверены.
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]
}Microsoft Defender для SQL — это ответ DP-300 на тему Мониторинг и оптимизация для обнаружения угроз: он сканирует попытки внедрения SQL, аномальные местоположения входа, брутфорс-атаки и необычное повышение привилегий. Ресурс расширенной защиты от угроз является включением для каждого сервера; политика оповещений безопасности настраивает, кто получает электронные письма при обнаружении угроз.
Мы также подключаем рабочую область Log Analytics и направляем в нее диагностические данные базы данных (статистика SQL, метрики хранилища запросов, ошибки). С этой последней частью базовая конфигурация SQL, усиленная для DP-300, сформирована: аутентификация только через Entra, аудит сервера, обнаружение угроз, наблюдаемость 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 охватывает больше поверхностей SQL-on-Azure, которые не могут быть включены в эту лабораторную работу — Управляемый экземпляр Базы данных Azure SQL (отдельная форма подготовки, ежемесячная тарификация), SQL Server на виртуальных машинах Azure (IaaS), Гибкий сервер Базы данных Azure для PostgreSQL, Гибкий сервер Базы данных Azure для MySQL, MariaDB (устаревает), эластичные пулы, георепликация / группы отработки отказа, прозрачное шифрование базы данных с управляемыми клиентом ключами, Always Encrypted (на уровне столбцов), динамическое маскирование данных, безопасность на уровне строк и вся поверхность настройки производительности Query Store.
Мы придерживаемся единой усиленной Базы данных Azure SQL, поскольку это наиболее распространенный сценарий DP-300 и основа, которую расширяют все остальные варианты (Управляемый экземпляр, георепликация, группы отработки отказа). Как только вы сможете развернуть сервер + БД с аутентификацией только через Entra + аудитом + Defender + Log Analytics за один раз, остальные варианты будут следовать той же форме с различными типами ресурсов.
Для охвата по службам см. разделы Просмотр, Справочник и Editorial на этой странице сертификации.