Defender for Servers で Azure Policy を使って MDE を個別に配布するには？

# 本記事について

Microsoft Defender for Cloud の [Defender for Servers には、Defender for Endpoint (以下 MDE) による EDR とアンチウイルスの利用権が付与](https://docs.microsoft.com/ja-jp/azure/defender-for-cloud/integration-defender-for-endpoint?tabs=windows)されています。この機能を利用するには、Defender for Cloud の環境設定の統合欄で、Defender for Endpoint のチェックボックスを入れることが必要になっています。この統合を ON にすると、サブスクリプション内のすべての仮想マシンに対して、拡張機能 MDE.Windows または MDE.Linux が有効化され、Defender for Endpoint にオンボードされます。

しかし、ケースによっては選択した一部の仮想マシンに対してのみ、MDE を有効化したいかもしれません。 本記事では、Azure Policy を利用し、サブスクリプション単位の統合設定は OFF でも、ポリシー適用範囲にある仮想マシンに対してのみ MDE の拡張機能を有効化する方法について見ていきます。なお、2022年8月時点で、この Azure Policy を利用した MDE の有効化はプレビューリリースとなっています。(特に Microsoft Defender for Cloud / Servers からのみ MDE を利用している方は注意して利用する必要があります。利用している複数のサブスクリプションのうち、少なくとも一つは統合設定を ON にしておいてください。）プレビューに使用される際は、ご利用者の責任の下、検証用の環境などでお試しください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/efac5579-a9be-a39f-0b8a-6faa264ba2e8.png)

# Azure Policy とは？

Azure Policy は Azure Governance メンバーの主要サービスの一つで、JSON で記述されたポリシーをサブスクリプションやリソースグループに対して適用し、監査や修復、デプロイ拒否を行う仕組みです。Azure Resource Manager (ARM) に組み込まれており、各サービスのデプロイ時や定期的なチェック時に動作します。

本記事ではポリシーの監査機能で MDE.Windows / MDE.Linux 拡張機能の有効化・無効化を確認し、修復タスク機能でデプロイしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/b90640e3-c1c2-216e-ce38-5d823174400c.png)

# Azure Policy を利用した MDE のデプロイ

## 利用するポリシー

本記事では、[下記のビルトインポリシー](https://docs.microsoft.com/ja-jp/azure/governance/policy/samples/built-in-policies)をそのまま利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/7c59e455-64e9-6517-fa04-c458b3ff872b.png)

## ポリシーを利用するための準備

### 権限の確認

これからの作業をすべてひとつのアカウントで行うには、サブスクリプションの所有者権限が必要です。

## マネージド ID の準備

今回は、ユーザー割り当てのマネージド ID を利用します。マネージド ID の詳細については[公式ドキュメント](https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview)をご確認ください。

Azure Portal でマネージド ID を検索し、ひとつ作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/65df7e84-4abb-04d9-5f83-a7555468560f.png)

そして、このマネージド ID に、利用するサブスクリプションに対する「セキュリティ管理者」ロールと、対象になる仮想マシンが含まれるリソースグループに対する「共同作成者」ロールを付与しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/ecd48703-ab35-eefe-32a6-9aaca92f4d86.png)

## Azure Policy の適用

Azure ポリシーの画面から割り当てをクリックし、「ポリシーの割り当て」に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/7d774886-6154-1354-5bc1-356a4d242c9e.png)

スコープで対象のリソースグループを選び、ポリシーは今回は Linux 仮想マシン用のものにします。もし除外したい仮想マシンがあれば、除外で対象から外すことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/2ef576db-8ac1-5acc-76bd-707b9eb83147.png)

修復タスクタブに進み、「修復タスクを作成する」にチェックを入れ、マネージド ID についてはさきほど作成したユーザー割り当てマネージド ID を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/06251ec0-e989-4784-f4c5-4e86ba622bee.png)

そして確認および作成から、ポリシーを適用します。すると、ポリシーの適用と実際に拡張機能を有効化する修復タスクが動き始めます。修復タスクの完了には数十分かかるときがあるので待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/069af940-3120-30f0-7c36-f7731b4d3a76.png)

ポリシーの修復メニューの「修復タスク」タブでインプットされたタスクの状態が見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/7a9fcb9f-7912-5a38-6b95-9ed629110a21.png)

待っているとそのうち修復状態が「実行中」に変わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/26e8ce8b-8cb9-e750-ba71-c7b2c53d830a.png)

そして完了になると、拡張機能がインストールされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/f1cfb31f-f657-5cc7-686f-c5872bcd1b63.png)

仮想マシンの拡張機能とアプリケーション欄に行くと、MDE.Linux (Windows の場合は、MDE.Windows) が有効化されているのが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/87535827-635b-eb33-ac94-66602d9547e7.png)

また、さらに数分後には [Microsoft 365 Security Center](https://security.microsoft.com/)のデバイス欄にも表示されてきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/31334d91-8386-06e7-ff22-17ee0f4e9b90.png)

## ポリシーの適用後に仮想マシンを追加した場合 - 修復タスクの作成

後から対象のリソースグループに仮想マシンを追加した時は、手動で修復タスクを作成します。ポリシーページの割り当てから、該当のポリシーをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/d9289f6f-c554-cf23-918e-a6c1548d5bf3.png)

そして修復タスクの作成をクリックします。新しい修復タスクの設定の中で、「修復前にリソース コンプライアンスを再評価する」にチェックを入れて修復を実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276225/00f44a35-5b06-d153-7123-ecd87786029d.png)

もしくは、ポリシーの評価で準拠していないになっているものを発見してから、修復タスクを作成するという手順でも行えます。ポリシーの評価は定期的に行われますが、オンデマンドで [Azure CLI や PowerShell でスキャンをトリガー](https://docs.microsoft.com/ja-jp/azure/governance/policy/how-to/get-compliance-data#on-demand-evaluation-scan---azure-cli)することもできます。

```bash
az policy state trigger-scan --resource-group "<リソースグループ名>"
```

# Next Step

MDE の有効化ののちは、必ず構成設定が必要です。特にデフォルトでアンチウイルスが OFF になっているので別製品でカバーされているとき以外はぜひ有効化しましょう。その手順については、[Defender for Servers で MDE (Linux) をオンボーディングした時にアンチウイルスを有効化するには？](https://qiita.com/YoshiakiOi/items/ce4749c79a0d84c273a0) をご参照ください。

# 最後に

本記事では Defender for Servers から MDE を利用する際に、Azure Policy で選択的にデプロイする方法について見てきました。こちらは、2022年8月時点でプレビュー機能であるため、利用者の責任でご検証などしていただければと存じます。

＊本稿は、個人の見解に基づいた内容であり、所属する会社の公式見解ではありません。また、いかなる保証を与えるものでもありません。正式な情報は、各製品の販売元にご確認ください。