😊

【Intune】MDEで特定のUSBメモリだけを許可してみた【Win/macOS】

2023/01/18に公開
5

概要

Microsoft Defender for Endpoint(以下MDE)で特定のUSBメモリだけを制御する場合にIntuneでどんな手順で設定するのか調べたので備忘録として残しておきます。あくまで自分用のメモということでかなり説明は省略していますので以下のサイトをしっかり読んだほうがいいです。
なお、後述するXMLのUUID, GUIDはサンプルのものそのまま持ってきたので差し替えて使ってもらった方がいいです。(多分問題ないけど)

以下参考にしました

https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/mac-device-control-overview?view=o365-worldwide#allow-or-block-removable-devices
https://blog.cloudnative.co.jp/8621/#co-index-5
https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-intune?view=o365-worldwide
https://thewindowsupdate.com/2021/12/16/block-usb-in-microsoft-defender-for-endpoint-and-intune/

実現したいこと

  1. 普段は外部記録媒体の利用は一切禁止(Read/Write/Executeいずれも不可)
  2. 必要に応じて上記の禁止設定を解除する
    • 解除した場合でも利用できるのは特定の外部記録媒体のみ[1]

この 2. のときのポリシーを設定していこうと思います。

前提条件

  • 対象OS
    • Windows 10 Pro 22H2
    • macOS Ventura 13.1
  • MDM
    • Intune
  • MDEオンボーディング済み

設定手順(macOS)

1. USBメモリの固体情報を確認する

Venturaから探しにくくなったのですが、システム設定一般情報システムレポートを開き、接続しているUSBメモリの情報を確認します。必要なのは以下の3つです。

  • 製品ID : 6387 (先頭の0xは無視)
  • 製造元ID : 058f (先頭の0xは無視)
  • シリアル番号 : 00000000CY02

2. XMLの作成

こちらのサンプルをベースにしました。
macOSでのUUIDの生成はuuidgenコマンドを使いましょう。
https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/mac-device-control-intune?view=o365-worldwide

先ほど調べたUSBメモリの固体情報を追記して、不要な情報を削除したものがこちらになります。
製品ID → products
製造元ID → vendors
シリアル番号 → serialNumbers

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"[]>
<plist version="1">
  <dict>
    <key>PayloadUUID</key>
    <string>C4E6A782-0C8D-44AB-A025-EB893987A295</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadOrganization</key>
    <string>Microsoft</string>
    <key>PayloadIdentifier</key>
    <string>com.microsoft.wdav</string>
    <key>PayloadDisplayName</key>
    <string>Microsoft Defender settings</string>
    <key>PayloadDescription</key>
    <string>Microsoft Defender configuration settings</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
    <key>PayloadEnabled</key>
    <true />
    <key>PayloadRemovalDisallowed</key>
    <true />
    <key>PayloadScope</key>
    <string>System</string>
    <key>PayloadContent</key>
    <array>
      <dict>
        <key>PayloadUUID</key>
        <string>99DBC2BC-3B3A-46A2-A413-C8F9BB9A7295</string>
        <key>PayloadType</key>
        <string>com.microsoft.wdav</string>
        <key>PayloadOrganization</key>
        <string>Microsoft</string>
        <key>PayloadIdentifier</key>
        <string>com.microsoft.wdav</string>
        <key>PayloadDisplayName</key>
        <string>Microsoft Defender configuration settings</string>
        <key>PayloadDescription</key>
        <string/>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>deviceControl</key>
        <dict>
          <key>removableMediaPolicy</key>
          <dict>
            <key>enforcementLevel</key>
            <string>block</string>
            <!-- Default to block all devices -->
            <key>permission</key>
            <array>
              <string>none</string>
            </array>
            <key>vendors</key>
            <dict>
              <key>058f</key>
              <dict>
                <key>permission</key>
                <array>
                  <string>none</string>
                </array>
                <key>products</key>
                <dict>
                  <key>6387</key>
                  <dict>
                    <key>permission</key>
                    <array>
                      <string>none</string>
                    </array>
                    <key>serialNumbers</key>
                    <dict>
                      <key>00000000CY02</key>
                      <array>
                        <string>read</string>
                        <string>write</string>
                        <string>execute</string>
                      </array>
                    </dict>
                  </dict>
                </dict>
              </dict>
            </dict>
          </dict>
        </dict>
      </dict>
    </array>
  </dict>
