テナント制限v2 で Microsoftエンドポイントのファイアウォール保護を WDACポリシーで制御してみた

# はじめに
この記事は、以下のサイト「Microsoft Entra テナント制限v2 で 外部テナントへのアクセスをブロックする」という記事の参照先になっています。
まず、以下のサイトを初めに参照ください。

https://qiita.com/carol0226/items/f0d9bcb8adffb66d49f2

テナント制限v2 の使用時に、「Microsoftエンドポイントのファイアウォール保護」を有効にすると、すべてのアプリが Microsoftエンドポイントへのアクセス時に ファイアウォールでブロックされてしまい、何もできません。

この記事では、WDACポリシー を使って Edgeなどの Microsoftアプリ だけを除外対象にして 利用できるようにする手順を紹介しています。
※除外している目的は、テナント制限v2 に対応しているアプリだけを使えるようにし、 それ以外のアプリは 引き続きブロック するようにして、テナント制限 の完全性を満たすことです。

（Chrome、Firefox、および PowerShell などの .NET アプリケーションをブロックする）
★前提として、テナント制限v2 で制御可能なのは Edgeや Officeアプリなどであり、他社製アプリは制御できません。
https://learn.microsoft.com/ja-jp/azure/active-directory/external-identities/tenant-restrictions-v2#block-chrome-firefox-and-net-applications-like-powershell

この記事を書くことになったのは、上記の公開情報が あまりにも分かりづらかったからです。
PowerShell を除外する説明はあっても、じゃあ Edge や Officeアプリがブロックされてしまうのは、どうやって解除すれば良いのか分からないからです。

---

## 設定の Before / After
### ファイアウォール保護：無効
左：Edge　右：Chrome
テナント制限が、Edge でしか機能しない。Chrome では外部テナントにサインイン可
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fc67dea2-7b80-ca8f-ffd4-e112075b0026.png)
この状態だと、Edge は希望通りの動作なのですが、Chrome を使って外部アクセスできてしまうので、セキュリティ要件を満たせません。

---

### ファイアウォール保護：有効、WDACポリシー適用前
左：Edge　右：Chrome
両ブラウザとも、Office365や Azure Portal などの Microsoftサービスを利用できない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1ed818bf-56e0-8dd8-d7df-42c4cfe8fb81.png)
この状態だと、Microsoft 365 や、Azure Portal のほか、Microsoft Entra アカウントで認証するサービスが一切使えません。

---

### ファイアウォール保護：有効、WDACポリシー適用後
左：Edge　右：Chrome
Edge は、Microsoftサービス を利用できるようになり テナント制限も有効
Chrome は、Microsoftサービス を利用できない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8f9c919a-6219-6ac0-03e8-4178aa888f82.png)
この状態が 理想です。

では、次章から この構成を行うための手順を紹介していきます。

---

# 構成手順
## 1. ポリシーファイル (.csp) の作成
### 1-1. 事前準備（資材の入手）
1．任意の Windowws 10 マシンで 以下のサイトからダウンロードした WDAC ウィザードをインストールします。
(WDAC Policy Wizard)
https://webapp-wdac-wizard.azurewebsites.net/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c961fe09-6cb4-65f7-0f41-d0efc5d6d0c2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f5ea1d0b-49a6-e8bc-3f14-f14271c2ba78.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b053fabc-869a-3e20-4afe-baef5c9973ff.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/804de29b-58a1-d98c-e983-99e5b47cb8bd.png)

2．同じマシンで、以下のサイトから RefreshPolicy ツールをダウンロードします。
(Refresh WDAC Policy)
https://www.microsoft.com/en-us/download/details.aspx?id=102925

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b75981b3-bb8c-d8ae-c479-8c4b54402d3a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f1543d48-7105-7093-d1a1-3ec4be4106a3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3e8e582d-c939-cf77-2d1e-f3ce142c3b10.png)

### 1-2. WDAC タグ付けの構成
資材を入手した Windows 10 上で作業を続けます。
1. WDAC 構成ウィザードを起動し、[Policy Creator] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/549541f0-2584-cb80-52dc-46e6291cd2c9.png)
　<br>
1. [Base Policy] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/820be3ba-eedb-d4d0-46f6-732deb332a53.png)
　<br>
1. [Default Windows Mode] を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/fcf6b066-f8b7-739a-c8dd-644c6f7ceffc.png)
　<br>
1. 既定値のまま「Next」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3fe74db7-c8d4-b6cf-9eb6-c23626b96ac8.png)
　<br>
1. 既定値のまま「Next」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/28469ebf-11fb-2401-43aa-fe2e039a0263.png)
　<br>
1. ポリシーの作成が完了。赤下線部のパスを 確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3546b7fa-0d6c-f7e8-73e5-15b01abeb77c.png)
　<br>
1. PowerShell を 管理者モードで開き、上記の画面で 赤下線部に記載されていたパスへ 移動します。（C:\Users\<ユーザー名>\Documents）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/975746dd-b704-2912-2a36-3bfe7b5c3b4e.png)
　<br>
1. メモ帳で XML ファイルを開きます。
notepad .\WindowsWorks<日付>.xml
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/268baec3-a4c5-0c83-99c6-cbb279a25ceb.png)
　<br>
1. "SigningScenrios" セクショングループ内の "SigningScenario" セクションのうち Value=131 が登録されているセクション全体を削除して、上書き保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/638a9a50-f94c-84f5-08d9-b108f8313790.png)
　<br>
1. 以下のコマンドを実行して「M365ResourceAccessEnforcement」というタグ名で タグ付けを行う。
Set-CIPolicyIdInfo -ResetPolicyID -FilePath .\WindowsWorks<日付>.xml -AppIdTaggingPolicy -AppIdTaggingKey "M365ResourceAccessEnforcement" -AppIdTaggingValue "True"
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0c7ba41b-027e-f5e6-4e35-63df3217ddd6.png)
　<br>
1. 出力結果として、緑下線部のように 新しいポリシーID が表示されるので、コピーしてください。
PolicyID = {ポリシーID}

