适用于 macOS 的设备控制

适用于:

希望体验 Microsoft Defender for Endpoint? 注册免费试用版

要求

适用于 macOS 的设备控制具有以下先决条件:

  • Microsoft Defender for Endpoint权利 (可以是试用)
  • 最低 OS 版本:macOS 11 或更高版本
  • 最低产品版本:101.34.20

概述

Microsoft Defender for Endpoint设备控制功能使你能够:

  • 审核、允许或阻止对可移动存储的读取、写入或执行访问权限;和
  • 管理 iOS 和可移植设备,以及 Apple APFS 加密设备和蓝牙媒体(含或不带排除项)。

准备终结点

  • Microsoft Defender for Endpoint权利 (可以是试用)

  • 最低 OS 版本: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 for Endpoint数据丢失防护/功能中启用设备控制的屏幕截图。

示例 2: 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 的设备控制策略包括设置、组和规则:

  • 通过名为“settings”的全局设置,可以定义全局环境。
  • 使用名为“groups”的组可以创建媒体组。 例如,授权的 USB 组或加密的 USB 组。
  • 使用名为“rules”的访问策略规则可以创建策略来限制每个组。 例如,仅允许授权用户写入访问授权的 USB 组。

注意

建议使用 GitHub 上的示例来了解属性:mdatp-devicecontrol/Removable Storage 访问控制 Samples/macOS/policy 位于 main - microsoft/mdatp-devicecontrol (github.com)

还可以使用 main 上的 mdatp-devicecontrol/tree/main/python#readme 中的脚本 - microsoft/mdatp-devicecontrol (github.com) 将 Windows 设备控制策略转换为 macOS 设备控制策略或将 macOS 设备控制 V1 策略转换为此 V2 策略。

注意

客户在创建策略时应考虑的 macOS 设备控制 存在一些已知问题

最佳做法

适用于 macOS 的设备控制功能与适用于 Windows 的设备控制类似,但 macOS 和 Windows 提供不同的基础功能来管理设备,因此存在一些重要差异:

  • macOS 没有集中式设备管理器或设备视图。 向与设备交互的应用程序授予/拒绝访问权限。 这就是为什么在 macOS 上有一组更丰富的 访问类型的原因。 例如, portableDevice macOS 的设备控件可以拒绝或允许 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"

属性名称 说明 选项
$type 组的类型 “device”
id GUID 是一个唯一 ID,表示组,将在策略中使用。 可以通过 new-Guid (Microsoft.PowerShell.Utility) - PowerShell 或 macOS 上的 uuidgen 命令生成 ID
name 组的友好名称。 string
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 位十六进制字符串 匹配设备的供应商 ID
productId 4 位十六进制字符串 匹配设备的产品 ID
serialNumber string 与设备的序列号匹配。 如果设备没有序列号,则不匹配。
encryption apfs 匹配设备是否为 apfs 加密。
groupId UUID 字符串 如果设备是另一个组的成员,则匹配。 值表示要匹配的组的 UUID。
该组必须在 子句之前在策略中定义。

访问策略规则

属性名称 说明 选项
id GUID 是唯一的 ID,表示规则,将在策略中使用。 New-Guid (Microsoft.PowerShell.Utility) - PowerShell
uuidgen
name 字符串,策略的名称,将根据策略设置显示在 Toast 上。
includeGroups 组 (策略将应用到的) 。 如果指定了多个组,则策略将应用于所有这些组中的任何媒体。 如果未指定,则规则将应用于所有设备。 组内的 ID 值必须在此实例中使用。 如果 中有多个组, includeGroups则为 AND
"includeGroups": ["3f082cd3-f701-4c21-9a6a-ed115c28e217"]
excludeGroups 组 (策略不适用的) 。 组内的 ID 值必须在此实例中使用。 如果 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为 ,则设备控制与系统扩展建立连接
  • v2_full_disk_access - 如果不是 approved,则设备控制无法阻止部分或所有操作

Reporting

可以在高级搜寻和设备控制报表上查看策略事件。 有关详细信息,请参阅 使用设备控制保护组织的数据

应用场景

下面是一些常见方案,可帮助你熟悉Microsoft Defender for Endpoint和Microsoft Defender for Endpoint设备控制。

方案 1:拒绝任何可移动媒体,但允许特定的 USB

在此方案中,需要创建两个组:一个组用于任何可移动媒体,另一个组用于已批准的 USB 组。 还需要创建访问策略规则。

步骤 1:设置:启用设备控制并设置默认强制

"settings": { 

	"features": { 

		"removableMedia": { 

			"disable": false 

		} 

	}, 

	"global": { 

		"defaultEnforcement": "allow" 

	}, 

	"ux": { 

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

	} 

} 

步骤 2:组:创建任何可移动媒体组和已批准的 USB 组

  1. 创建一个组以涵盖任何可移动媒体设备。
  2. 为批准的 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:规则:为未实现的 USB 创建拒绝策略

创建访问策略规则并放入 :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 上的设备控制 限制仅使用 PTP 模式连接的 Android 设备。 设备控制不限制其他模式,例如文件传输、USB 网络共享和 MIDI。

警告

macOS 上的设备控制不会阻止在 XCode 上开发的软件传输到外部设备。

另请参阅

提示

想要了解更多信息? Engage技术社区中的Microsoft安全社区:Microsoft Defender for Endpoint技术社区