Azure Policyを使ってDefender CSPMが有効になっていないサブスクリプションを検出・修正・強制してみる

Azure Policyを使ってDefender CSPMが有効になっていないサブスクリプションを検出・修正・強制してみる

2025.08.15

はじめに

通常、Defender CSPMはサブスクリプションに対して有効にすることができ、管理グループに対して有効にすることができません。
そのため、この記事では「管理グループ配下のすべてのサブスクリプションに対してDefender CSPMを有効にしたい」というニーズを満たすために、Azure ポリシーを使ってDefender CSPMが有効になっていないサブスクリプションを検出・修正・強制を行います。

Microsoft Defender for Cloudとは

Microsoft Defender for Cloudは、Microsoftが提供するクラウドネイティブアプリケーション保護プラットフォーム (CNAPP) で、以下の3つのコンポーネントから構成されています。

defender-for-cloud-pillars.png

Defender CSPMとは

Microsoft Defender for CloudのCSPM機能は有償プランと無償プランがあります。

  • Foundational CSPM(無償版):Defender for Cloud にオンボードするサブスクリプションとアカウントに対して既定で有効になっている無料プラン。
  • Defender CSPM(有償版):Foundational CSPM プラン以外の追加機能を提供する有料プラン。 AI セキュリティ体制、攻撃パス分析、リスクの優先順位付けなど、より高度なセキュリティ体制機能が提供される。

両者で利用可能な機能は以下の通りです。

Feature Foundational CSPM(無償版) Defender CSPM(有償版) Cloud availability
セキュリティに関する推奨事項 Azure, AWS, GCP, on-premises, Docker Hub, JFrog Artifactory
資産インベントリ Azure, AWS, GCP, on-premises, Docker Hub, JFrog Artifactory
セキュリティ スコア Azure, AWS, GCP, on-premises, Docker Hub, JFrog Artifactory
Azure Workbooks を使用したデータの視覚化とレポート Azure, AWS, GCP, on-premises
データのエクスポート Azure, AWS, GCP, on-premises
ワークフローの自動化 Azure, AWS, GCP, on-premises
修復のためのツール Azure, AWS, GCP, on-premises, Docker Hub, JFrog Artifactory
Microsoft Cloud Security Benchmark Azure, AWS, GCP
AI セキュリティ体制管理 - Azure, AWS
エージェントレス VM の脆弱性スキャン - Azure, AWS, GCP
VM シークレットのエージェントレス スキャン - Azure, AWS, GCP
攻撃パス分析 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
リスクの優先順位付け - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
セキュリティ エクスプローラーを使用したリスクハンティング - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
コンテナーのコードからクラウドへのマッピング - GitHub, Azure DevOps, Docker Hub, JFrog Artifactory
IaC のコードからクラウドへのマッピング - Azure DevOps, Docker Hub, JFrog Artifactory
PR 注釈 - GitHub, Azure DevOps
インターネット露出分析 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
外部攻撃面の管理 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
規制コンプライアンス評価 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
ServiceNow 統合 - Azure, AWS, GCP
重要な資産保護 - Azure, AWS, GCP
大規模な修復を推進するためのガバナンス - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
データ セキュリティ体制管理 (DSPM)、機密データ スキャン - Azure, AWS, GCP
Kubernetes のエージェントレス検出 - Azure, AWS, GCP
カスタム推奨事項 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
エージェントレス コードからクラウドまでのコンテナの脆弱性評価 - Azure, AWS, GCP, Docker Hub, JFrog Artifactory
API セキュリティ体制管理 (プレビュー) - Azure
Azure Kubernetes Service セキュリティ ダッシュボード (プレビュー) - Azure

https://learn.microsoft.com/en-us/azure/defender-for-cloud/concept-cloud-security-posture-management

料金

Defender CSPM(有償版)の料金は 対象リソース * $5.11/月 で計算されます。
対象のリソースは以下のとおりです。

  • VM
  • ストレージ アカウント
  • OSS DB
  • マシン上の SQL PaaS & サーバー