</plist>

3. Intuneからポリシーを適用する

  • Microsoft Endpoint Manager admin centerを開きます
  • デバイスmacOS構成プロファイルプロファイルの作成 を選びプロファイル作成画面を開きます
  • テンプレートカスタム を選択し作成を押します
  • 任意の名前を設定し次へ
  • 上記で作成したXMLをファイルとして保存しアップロードし、適用したい対象に割り当ててください

4. 動作確認

設定されていないUSBメモリ(USB1)はブロックされていて、許可したUSBメモリ(USB2)はマウントできています。

設定手順(Windows)

1. USBメモリの固体情報を確認する

デバイスマネージャーからUSBデバイスのプロパティを開き、詳細デバイス インスタンス パス を選択して表示された値をコピーします。

コピーした値の&&amp;に置換します。
USBSTOR\DISK&VEN_IOS_DEVI&PROD_FLASH_DRIVE&REV_2.10\00000000CY02&0

USBSTOR\DISK&amp;VEN_IOS_DEVI&amp;PROD_FLASH_DRIVE&amp;REV_2.10\00000000CY02&amp;0

2. XMLの作成

3つのXMLファイルを作成します。
WindowsでのGUIDの生成はPowerShellの[guid]::NewGuid()コマンドを使ってください。

BlockUSBGroup.xml (全てのUSBメモリを指定)

<Group Id="{9b28fae8-72f7-4267-a1a5-685f747a7146}">
<!-- ./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7b9b28fae8-72f7-4267-a1a5-685f747a7146%7d/GroupData -->
    <MatchType>MatchAny</MatchType>
    <DescriptorIdList>
        <PrimaryId>RemovableMediaDevices</PrimaryId>
    </DescriptorIdList>
</Group>

AllowUSBGroup.xml (特定のUSBメモリを指定)
こちらに先ほどのUSBSTOR\DISK&amp;VEN_IOS_DEVI&amp;PROD_FLASH_DRIVE&amp;REV_2.10\00000000CY02&amp;0を挿入します。

<Group Id="{65fa649a-a111-4912-9294-fb6337a25038}">
<!-- ./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7b65fa649a-a111-4912-9294-fb6337a25038%7d/GroupData -->
    <MatchType>MatchAny</MatchType>
        <DescriptorIdList>
	    <InstancePathId>USBSTOR\DISK&amp;VEN_IOS_DEVI&amp;PROD_FLASH_DRIVE&amp;REV_2.10\00000000CY02&amp;0</InstancePathId>
        </DescriptorIdList>
</Group>

BlockPolicy.xml
BlockUSBGroup.xmlで定義したデバイスは全てブロックするが、AllowUSBGroup.xmlで定義したデバイスは許可する。というポリシーを定義します。
今回はRead/Write/Execute全てのアクセスをブロックするのでAccessMaskを7としています。[2]

<PolicyRule Id="{c544a991-5786-4402-949e-a032cb790d0e}">
<!-- ./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyRules/%7bc544a991-5786-4402-949e-a032cb790d0e%7d/RuleData -->
    <Name>Block all Access but allow approved USBs</Name>
    <IncludedIdList>
        <GroupId>{9b28fae8-72f7-4267-a1a5-685f747a7146}</GroupId>
    </IncludedIdList>
    <ExcludedIdList>
        <GroupId>{65fa649a-a111-4912-9294-fb6337a25038}</GroupId>
    </ExcludedIdList>
    <Entry Id="{f8ddbbc5-8855-4776-a9f4-ee58c3a21414}">
        <Type>Deny</Type>
        <Options>0</Options>
        <AccessMask>7</AccessMask>
    </Entry>
</PolicyRule>

3. Intuneからポリシーを適用する

