Microsoft Defender for Servers(MDfS)をサーバー単位で有効化・無効化する方法

MDfS Azure

Microsoft Defender for Servers(MDfS)は、Azure VMやAzure Arc接続サーバーを保護するためのDefender for Cloudの機能です。 通常、MDfSはサブスクリプション単位で有効化・無効化するイメージが強いですが、運用によっては「特定のサーバーのみ無効化したい」といったケースもあるかと思います。
その際は、REST APIを使用することで、特定のサーバー単位で有効化・無効化することができます。

Microsoft Defender for Servers をREST APIで制御し、サーバー単位で有効化・無効化する情報をまとめておきたいと思います。

本記事では、Microsoft公式の「Pricings – Update」REST APIを使用し、pricingName に VirtualMachines、scopeId に対象サーバーのリソースIDを指定して、サーバー単位でMDfSを有効化・無効化する方法を整理しています。

※ご注意:Microsoftのサービスや機能は頻繁に変更されることがありますので、その点をご了承ください。
また記載内容に万が一誤りがありましたら、ご指摘いただけますと幸いです。


使用するREST API

使用するAPIが記載されているWebサイトのURLは以下です。

https://learn.microsoft.com/ja-jp/rest/api/defenderforcloud/pricings/update?view=rest-defenderforcloud-2024-01-01&tabs=HTTP

URLにアクセスすると [使ってみる] のボタンがあるので、それをクリックして接続します。
接続時にはMicrosoft 365のアカウントとパスワードが必要です。(設定変更できる上位の管理者権限が必要)

今回使用する主なパラメーターは以下です。

項目指定値説明
pricingNameVirtualMachinesMicrosoft Defender for Serversの価格構成名
scopeId対象サーバーのリソースID個別に設定したいAzure VMなどのリソースID
api-version2024-01-01APIバージョン

REST API「REST APIを使ってみる」の入力値

基本の入力値

pricingName:

VirtualMachines

scapeId:  ※GUIのVM管理画面などからサーバーのscopeIDを入手しておく

"サーバー固有のscopeID"を入力

api-version:

2024-01-01

このように指定することで、サブスクリプション全体ではなく、特定サーバー単位でMDfSの設定を上書きできます。

以下より有効化・無効化の値を記載。

サーバー単位でMDfSを無効化する

サブスクリプションを有効化すると、サブスクリプション配下のサーバーは自動適用されて自動的に有効化されます。(MDfS P1, MDfS P2のライセンスがそれぞれ適用されます。P2はP1の内容を包括しています)

本文の欄に以下の内容を指定します。

{
"properties": {
"pricingTier": "Free"
}
}

「REST APIを使ってみる」のページの一番下に [ ファイル名を指定して実行 ] のボタンがあるので、それを押下すると設定が適用されます。
結果のステータスコードが200であれば正常に適用されます。

補足として、サーバーに対してサブスクリプションが適用されなくなっただけであって、すでにサーバーにデプロイされているMDfS関連のモジュールが削除されるわけではありません。

サーバー単位で有効化する

MDfS P2の有効化

基本的にMDfS P2のサブスクリプションを有効にすると自動的に有効化されるが、意図して ”pricingTier”: “Free” を設定した場合に、以下の内容を適用することにより、P2のサブスクリプションを再度適用することができます。

{
"properties": {
"pricingTier": "Standard",
"subPlan": "P2"
}
}

MDfS P1の有効化

意図してMDfS P1を有効化したい場合は、以下の内容を本文に記載して設定を反映させます。

{
"properties": {
"pricingTier": "Standard",
"subPlan": "P1"
}
}

補足として、Azure仮想マシンはサーバー個々のscopeIdを指定することによりサーバーごとに設定変更が可能だが、Azure仮想マシンスケールセット(VMSS)内の仮想マシンはscopeIdを指定しても設定は変更できません。
Azure仮想マシンスケールセット(VMSS)ごとの設定は可能となります。


現在の設定状態を確認する

Pricing – Get で現在のサーバーに適応されるサブスクリプション(MDfSプラン)を確認できます。

以下のURLのサイトにアクセスして、[使ってみる]をクリックしてREST API実行サイトに遷移する。
設定の有効化・無効化同様に、pricingName:、scapeId:、api-version: を入力する。
ページ最後の [ファイル名を指定して実行] をクリックすることにより現在の設定を確認することができます。

Pricings - Get - REST API (Azure Defender for Cloud)
選択したスコープの Defender プランの価格構成を取得します (有効なスコープはリソース ID またはサブスクリプション ID です)。

応答ステータス一覧

実行結果として応答ステータスが表示されます。

名前説明
200 OKPricing正常に更新されました
201 CreatedPricing正常に作成されました。
Other Status CodesCloudError操作が失敗した理由を説明するエラー応答。

注意点

注意点をざっと列挙しておきます。

• サブスクリプション側で強制(enforce)が有効だと上書きできない場合がある
 → 個別設定が効かず、意図通りに制御できないケースあり

• Azure Policyが適用されていると設定が上書きされる可能性がある
 → 「Deploy MDE」系ポリシーは特に要注意

• autoProvisioningSettings が ON の場合、拡張機能が再導入される可能性がある
 → OFFにしてもPolicyの影響は別で考える必要あり

• 設定変更後、即時反映されない場合がある
 → 数分〜数十分程度の遅延が発生することあり

• ポータル表示とREST API結果が一致しないことがある
 → キャッシュや評価タイミングの差による

• inherited プロパティの確認が重要
 → False であればリソース単位設定が有効

• Arcサーバーの場合は追加の要因(接続状態・エージェント)が影響する
 → Azure VMより挙動が複雑

• pricingTier を Free にしても既存エージェントは残る場合がある
 → 完全無効化には拡張機能の確認が必要

• API実行には適切なRBAC権限が必要
 → Security Admin / Owner など

• スクリプトや自動化処理がある場合、意図せず再設定される可能性がある
 → Logic Apps / Functions / CI/CD など

• 誤ったscopeId指定に注意
 → サブスクリプション単位にしてしまうと全体に影響


コメント

タイトルとURLをコピーしました