AVDでAzureADテナント制限を試す!

AzureADテナント制限とは、指定したテナントにのみ接続を許可する機能です。
例えば、セッションホストからM365への接続を許可した場合、自社用のM365の他に個人用のM365にも接続ができてしまうので、セキュリティ上の懸念事項が増えてしまいます。
そこで、テナント制限を利用する事で、自社用のM365のみ接続を許可する事ができます。
さらに、条件付きアクセスのIP制限と組み合わせると、より効果を発揮します!

※パフォーマンス観点から、M365への接続にはProxyを通さない直接接続が推奨となります。

しくみは簡単

①Proxyにて、許可したいテナントの[テナント名][テナントID]をHTTPヘッダーに挿入
②AzureADにて、HTTPヘッダーに記載されたテナントに対してのみ認証を許可
※自宅や外出先のようなProxyを通過しないM365向け通信は制御できません。
※AzureADやM365での設定は不要です。

AVD環境で導入する際には、PACファイルにて、M365向け通信をProxyに、通常のWebアクセスはWeb Proxyに向けます。


全体の流れ

Step1:Fiddlerのインストール
Step2:サーバー証明書の生成
Step3:HTTPヘッダー挿入の設定
※セッションホストには、Fiddlerを宛先としたPACファイルを設定しております。

今回はProxyとして「Fiddler Classic」を利用します。
※下記を満たすProxyであれば何でもOKです。
・HTTPヘッダー挿入
・サーバー証明書の実装
・SSL/TSLインターセプト


Step1:Fiddlerのインストール

Proxyサーバー用にWindows10 21H2を利用しています。

Fiddler公式サイトから[Fiddler Classic]をダウンロード

インストールが完了するとブラウザが起動します。

先ずは、Proxy機能を有効化します。

[Tools]ー[Options]を選択

下記項目を選択後、Fiddlerを再起動します。※待受ポートは[8888]


Step2:サーバー証明書の生成

SSL/TSL通信を復号化するために、自身がCAとなり証明書を生成します。

[Tools]ー[Options]を選択

下記項目を選択

ポップアップが表示されるので、[Yes]を選択

[はい]を選択

[はい]を選択

証明書がインストールされている事が確認できます。
※証明書を鍵付きでエクスポートし、セッションホストにインストールしておきます。

※こちらは、エクスポート不要


Step3:HTTPヘッダー挿入の設定

HTTPヘッダーに接続を許可するテナントの情報を挿入します。

[Rules]ー[Customize Rules]を選択

163行目に挿入

// Allows access to the listed tenants.
if (
oSession.HostnameIs(“login.microsoftonline.com”) || ※ヘッダー挿入を行う宛先
oSession.HostnameIs(“login.microsoft.com”) ||
oSession.HostnameIs(“login.windows.net”)
)
{
oSession.oRequest[“Restrict-Access-To-Tenants”] = “xxxx“; ※接続許可するテナント名
oSession.oRequest[“Restrict-Access-Context”] = “xxxx“; ※ログを保存するテナントID
}

// Blocks access to consumer apps
if (
oSession.HostnameIs(“login.live.com”)
)
{
oSession.oRequest[“sec-Restrict-Tenant-Access-Policy”] = “restrict-msa”;
}

保存して閉じて下さい。


確認してみましょう!

セッションホストから、Outlookアプリで別のテナントに接続してみるとブロックされます。
[Restrict-Access-To-Tenants]で指定したテナントしか許可されません。

パケットを確認すると、HTTPヘッダーにテナント情報が挿入されています。

[Restrict-Access-Context]で指定したテナントに、テナント制限のログが記録されます。
※Azure Active Directoryー[概要]ー[その他の機能]ー[テナントの制限] P1が必要