macOS 中的系统扩展运行 macOS 10.15 或更高版本的 Mac 允许开发者通过安装和管理在用户空间而非内核层面运行的系统扩展来扩展 macOS 的功能。让系统扩展在用户空间运行提高了 macOS 的稳定性和安全性。尽管 Kext 本身可完全访问整个操作系统,但运行在用户空间的扩展只拥有执行其特定功能所需的许可。
系统扩展支持使用 MDM 的强力管理,包括允许来自特定开发者或特定类型(如网络扩展)的所有扩展无需用户交互即可载入的能力。MDM 可选择不允许用户将自己的系统扩展批准载入。
对于运行 macOS 12.0.1 或更高版本的 Mac,“系统扩展”有效负载中的词典 RemovableSystemExtensions 允许 MDM 管理员指定哪些 App 可以移除其自己的系统扩展。移除该类系统扩展无需本地管理员认证。此功能对于可能提供 App 自动卸载器的供应商特别有用。
对于运行 macOS 11.3 至 macOS 11.6.4 的 Mac,更改系统扩展描述文件会直接影响扩展的状态。例如,如果扩展正在等待批准且推送了允许扩展的配置描述文件,则允许载入扩展。相反,如果批准被撤销,则系统扩展会被卸载,且会被标记以在 Mac 下次重新启动时移除。如果系统扩展尝试自行卸载,会出现一个互动认证对话框要求管理员凭证来授权卸载。
内核扩展对于运行 macOS 11 或更高版本的 Mac,如果启用了第三方内核扩展 (Kext),就不能按需将其载入内核中。第三方内核扩展需要用户批准、重新启动 macOS 以将更改载入内核,还需要在搭载 Apple 芯片的 Mac 上将安全启动配置为“降低安全性”。
开发者可以使用各种框架(如 DriverKit 和 NetworkExtension)来写入 USB 和人机界面驱动程序、端点安全工具(如数据丢失预防或其他端点代理)以及 VPN 和网络工具,这一切都不需要编写 Kext。只有当第三方安全代理使用了这些 API 或者拥有过渡到这些 API 并不再使用内核扩展的清晰路线图,才应当使用这些第三方安全代理。
【重要事项】macOS 中不再推荐使用 Kext。Kext 会威胁到操作系统的完整性和可靠性。用户应当首选不需要扩展内核而是使用系统扩展的解决方案。
在运行 macOS 11 或更高版本且基于 Intel 或搭载 Apple 芯片的 Mac 上添加 Kext如果必须使用内核扩展,请根据注册方式检查批准方法。
MDM 注册方式
批准方法
未注册
用户注册
安装了新 Kext 并尝试载入之前,用户必须从以下位置中的警告对话框发起重新启动:
macOS 13 或更高版本:苹果菜单 >“系统设置”>“隐私与安全性”。
macOS 12.0.1 或更低版本:苹果菜单 >“系统偏好设置”>“安全性与隐私”。
此重新启动操作会在内核启动之前重建 AuxKC。
设备注册
自动设备注册
每次安装了新 Kext 并尝试载入它之前,都需要通过以下任一方式进行重新启动:
本地管理员账户,从“系统设置”的“隐私与安全性”的警告中(macOS 13 或更高版本)重新启动,或者从“系统偏好设置”的“安全性与隐私”面板的警告中(macOS 12.0.1 或更低版本)重新启动。MDM 还可允许普通用户使用此方式。
MDM 解决方案自身,使用带 RebuildCache 标志的 RestartDevice 命令。AuxKC 会在 Mac 下次重新启动时重建,其中会包括 macOS 已经发现的 Kext(例如被其所属软件载入并被阻止的 Kext),尚未尝试载入的 Kext 可通过 KextPaths 键提供。
【注】指定 Kext 的 MDM 解决方案必须首先安装 Kext 允许列表描述文件。运行 macOS 11.3 或更高版本的 Mac 可选择允许 MDM 通知用户在方便时完成重新启动。
在搭载 Apple 芯片的 Mac 上添加 Kext 的额外步骤如果要在搭载 Apple 芯片的 Mac 上添加内核扩展,则必须执行额外步骤。
MDM 注册方式
批准方法
未注册
用户管理 Kext 需要重新启动进入 recoveryOS 以降级安全性设置。用户必须按住电源按钮以重新启动进入 recoveryOS 并以管理员身份进行认证。只有通过按住电源按钮进入 recoveryOS 才能使安全隔区接受策略更改。然后用户必须选择“降低安全性”复选框和“允许用户管理来自被认可开发者的内核扩展”选项,并重新启动 Mac。
用户注册
用户必须重新启动进入 recoveryOS 以降级安全性设置。用户必须按住电源按钮以重新启动进入 recoveryOS 并以本地管理员身份进行认证。只有通过按住电源按钮进入 recoveryOS 才能使安全隔区接受策略更改。然后用户必须选择“降低安全性”,勾选“允许用户管理来自被认可开发者的内核扩展”,并重新启动 Mac。
设备注册
MDM 解决方案应该通知用户必须重新启动进入 recoveryOS 以降级安全性设置。用户必须按住电源按钮以重新启动进入 recoveryOS 并以管理员身份进行认证。只有通过按住电源按钮进入 recoveryOS 才能使安全隔区接受策略更改。然后用户必须选择“降低安全性”,勾选“允许远程管理内核扩展和软件自动更新”,并重新启动 Mac。
若要了解你的设备是否支持此功能,请参阅 MDM 开发者文稿。
自动设备注册
(Mac 的序列号必须显示在“Apple 校园教务管理”或“Apple 商务管理”中,且 Mac 必须在链接至该服务的 MDM 解决方案中注册。)
MDM 解决方案可自动管理此功能。
若要了解你的设备是否支持此功能,请参阅 MDM 开发者文稿。
内核扩展和系统完整性保护如果系统完整性保护 (SIP) 已启用,在将每个 Kext 包括在 AuxKC 中前还会验证其签名。
如果 SIP 停用,则不会强制执行 Kext 签名。
此方法可让不是 Apple Developer Program 成员的开发者或用户在“宽松安全性”流程中测试 Kext,然后再为其签名。
发布日期:2021 年 10 月 27 日另请参阅针对 Apple 设备的“内核扩展策略” MDM 有效负载设置Apple 平台安全保护:内核扩展Apple 平台安全保护:系统完整性保护