最終確認: 2026年5月
SC-900 試験の対象となる AWS サービスを、プレーンな Terraform を使用して構築します。1 ブロックずつ、それぞれ試験ドメインに関連付けられています。同じコードが OpenTofu でも動作します。
このラボの終わりには、プレーンなTerraformを使用して、SC-900の基礎となるセキュリティベースラインをプロビジョニングします。具体的には、Microsoft Entraセキュリティグループ(IDプリミティブ)、RBAC認証を備えたKey Vault、サブスクリプションスコープで有効化されたMicrosoft Defender for Cloud Foundational CSPM、そしてセキュリティテレメトリを受信するLog Analyticsワークスペースです。これら4つのブロックは、最も現実的なMicrosoftセキュリティおよびIDの最小限の表面積となります。
これらのスニペットを単一のmain.tfに配置し、terraform initを実行した後、terraform applyを段階的に実行してください。
>= 1.5 または OpenTofu >= 1.6。az login) — サインインしているIDがEntraグループを作成する権限を持っている必要があります。azuread Terraformプロバイダーが必要(azurermとは別)。これは、同じaz loginセッションを使用してMicrosoft Entra ID(Microsoft Graph)に対して認証を行います。この範囲ではすべて無料です。
スタック全体でアイドル状態のコストは月額約0ドルです。このSC-900ラボは、このパス全体で最も安価なものです — 目標は高価なインフラではなく、「概念的な流暢さ」です。
SC-900ではMicrosoft Entra IDとの連携が必要です — Azure RBACとは別であり、個別のTerraformプロバイダーを使用します。ここではazurermとazureadの両方を固定します。後者はEntraユーザー、グループ、アプリ登録、サービスプリンシパルを管理し、前者はAzureサブスクリプションとリソースを管理します。
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
azuread = { source = "hashicorp/azuread", version = "~> 3.0" }
}
}
provider "azurerm" {
features {
key_vault {
purge_soft_delete_on_destroy = true
}
}
}
provider "azuread" {}
data "azurerm_client_config" "current" {}
data "azuread_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-sc-900"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-sc-900-rg"
location = "eastus"
tags = local.tags
}Microsoft Entra ID(旧称Azure AD)は、すべてのMicrosoftクラウド製品が連携するIDおよびアクセスサービスです。SC-900の最初のドメイン —「セキュリティ、コンプライアンス、およびIDの概念を説明する」— は、Entra IDをID基盤として重視しています。
セキュリティグループは、一度に多くのユーザーにRBACロールを付与するための標準的なコンテナです。試験では、数百人規模のユーザーにわたって権限をスケーリングするための適切な答えとして、この「グループベースのRBAC」パターンが問われます。つまり、個人ではなくグループにロールを割り当てます。
security_enabled = trueとmail_enabled = falseの組み合わせにより、セキュリティ専用グループ(共有メールボックスなし)が作成されます。現在のユーザーを所有者として追加することで、terraform applyの後にEntraポータル経由でメンバーシップを管理できます。
resource "azuread_group" "security_admins" {
display_name = "certlabpro-sc-900-security-admins"
description = "Lab security admins group for the SC-900 walkthrough."
security_enabled = true
mail_enabled = false
owners = [
data.azuread_client_config.current.object_id,
]
}SC-900では、「関心の分離」パターンが問われます。つまり、シークレットはKey Vaultに格納され、アクセスはEntraグループ(ユーザーではない)に付与され、グループメンバーシップはID層で管理されます。私たちはRBAC認証を備えたKey Vaultをプロビジョニングし、ステップ2で作成したセキュリティグループにKey Vault Secrets Officerを割り当てます。
セキュリティ管理者グループに追加された誰もが、シークレット管理権限を自動的に継承します。これは、各ユーザーがKey Vault上で個別に指定されていた従来の「アクセスポリシー」モデルと比較されます — SC-900の「Microsoft Entra IDの基本的なIDサービスとIDタイプを特定する」ドメインでは、これをRBACがポリシーよりも優れている現代的なアプローチとして強調しています。
resource "azurerm_key_vault" "main" {
name = "kv-sc900-${substr(replace(uuid(), "-", ""), 0, 6)}"
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
lifecycle {
ignore_changes = [name] # name uses uuid() — keep the original on subsequent applies
}
}
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" "kv_secrets_group" {
scope = azurerm_key_vault.main.id
role_definition_name = "Key Vault Secrets Officer"
principal_id = azuread_group.security_admins.object_id
}Defender for Cloudの「Foundational CSPM」ティアは常に無料で、Microsoft Cloud Security Benchmark評価が含まれています。これは、MicrosoftがAzureに移植したCIS / NISTコントロールに対する自動チェックです。SC-900の「Microsoftセキュリティソリューションの機能について説明する」ドメインでは、これを初日の態勢可視化プリミティブとして指摘しています。
これをサブスクリプションスコープで有効にし、セキュリティアラートや推奨事項がKQLクエリのために集約されるLog Analyticsワークスペースをプロビジョニングします。4つのプリミティブ(Entraグループ、RBAC付きKey Vault、Defender CSPM、Log Analytics)が配置されることで、SC-900の基礎となるスタックが完成します — グループベースのID → シークレット管理 → 態勢監視 → 監査ファブリック。
resource "azurerm_log_analytics_workspace" "main" {
name = "log-sc900"
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_security_center_subscription_pricing" "cspm" {
tier = "Free"
resource_type = "CloudPosture"
}terraform destroyを実行すると、すべてが削除されます。Entraグループは即座に削除されます。それを参照するRBAC割り当ては、すでに削除されている必要があります(Terraformが依存関係グラフを処理します)。Key Vaultには7日間の論理削除機能がありますが、プロバイダー機能のpurge_soft_delete_on_destroy = trueによって実際に完全に削除されます。
SC-900は、このラボが概念的にのみ触れる多くのMicrosoftセキュリティの側面をカバーしています — 条件付きアクセス(SC-100でカバー)、特権ID管理(PIM)、ID保護、多要素認証強制ポリシー、Microsoft Sentinel(SC-200でカバー)、Microsoft Defender XDR(Defender for Identity / Endpoint / Office / Cloud Apps全体の統合インシデントビュー)、Microsoft Purview(データガバナンス + リスク + コンプライアンスマネージャー)、インサイダーリスク管理、eDiscovery、コミュニケーションコンプライアンス、およびMicrosoft 365コンプライアンスセンター全体。
このラボでは、Entraグループ + Key Vault RBAC + Defender CSPM + Log Analyticsというプリミティブに焦点を当てます。これらは、より高度なMicrosoftセキュリティサービスがすべてその上に構築される基盤だからです。SentinelはLog Analyticsワークスペースから読み込みます。条件付きアクセスは、ポリシー割り当てにEntraグループを使用します。Defender XDRはDefender for Cloudアラートを強化します。PIMはEntraグループメンバーシップを昇格させます。
サービスごとの詳細については、この認定ページにある閲覧、プレイブック、およびEditorialセクションを参照してください。