(macOSと違って結構面倒です)

  • Microsoft Endpoint Manager admin centerを開きます
  • デバイスWindows構成プロファイルプロファイルの作成 を選びプロファイル作成画面を開きます
  • Windows 10 以降テンプレートカスタム を選択し作成を押します
  • 任意の名前を設定し次へ
  • 構成設定画面で以下の設定を追加していきます[3]
    • 名前:BlockUSBGroup
      • OMA-URL:./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7b9b28fae8-72f7-4267-a1a5-685f747a7146%7d/GroupData
      • データ型:文字列(XMLファイル)
      • カスタムXML:BlockUSBGroup.xmlをアップロード
    • 名前:AllowUSBGroup
      • OMA-URL:./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7b65fa649a-a111-4912-9294-fb6337a25038%7d/GroupData
      • データ型:文字列(XMLファイル)
      • カスタムXML:AllowUSBGroup.xmlをアップロード
    • 名前:BlockPolicy
      • OMA-URL:./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyRules/%7bc544a991-5786-4402-949e-a032cb790d0e%7d/RuleData
      • データ型:文字列(XMLファイル)
      • カスタムXML:BlockPolicy.xmlをアップロード
  • 設定後はこんな感じになります
  • その後は適用したい対象に割り当てて完了です

4. 動作確認

USB2だけアクセスできています。

ちなみに

どうやらGUIから設定できるということで、本当はこちらを設定したかったんですが、Previewということもあり不具合があり設定ができなかったので断念しました。
https://learn.microsoft.com/ja-jp/mem/intune/protect/reusable-settings-groups

脚注
  1. 単純に制御を解除すると全ての記録媒体が接続できてしまいますし、特定のUSBメモリだったらいつでも使えるというのもリスクがあるのでこのような運用にしています。まぁ、Intuneによる設定の反映に時間がかかるのが難点ですが。。 ↩︎

  2. AccessMaskについてはこちらを参照のこと https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/device-control-removable-storage-access-control?view=o365-worldwide#access-control-policy ↩︎

  3. XMLの中のGUIDを自分で生成した場合はOMA-URLにもそのGUIDを埋め込む必要がありますので注意 ↩︎

Discussion

ぽてとだいすきぽてとだいすき

こんにちは、みともりさんの記事を参考にUSB制限を試しています。
ご紹介されている設定で、複数のUSBを許可することも可能なのでしょうか?
背景としては、Windowsの方のxmlファイルの複数デバイス分の記述(AllowUSBGroupとBlockPolicyのファイル)が分からなかったため、質問しました。
お忙しいところ恐れ入りますが、お手隙でご回答いただけますと幸いです。

みともりみともり

コメントありがとうございます。複数USBも指定することは可能です。
具体的にはAllowUSBGroup.xmlでUSBを指定している行を複数行にします。
例)
<DescriptorIdList>
<InstancePathId>USBSTOR\DISK&VEN_IOS_DEVI&PROD_FLASH_DRIVE&REV_2.10\00000000CY02&0</InstancePathId> //1つ目のUSBメモリ
<InstancePathId>USBSTOR\DISK&VEN_IOS_DEVI&PROD_FLASH_DRIVE&REV_2.10\0000000XXXXX&0</InstancePathId> //2つ目のUSBメモリ
</DescriptorIdList>

注意点としては、最初にポリシーを適用する際と違い、変更したポリシーを適用する際はかなり時間がかかる場合があるため、可能でしたら検証の際はPCを初期化してから変更後のポリシーを適用することをお勧めします。

ぽてとだいすきぽてとだいすき

ご回答ありがとうございます!この記述で検証してみます。
ちなみに、BlockPolicy.xmlで異なるAccessMaskにしたい場合(例えば7と1)、Allow USBGroup.xmlにて<Group ID〜>をまるっと同じ記述を2かたまりで適用可能でしょうか?
(BlockPolicy.xmlも2かたまりずつの記述かなと考えております)

みともりみともり

BlockPolicy.xmlで異なるAccessMaskにしたい場合(例えば7と1)

1つのPolicyRuleのXMLファイルで定義することが難しいため、複数のPolicyRuleに分けて設定が必要だと思われますが、複数のPolicyRuleを適用する際は競合しないように調整が必要なため設定難易度が高めです。
具体的なケースへのサポートについてはこちらでは回答が難しいため、もし有償でのコンサルティングをご希望でしたらTwitterのDMからご依頼頂けますと幸いです。

ぽてとだいすきぽてとだいすき

複数のPolicyRuleを適用する際は競合しないように調整が必要なため設定難易度が高め
そうなのですね…検証・運用方法も検討してみます!お忙しい中ご回答ありがとうございましたm(_ _)m