### 1-3. バイナリファイルへの変換 (xml → cip)
1. 以下のコマンドを実行して XML のポリシーファイルをバイナリファイルに変換します。
Convertfrom-CIPolicy .\WindowsWorks<日付>.xml ".\\{ポリシーID}.cip"
※控えたポリシーID を利用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ce5fb34b-9bf1-a7e0-0708-25e27c735dca.png)
　<br>
1. dirコマンドで バイナリ変換されたファイルがあることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d549ffe0-5d2f-7eb9-6b79-e011b6c57cb8.png)

## 2. ローカル PC へ WDAC ポリシーの適用
1. 以下のパスへ 前章で作成した .csp ファイルをコピーする。
パス： C:\Windows\System32\CodeIntegrity\CiPolicies\Active
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/cec1a255-095c-fb3c-a201-62bb471b5d46.png)

2．事前にダウンロードした RefreshPolicy ツールを実行する
& '.\RefreshPolicy(AMD64).exe'
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3824bea6-90c3-8aef-2a6b-28383eede021.png)

:::note info
別の端末に cipファイルを コピーした場合は、 RefreshPolicy ツール をインストールして 上記と同じコマンドを実行することで、ポリシーを その端末へ適用できます。
:::

## 3. Microsoftエンドポイントのファイアウォール保護を有効にする
1. ローカル PC で「グループポリシーの管理」ツールを開きます。
1. 左ペインのメニューから、以下を辿って開きます。
[コンピューターの構成]
　　[ポリシー]
　　　　[管理用テンプレート]
　　　　　　[Windowsコンポーネント]
　　　　　　　　[テナント制限]
　　　　　　　　　　[クラウドポリシーの詳細]

3．「クラウドポリシーの詳細」を開いたら、下図の通りに入力します。
- 緑枠 ＝ テナント制限v2 の テナント ID の情報から転記
- 青枠 ＝ テナント制限v2 の ポリシー ID の情報から転記
- 「Microsoftエンドポイントのファイアウォール保護を有効にする」にチェックを入れる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5c36bb9a-17ae-67d8-c2cc-f7cc31bcc891.png)

:::note info
ディレクトリ ID（緑枠）と、ポリシー GUID（青枠）は、以下の画面の場所から転記してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c95c5e7b-7aae-b661-d136-316d5fbcc0db.png)
:::

4．gpupdate /force コマンドを実行します。

# 動作確認
以下の通り、Edge（左側）は Microsoft 365 にアクセスでき、Chrome（右側）は サインイン画面に入る事ができなくなった事が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5ea75d6f-8db2-6bfa-21f8-ae51c0553213.png)

# WDACポリシー を複数のデバイスへ展開するには
以下の公開情報を参考に、WDACポリシー (cipファイル) を端末に配布して 展開が可能です。

## Intune で展開する（検証済み）
以下の記事で説明しています。
私の方でも、検証済みで おススメの方法です。

https://qiita.com/carol0226/items/8a5f11acd6282705b6fe

Intune 以外の方法は、私も未検証で、仕組みの紹介レベルです。ご注意ください。

## ツールを導入して GPO で有効化する
展開する 全VM に WDACポリシー更新ツール をインストールして、コマンドでアクティブ化します。
ツールの展開は、アプリケーションの配布機能などを使う必要があります。
コマンドは、GPO を使って スクリプトを配布＆実行させれば良さそうです。

これは、前章で ローカルで実行したことと、基本的には同じ手順です。ツールの配布が面倒ですが、この方法は 理解しやすいですし、手動で成功している方法なので、確実性が高そうです。

（Windows 11、Windows 10 バージョン 1903 以降、および Windows Server 2022 以降のポリシーの展開）
https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/windows-defender-application-control/deployment/deploy-wdac-policies-with-script#deploying-policies-for-windows-11-windows-10-version-1903-and-above-and-windows-server-2022-and-above

## WMI スクリプトで展開する
WDAC ポリシーを GPO などで配りさえすれば、あとは スクリプトで有効化できそうです。

（スクリプトを使用して WDAC ポリシーをデプロイする　－
　－　他のすべてのバージョンの Windows および Windows Server のポリシーの展開）
https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/windows-defender-application-control/deployment/deploy-wdac-policies-with-script#deploying-policies-for-all-other-versions-of-windows-and-windows-server

## GPO で展開する
GPOで展開する方法です。しかし「メモリ整合性」を理解していないといけなさそうです。トラブっても 解析が難しいと思います。

（Windows Defender アプリケーション制御 (WDAC) ポリシーの展開）
https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/windows-defender-application-control/deployment/wdac-deployment-guide

（グループ ポリシーを使用してアプリケーション制御ポリシー Windows Defender展開する）
https://learn.microsoft.com/ja-jp/windows/security/application-security/application-control/windows-defender-application-control/deployment/deploy-wdac-policies-using-group-policy