https://azure.microsoft.com/ja-jp/pricing/details/defender-for-cloud/

Azure Policy とは

Azure Policyは、Azureリソースの統制・管理を行うサービスです。
Policyを管理グループ、サブスクリプション、リソースグループに適用することができ、その効果は下位の管理グループ、サブスクリプション、リソースグループに継承されます。

Azure Policyの効果 (effect) は下記の通りです。

Azure Policyはカスタムで作成することもできますが、すでに用意された組み込みポリシーを使うこともできます。
この記事では、組み込みのAzure PolicyであるMicrosoft Defender CSPM を有効にするように構成するを使ってみます。

Microsoft Defender CSPM を有効にするように構成する

Microsoft Defender CSPM を有効にするように構成するの効果 (effect) は DeployIfNotExists で、要約すると以下の仕様になっています。

  • 新規作成したサブスクリプションで Microsoft Defender CSPM が無効の場合、有効にする
    • 別の管理グループから移動してきたサブスクリプションも対象
  • 既存のサブスクリプションで Microsoft Defender CSPM が無効の場合、非準拠リソースとして検出する
    • 修復ルールを実行するとで手動での有効化はできる

やってみる

この検証では以下の管理グループサブスクリプションを使用します。
いずれのサブスクリプションも Microsoft Defender CSPM が無効の状態で実施します。

  • Tenant Root Group
    • wada-management-group ←ここにポリシーをアタッチ
      • sandbox-01
    • sandbox-02

現状の確認

まずは、2つのサブスクリプションでMicrosoft Defender CSPM が無効になっていることを確認します。

Azure ポータルで、Microsoft Defender for Cloud の概要を開き アップグレードするにはこちらをクリック > をクリックします。
スクリーンショット 2025-08-14 11.38.09.png

どちらのサブスクリプションもオフになっていることを確認します。
スクリーンショット 2025-08-14 11.35.30.png

Azure Policy の割り当て

次にAzure Policyの割り当てを行います。
主要なパラメータは以下の通り設定します。

項目 設定値 備考
スコープ wada-management-group 割り当てる管理グループ,サブスクリプション,リソースグループを指定可能
除外 - 割り当てから除外するリソースを定義できる
ポリシー定義 Microsoft Defender CSPM を有効にするように構成する 割り当てるポリシーを選択する
割り当て名 Microsoft Defender CSPM を有効にするように構成する
ポリシーの適用 有効
マネージド ID を作成します 有効 修復アクションを実行するロールを作成する
マネージド ID の種類 システム割り当てマネージド ID
システム割り当て ID の場所 Japan East
コンプライアンス非対応のメッセージ - Azure ポリシーによってアクションが拒否された時のメッセージを指定

Azure ポータルからポリシーのページを開きます。
スクリーンショット 2025-08-14 11.42.04.png

サイドタブから「割り当て」をクリックします。
スクリーンショット 2025-08-14 11.56.22.png

「ポリシーの割り当て」をクリックします。
スクリーンショット 2025-08-14 11.57.40.png

スコープの「・・・」をクリックし、割り当て先を選択します。
スクリーンショット 2025-08-14 12.04.33.png
今回は「wada-management-group」の管理グループを選択し、「Select」をクリックします。
スクリーンショット 2025-08-14 12.05.02.png

ポリシー定義の「・・・」をクリックし、割り当てたいポリシーを選択します。
スクリーンショット 2025-08-14 12.07.02.png

「Configure Microsoft Defender CSPM to be enabled」を検索・選択し「追加」をクリックします。
スクリーンショット 2025-08-14 13.59.03.png

設定を確認し「次へ」をクリックします。
スクリーンショット 2025-08-14 14.00.32.png

パラメータセクションは特に選択なく「次へ」をクリックします。
スクリーンショット 2025-08-14 14.01.29.png

