macOS 的裝置控制

適用於:

想要體驗適用於端點的 Microsoft Defender 嗎? 注册免費試用版。

需求

適用於 macOS 的裝置控制具有下列必要條件:

  • 適用於端點的 Microsoft Defender 權利 (可以試用)
  • 最低操作系統版本:macOS 11 或更新版本
  • 最低產品版本:101.34.20

概觀

適用於端點的 Microsoft Defender 裝置控制項功能可讓您:

  • 稽核、允許或防止讀取、寫入或執行卸載式記憶體的存取;和
  • 管理 iOS 和可攜式裝置,以及 Apple APFS 加密的裝置和藍牙媒體,無論是否排除。

準備您的端點

  • 適用於端點的 Microsoft Defender 權利 (可以試用)

  • 最低操作系統版本:macOS 11 或更新版本

  • 部署完整磁碟存取:您先前可能已針對其他 MDE 功能建立並部署此https://github.com/microsoft/mdatp-xplat/blob/master/macos/mobileconfig/profiles/fulldisk.mobileconfig功能。 您必須授與新應用程式的完整磁碟訪問許可權: com.microsoft.dlp.daemon

  • 在 [MDE 喜好設定上啟用裝置控件:

    • 數據外洩防護 (DLP) /Features/

    • 針對 [功能名稱],輸入 “DC_in_dlp”

    • 針對 [狀態],輸入 「已啟用」

範例 1:使用 schema.json 的 JAMF。

顯示如何在 適用於端點的 Microsoft Defender 數據外洩防護/功能中啟用裝置控件的螢幕快照。

範例 2:[demo.mobileconfig] (https://github.com/microsoft/mdatp-devicecontrol/blob/main/Removable%20Storage%20Access%20Control%20Samples/macOS/mobileconfig/demo.mobileconfig)
<key>dlp</key>
<dict> 
  <key>features</key>
  <array> 
	<dict> 
	  <key>name</key>
	  <string>DC_in_dlp</string>
	  <key>state</key>
	  <string>enabled</string>
	</dict>
  </array>
</dict>
  • 最低產品版本:101.91.92 或更高版本

  • 透過終端機執行 mdatp 版本 ,以查看用戶端電腦上的產品版本:

    此螢幕快照顯示當您在終端機中執行 mdatp 版本以查看用戶端電腦上的產品版本時的結果。

了解原則

原則會決定macOS的裝置控制行為。 原則是透過 Intune 或 JAMF 設定為電腦或使用者集合的目標。

macOS 的裝置控制原則包含設定、群組和規則:

  • 稱為「設定」的全域設定可讓您定義全域環境。
  • 稱為「群組」的群組可讓您建立媒體群組。 例如,已授權的USB群組或加密的USB群組。
  • 稱為「規則」的存取原則規則可讓您建立原則來限制每個群組。 例如,只允許授權使用者寫入存取授權的USB群組。

注意事項

建議您使用 GitHub 上的範例來了解屬性:mdatp-devicecontrol/Removable Storage 存取控制 Samples/macOS/policy,位於 main - microsoft/mdatp-devicecontrol (github.com)

您也可以在 main - microsoft/mdatp-devicecontrol (github.com) 使用 mdatp-devicecontrol/tree/main/python#readme 的 腳本,將 Windows 裝置控制原則轉譯為 macOS 裝置控制原則,或將 macOS 裝置控件 V1 原則轉譯為此 V2 原則。

注意事項

在建立原則時,客戶應該考慮macOS的裝置控制有 已知問題

最佳做法

macOS 的裝置控制器具有與 Windows 裝置控制類似的功能,但macOS和 Windows 提供不同的基礎功能來管理裝置,因此有一些重要的差異:

  • macOS 沒有裝置的集中式 裝置管理員 或檢視。 與裝置互動的應用程式會授與/拒絕存取權。 這就是為什麼在macOS上有一組更豐富的 存取類型。 例如,在 macOS 的裝置控制件 portableDevice 上,可以拒絕或允許 download_photos_from_device
  • 為了與 Windows 保持一致,有 generic_readgeneric_writegeneric_execute 存取類型。 如果未來新增其他特定存取類型,則不需要變更具有泛型存取類型的原則。 最佳做法是使用泛型存取類型,除非有拒絕/允許更特定作業的特定需求。
  • 使用一 deny 般存取類型建立原則是嘗試完全封鎖該裝置類型所有作業的最佳方式, (例如 Android 手機) ,但如果使用 macOS 裝置控件不支援的應用程式來執行作業,則可能仍有間距。

設定

以下是您在macOS的裝置控制原則中建立群組、規則和設定時可以使用的屬性。

屬性名稱 描述 選項
特徵 功能特定組態 針對下列功能,您可以將 設定為 disable false 或 true:
- removableMedia
- appleDevice
- portableDevice,包括相機或 PTP 媒體
- bluetoothDevice

默認值為 true,因此如果您未設定此值,即使您為 removableMedia建立自定義原則,它也不會套用,因為它預設為停用。
全球 設定預設強制執行 您可以將 設定為defaultEnforcement
- allow (預設)
- deny
Ux 您可以在通知上設定超連結。 navigationTarget: string. 範例:"http://www.microsoft.com"

Group

屬性名稱 描述 選項
$type 群組的種類 “device”
id GUID 是唯一標識符,代表群組,並將用於原則中。 您可以透過 New-Guid (Microsoft.PowerShell.Utility) - PowerShell 或 macOS 上的 uuidgen 命令來產生標識符
name 群組的易記名稱。 字串
query 此群組下的媒體涵蓋範圍 如需詳細資訊,請參閱下方 的查詢 屬性數據表。

查詢

裝置控制項支援兩種查詢:

查詢類型 1 如下所示:

屬性名稱 描述 選項
$type 識別要在子句上執行的邏輯作業 all:子 下的任何屬性都是 And 關聯 性。 例如,如果系統管理員針對每個連線的USB放置 vendorIdserialNumber,系統會檢查USB是否符合這兩個值。
: 等同於 所有
任何: 下的屬性為 Or 關聯性。 例如,如果系統管理員針對每個連線的USB放置 vendorIdserialNumber,只要USB具有相同的 vendorIdserialNumber 值,系統就會強制執行。
: 等於 任何
clauses 使用媒體裝置屬性來設定群組條件。 子句對象的陣列,評估以判斷群組成員資格。 請參閱下方的 句一節。

查詢類型 2 如下所示:

屬性名稱 描述 選項
$type 識別要在子查詢上執行的邏輯作業 not:查詢的邏輯否定
query 子查詢 將會否定的查詢。

子句屬性

屬性名稱 描述 選項
$type 子句的類型 如需支援的子句,請參閱下表。
value $type要使用的特定值

支援的子句

子句$type 數值 描述
primaryId 其中一個:
- apple_devices
- removable_media_devices
- portable_devices
- bluetooth_devices
vendorId 4 位數十六進位字串 符合裝置的廠商標識碼
productId 4 位數十六進位字串 符合裝置的產品標識碼
serialNumber 字串 符合裝置的序號。 如果裝置沒有序號,則不相符。
encryption apfs 比對裝置是否為apfs-encrypted。
groupId UUID 字串 比對裝置是否為另一個群組的成員。 值代表要比對之群組的 UUID。
群組必須在 子句之前於原則內定義。

存取原則規則

屬性名稱 描述 選項
id GUID 是唯一標識符,代表規則,並會用於原則中。 New-Guid (Microsoft.PowerShell.Utility) - PowerShell
uuidgen
name 字串,原則的名稱,將會根據原則設定顯示在快顯通知上。
includeGroups 群組 (將套用原則的) 。 如果指定多個群組,則原則會套用至所有這些群組中的任何媒體。 如果未指定,此規則會套用至所有裝置。 此實例中必須使用群組內的 標識 碼值。 如果 中有 includeGroups多個群組,則為 AND
"includeGroups": ["3f082cd3-f701-4c21-9a6a-ed115c28e217"]
excludeGroups 群組 (原則不適用的) 。 此實例中必須使用群組內的 標識 碼值。 如果 excludeGroups 中有多個群組,則為 OR
entries 一個規則可以有多個專案;每個具有唯一 GUID 的專案都會告訴裝置控制一項限制。 請參閱本文稍後的輸入屬性表格以取得詳細數據。

下表列出您可以在專案中使用的屬性:

屬性名稱 描述 選項
$type 包含:
- removableMedia
- appleDevice
- PortableDevice
- bluetoothDevice
- generic
執法 - $type:
- allow
- deny
- auditAllow
- auditDeny

選取$type允許時,選項值支援:
- disable_audit_allow
即使 [ 允許 ] 發生且已設定 auditAllow 設定,系統也不會傳送事件。

選取$type拒絕時,選項值支援:
disable_audit_deny
即使 發生封鎖 且已設定 auditDeny 設定,系統也不會顯示通知或傳送事件。

選取 $type auditAllow 時,選項值支援:
send_event

選取 $type auditDeny 時,選項值支援:
send_event
show_notification
access 為此規則指定一或多個訪問許可權。 這些可能包括裝置特定的細微許可權,或更廣泛的泛型許可權。 如需指定專案$type之有效存取類型的詳細資訊,請參閱下表。
id Uuid

下表列出您可以在專案中使用的屬性:

強制

強制屬性名稱

屬性名稱 描述 選項
$type 強制執行的類型 如需支持的強制執行,請參閱下表
options $type要使用的特定值 項目的選項陣列。 如果不需要選項,則可省略 。

強制類型

屬性名稱 描述 選項
Enforcement $type options 值 [string] 描述
allow disable_audit_allow 即使 [ 允許 ] 發生且已設定 auditAllow 設定,系統也不會傳送事件。
deny disable_audit_deny 即使 發生封鎖 且已設定 auditDeny 設定,系統也不會顯示通知或傳送事件。
auditAllow send_event 傳送遙測
auditDeny - send_event
- show_notification
- 傳送遙測
- 向使用者顯示區塊 UX

存取類型

專案$type 'access' 值 [string] 一般存取 描述
appleDevice backup_device generic_read
appleDevice update_device generic_write
appleDevice download_photos_from_device generic_read 將相片從特定 iOS 裝置下載到本機電腦
appleDevice download_files_from_device generic_read 將檔 (的) 從特定 iOS 裝置下載到本機電腦
appleDevice sync_content_to_device generic_write 將內容從本機電腦同步至特定 iOS 裝置
portableDevice download_files_from_device generic_read
portableDevice send_files_to_device generic_write
portableDevice download_photos_from_device generic_read
portableDevice 調試 generic_execute ADB 工具控制件
*removableMedia generic_read
removableMedia generic_write
removableMedia 執行 generic_execute generic_read
bluetoothDevice download_files_from_device
bluetoothDevice send_files_to_device generic_write
通用 generic_read 相當於設定此數據表中對應至 generic_read 的所有存取值。
通用 generic_write 相當於設定此數據表中對應至generic_write的所有存取值。
通用 generic_execute 相當於設定此數據表中對應至generic_execute的所有存取值。

使用者體驗

一旦 [拒絕] 發生且原則中已啟用通知,終端使用者就會看到對話框:

顯示裝置控制件對話框的螢幕快照,指出USB裝置受到限制

狀態

使用 mdatp health --details device_control 檢查裝置控制件狀態:

active                                      : ["v2"]
v1_configured                               : false
v1_enforcement_level                        : unavailable
v2_configured                               : true
v2_state                                    : "enabled"
v2_sensor_connection                        : "created_ok"
v2_full_disk_access                         : "approved"
  • active - 功能版本,您應該會看到 [“v2”]。 (裝置控制項已啟用,但未設定。)
    • [] - 未在此計算機上設定裝置控制。
    • [“v1”] - 您目前使用裝置控件的預覽版本。 使用本指南移轉至第 2 版。 v1 被視為已過時,且未在本文件中說明。
    • [“v1”,“v2”] - 您已同時啟用 v1 和 v2。 從 v1 下架。
  • v1_configured - 已套用 v1 組態
  • v1_enforcement_level - 啟用 v1 時
  • v2_configured - 已套用 v2 組態
  • v2_state - v2 狀態, enabled 如果完全正常運作
  • v2_sensor_connection - 如果 created_ok為 ,則 Device Control 已建立與系統延伸模組的連線
  • v2_full_disk_access - 如果不是 approved,則裝置控制件無法防止部分或所有作業

報告

您可以在進階搜捕和裝置控制報告中看到原則事件。 如需詳細資訊,請參閱 使用裝置控制保護組織的數據

案例

以下是一些常見的案例,可協助您熟悉 適用於端點的 Microsoft Defender 和 適用於端點的 Microsoft Defender 裝置控件。

案例 1:拒絕任何抽取式媒體,但允許特定的 USB

在此案例中,您需要建立兩個群組:一個群組用於任何抽取式媒體,另一個群組用於核准的 USB 群組。 您也需要建立存取原則規則。

步驟 1:設定:啟用裝置控制並設定預設強制執行

"settings": { 

	"features": { 

		"removableMedia": { 

			"disable": false 

		} 

	}, 

	"global": { 

		"defaultEnforcement": "allow" 

	}, 

	"ux": { 

		"navigationTarget": "http://www.deskhelp.com" 

	} 

} 

步驟 2:群組:Create 任何抽取式媒體群組和 approved-USB 群組

  1. Create 群組來涵蓋任何卸載式媒體裝置。
  2. Create 核准的USB群組。
  3. 將這些群組合並成一個 groups
"groups": [ 

        { 

            "type": "device", 

            "id": "3f082cd3-f701-4c21-9a6a-ed115c28e211", 

            "name": "All Removable Media Devices", 

            "query": { 

                "$type": "all", 

                "clauses": [ 

                    { 

                        "$type": "primaryId", 

                        "value": "removable_media_devices" 

                    } 

                ] 

            } 

        }, 

        { 

            "type": "device", 

            "id": "3f082cd3-f701-4c21-9a6a-ed115c28e212", 

            "name": "Kingston Devices", 

            "query": { 

                "$type": "all", 

                "clauses": [ 

                    { 

                        "$type": "vendorId", 

                        "value": "0951" 

                    } 

                ] 

            } 

        } 

    ] 

步驟 3:規則:Create 不允許的 USB 拒絕原則

Create 存取原則規則並放入 rules

"rules": [ 

	{ 

		"id": "772cef80-229f-48b4-bd17-a69130092981", 

		"name": "Deny RWX to all Removable Media Devices except Kingston", 

		"includeGroups": [ 

			"3f082cd3-f701-4c21-9a6a-ed115c28e211" 

		], 

		"excludeGroups": [ 

			"3f082cd3-f701-4c21-9a6a-ed115c28e212" 

		], 

		"entries": [ 

			{ 

				"$type": "removableMedia", 

				"id": "A7CEE2F8-CE34-4B34-9CFE-4133F0361035", 

				"enforcement": { 

					"$type": "deny" 

				}, 

				"access": [ 

					"read", 

					"write", 

					"execute" 

				] 

			}, 

			{ 

				"$type": "removableMedia", 

				"id": "18BA3DD5-4C9A-458B-A756-F1499FE94FB4", 

				"enforcement": { 

					"$type": "auditDeny", 

					"options": [ 

						"send_event", 

						"show_notification" 

					] 

				}, 

				"access": [ 

					"read", 

					"write", 

					"execute" 

				] 

			} 

		] 

	} 

] 

在此情況下,只有一個存取規則原則,但如果您有多個存取規則原則,請務必將全部新增至 rules

已知問題

警告

在macOS Sonoma 14.3.1中,Apple 對 藍牙裝置的處理 進行了變更,這會影響適用於端點的Defender裝置控制攔截和封鎖藍牙裝置存取的能力。 目前,建議的風險降低是使用小於 14.3.1 的 macOS 版本。

警告

macOS 上的裝置控制會限制 使用 PTP 模式連線的 Android 裝置。 裝置控制件不會限制其他模式,例如檔案傳輸、USB 系結和 MIDI。

另請參閱

提示

想要深入了解? Engage 技術社群中的 Microsoft 安全性社群:適用於端點的 Microsoft Defender 技術社群。