
在部署中使用安全令牌、Bootstrap 令牌和宗卷所有权
安全令牌
运行 macOS 10.13 或更高版本的 Mac 上的 Apple 文件系统 (APFS) 改变了文件保险箱加密密钥的生成方式。在 CoreStorage 宗卷上的旧版本 macOS 中,文件保险箱加密过程中使用的密钥是在用户或组织在 Mac 上启用文件保险箱时创建的。对于使用 APFS 宗卷的 Mac 电脑,加密密钥在用户创建过程中、设定首位用户的密码或 Mac 用户首次登录过程中创建。加密密钥的此实施方式、生成时间和储存方式都是称为安全令牌的功能的一部分。具体来说,安全令牌是受用户密码保护的密钥加密密钥 (KEK) 的封装版本。
在 APFS 上部署文件保险箱时,用户可以继续:
使用现有工具和进程,例如可通过设备管理服务储存以托管的个人恢复密钥 (PRK)
创建和使用机构恢复密钥 (IRK)
推迟文件保险箱的启用,直到用户登录或退出登录 Mac
对于运行 macOS 11 或更高版本的 Mac,为 Mac 上的首位用户设定初始密码会授予该用户安全令牌。在部分工作流程中,这可能并不是预期的行为,因为在此之前授予第一个安全令牌已要求登录用户账户。为了防止此类行为发生,在设定用户密码之前,请将 ;DisabledTags;SecureToken
添加到以编程方式创建的用户的 AuthenticationAuthority
属性,如下所示:
sudo dscl . -append /Users/<user name> AuthenticationAuthority ";DisabledTags;SecureToken"
Bootstrap 令牌
对于运行 macOS 10.15 或更高版本的 Mac,你可以使用 Bootstrap 令牌向现有用户账户授予安全令牌,还可用于其他方面。在搭载 Apple 芯片的 Mac 电脑上(如果可用且使用设备管理服务进行管理),你可以将 Bootstrap 令牌用于:
监督
设备管理服务开发者支持
对于运行 macOS 10.15.4 或更高版本的 Mac,启用了安全令牌的用户首次登录时,macOS 会生成 Bootstrap 令牌并将其托管到设备管理服务。你还可以按需使用 profiles
命令行工具生成 Bootstrap 令牌并将其托管到服务。
对于运行 macOS 11 或更高版本的 Mac,你可以使用 Bootstrap 令牌向现有用户账户授予安全令牌,还可用于其他方面。在搭载 Apple 芯片的 Mac 电脑上(如果可用且使用设备管理服务进行管理),你可以将 Bootstrap 令牌用于:
授权安装软件更新。
静默授权“抹掉所有内容和设置”设备管理命令(macOS 12.0.1 或更高版本)。
通过平台 SSO 首次登录时创建新用户(macOS 13 或更高版本)。
宗卷所有权
搭载 Apple 芯片的 Mac 电脑引入了宗卷所有权的概念。在组织的环境中,宗卷所有权与 Mac 的实际法律所有权或监管链无关,而是可以宽泛定义为首先声明拥有 Mac(通过将其配置为自用)的用户以及任何其他用户。你需要是宗卷所有者才能更改特定 macOS 安装的启动安全性策,授权安装 macOS 软件更新和升级,在 Mac 上发起“抹掉所有内容和设置”等。启动安全性策略定义了可以启动的 macOS 版本限制和如何以及是否可以载入或管理第三方内核扩展。
通过将 Mac 配置为自用来首先声明拥有 Mac 的用户会在搭载 Apple 芯片的 Mac 上被授予安全令牌,并成为第一个宗卷所有者。Bootstrap 令牌可用且正在使用时,它也会成为宗卷所有者,并在授予其他账户安全令牌时授予其宗卷所有权状态。由于被授予安全令牌的第一个用户和 Bootstrap 令牌都成为宗卷所有者,以及 Bootstrap 令牌具有授予其他用户安全令牌(因此也授予其宗卷所有权状态)的能力,宗卷所有权在组织中不应需要主动管理或操作。之前对管理和授权安全令牌的考虑因素也应当大体与宗卷所有权状态对应。
用户可以成为宗卷所有者而不成为管理员,但某些任务需要检查这两者的所有权。例如,修改启动安全性设置需要同时为管理员和宗卷所有者,而授权软件更新可以由普通用户执行且只需要所有权。
若要查看搭载 Apple 芯片的 Mac 电脑上当前宗卷所有者的列表,你可以运行以下命令:
sudo diskutil apfs listUsers /
在“本地 Open Directory 用户”类型的 diskutil
命令输出中列出的 GUID 与 Open Directory 中用户记录的 GeneratedUID
属性对应。若要通过 GeneratedUID
查找用户,请使用以下命令:
dscl . -search /Users GeneratedUID <GUID>
你还可以使用以下命令来同时查看用户名和 GUID:
sudo fdesetup list -extended
所有权由安全隔区中受保护的密码系统提供支持。有关更多信息,请参阅:
命令行工具使用
命令行工具可用于管理 Bootstrap 令牌和安全令牌。通常在服务告知 Mac 其支持此功能后,macOS 会在 macOS 设置过程中生成 Bootstrap 令牌并将其托管到设备管理服务。但是,你也可以在已部署的 Mac 上生成 Bootstrap 令牌。对于运行 macOS 10.15.4 或更高版本的 Mac,macOS 会在启用了安全令牌的任何用户首次登录时生成 Bootstrap 令牌并将其托管到该服务(如果该服务支持此功能)。因此,设置设备后,无需使用 profiles
命令行工具生成 Bootstrap 令牌并将其托管到该服务。
profiles
命令行工具有多个与 Bootstrap 令牌交互的选项:
sudo profiles install -type bootstraptoken
:此命令会生成一个新的 Bootstrap 令牌并将其托管到设备管理服务。此命令需要现有的安全令牌管理员信息以初次生成 Bootstrap 令牌,且该服务需要支持此功能。sudo profiles remove -type bootstraptoken
:移除 Mac 和设备管理服务中现有的 Bootstrap 令牌。sudo profiles status -type bootstraptoken
:报告设备管理服务是否支持 Bootstrap 令牌功能,以及 Mac 上 Bootstrap 令牌的当前状态。sudo profiles validate -type bootstraptoken
:报告设备管理服务是否支持 Bootstrap 令牌功能,以及 Mac 上 Bootstrap 令牌的当前状态。
sysadminctl 命令行工具
sysadminctl
命令行工具可用于明确修改 Mac 电脑上用户账户的安全令牌状态。此操作应仅在必要时谨慎进行。使用 sysadminctl
更改用户的安全令牌状态始终需要已启用安全令牌的现有管理员用户名和密码,可通过交互方式提供或通过该命令上适当的标志位提供。sysadminctl
和“系统设置”(macOS 13 或更高版本)或者“系统偏好设置”(macOS 12.0.1 或更低版本)都会阻止删除 Mac 上最后一个管理员或已启用安全令牌的用户。如果使用 sysadminctl
编写脚本创建了其他本地用户,这些用户要启用安全令牌时需要提供当前已启用安全令牌的管理员凭证,可通过交互选项提供,也可直接使用 sysadminctl
的 -adminUser
和 -adminPassword
标志位提供。
对于运行 macOS 11 或更高版本的 Mac,如果 macOS 未在创建时授予安全令牌且 Bootstrap 令牌可从设备管理服务处获取,则会在本地用户登录时授予其安全令牌。使用 sysadminctl -h
获取其他使用说明。