システム割り当てマネージドIDをJapan Eastに作成する設定をし「次へ」をクリックします。
このポリシーでは修正まで行うため、修正時に必要なロールを作成する必要があります。
スクリーンショット 2025-08-14 14.02.46.png

「コンプライアンス非対応のメッセージ」は特に指定せず「次へ」をクリックします。
スクリーンショット 2025-08-14 12.24.21.png

設定値を確認し「作成」をクリックします。
スクリーンショット 2025-08-14 14.06.18.png

これでAzure Policyの割り当ては完了です。
ポップの通り、検証は15分ほど時間をおいてから行うことを推奨します。
スクリーンショット 2025-08-14 14.07.51.png

既存のサブスクリプションの確認

Azure ポリシーの挙動を確認します。
まずは、Azure ポリシーを割り当てた管理グループに所属するsandbox-01のサブスクリプションを確認します。

Azure ポータルで、Microsoft Defender for Cloud の概要を開き アップグレードするにはこちらをクリック > をクリックします。
スクリーンショット 2025-08-14 11.38.09.png

どちらのサブスクリプションもオフになっていることを確認します。
DeployIfNotExists の仕様通り、既存のサブスクリプションは無効のままでした。
スクリーンショット 2025-08-14 11.35.30.png

続いてAzure ポリシー側の挙動を確認します。
Azure ポリシーのページから「割り当て」を開きます。
スクリーンショット 2025-08-14 11.56.22.png

先ほど作成した「Microsoft Defender CSPM を有効にするように構成する」をクリックします。
スクリーンショット 2025-08-14 14.11.26.png

「コンプライアンスの表示」をクリックします。
スクリーンショット 2025-08-14 14.14.34.png

sandbox-01のサブスクリプションが「コンプライアンス非対応」として検出されていました。
スクリーンショット 2025-08-14 14.15.53.png

新規のサブスクリプションの確認

続いて管理グループに所属していない方のサブスクリプションであるsandbox-02を、Azure Policyを割り当てた管理グループであるwada-management-groupに移動します。

Azure ポータルから管理グループのページを開きます。
スクリーンショット 2025-08-14 14.20.08.png

管理グループ (wada-management-group) をクリックします。
スクリーンショット 2025-08-14 14.22.09.png

「サブスクリプションの追加」をクリックします。
スクリーンショット 2025-08-14 14.23.21.png

sandbox-02を選択し「保存」をクリックします。
スクリーンショット 2025-08-14 14.24.25.png

1時間ほど待ってから確認したところ、sandbox-02のMicrosoft Defender CSPMが有効になっていました。
スクリーンショット 2025-08-14 16.03.12.png

Azure ポリシーのコンソールからは、「コンプライアンス対応」のステータスになっていることを確認できました。
スクリーンショット 2025-08-15 8.43.37.png

コンプライアンス非対応の修復

最後に、「コンプライアンス非対応」のステータスであるサブスクリプション (sandbox-01) に対して修復アクションを実行し、Microsoft Defender CSPM を有効にします。

対象の割り当てのページから「修復タスクの作成」をクリックします。
スクリーンショット 2025-08-15 8.47.21.png

修復オプションを選択します。
「修復する特定のリソースを選択します」を選択することで、対象のリソースを特定して修復することができます。
スクリーンショット 2025-08-15 8.52.04.png

サブスクリプション (sandbox-01) を選択して「修復」をクリックします。
スクリーンショット 2025-08-15 8.52.32.png

Microsoft Defender for Cloud の設定を確認すると、sandbox-01のMicrosoft Defender CSPMが有効になっていました。
スクリーンショット 2025-08-15 8.56.54.png

Azure ポリシーのコンソールからは、「コンプライアンス対応」のステータスになってい流ことを確認できました。
スクリーンショット 2025-08-15 8.59.31.png

最後に

この記事では、組み込みのAzure PolicyであるMicrosoft Defender CSPM を有効にするように構成するを使ってみました。

組織内のサブスクリプション全てでMicrosoft Defender CSPM を有効にしたい場合にご参考になればと思います。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.