条件付きアクセスでMDEにオンボードされたデバイスだけがアクセスできるようにする

皆さんこんにちは。国井です。
Microsoft Entra IDで提供している条件付きアクセスはクラウドサービスに対するアクセス制御機能として利用している企業も多いと思いますが、実際に利用する企業が増えてくると、やりたいことも増えるもの。
そこで今回はMicrosoft Defender for Endpoint (MDE) にオンボードされたデバイスだけが条件付きアクセスをクリアし、クラウドサービスにアクセスできるように制御する方法を設定してみたいと思います。

Microsoft Intuneコンプライアンスポリシーを利用

条件付きアクセスによるアクセス制御では様々な条件をもとにした制御設定ができますが、
条件付きアクセスだけで実現できない、やりたい設定がある場合にはMicrosoft Intuneと組み合わせる方法があります。
それがMicrosoft Intuneのコンプライアンスポリシーで、条件付きアクセス側のアクセス制御設定として、[準拠しているとしてマーク済みである必要があります]のチェックを付けておくと、コンプライアンスポリシーをもとにアクセス制御を行うようになります。

image

コンプライアンスポリシーでMDEを監視すればよい?

コンプライアンスポリシーにはMDEの設定項目があり、これを利用するとMDEにオンボードされたデバイスのうち、リスクレベルが高くないデバイスであれば準拠と判定され、条件付きアクセスによるアクセスを許可することになります。
しかし、コンプライアンスポリシーの準拠/非準拠はすぐに切り替わるものではありません。そのためリスクレベルがどうか?ということではなく、ひとまずデバイスがMDEにオンボードされているか?これだけをチェックしたい会社さんもあるでしょう。

image

MDEにオンボードされてることをチェックするコンプライアンスポリシー

そんな方はコンプライアンスポリシーのカスタムコンプライアンスを使いましょう。
カスタムコンプライアンスはPowerShellスクリプトを事前に用意しておき、PowerShellスクリプトの実行結果に基づいて準拠/非準拠を判定するものです。

image

これを利用して、そのデバイスがMDEにオンボードされているか?をチェックすれば良いのです。デバイスがMDEにオンボードされていることを確認するときはレジストリで以下をチェックします。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Advanced Threat Protection\Status
OnboardingState値:1 (DWORD)

ということで、こちらの投稿を頼りに

レジストリの値をチェックするスクリプトをこんな感じで作ってみました。

$onboard = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows Advanced Threat Protection\status").OnboardingState | where {$_ -eq 1}
if ($ep -eq $patch){$hash = @{ Patch = $true}} else {$hash = @{ Patch = $false}}
return $hash | ConvertTo-Json -Compress

これを.ps1ファイルとして保存し、Microsoft Intune管理センターの デバイス > コンプライアンスポリシー > スクリプト からスクリプトファイルを登録すればできあがり。
そのほかの設定は前述の投稿の通りに設定していただければMDEにオンボードされたデバイスだけがコンプライアンスポリシーで準拠と判定され、条件付きアクセスでアクセスが許可されるようになります。