Fleet 中的 Apple ADE(自动设备注册):从零配置到源码级实现全解
【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet
本文以 Apple 的自动设备注册(Automated Device Enrollment,ADE,原名 DEP)为核心,讲解其工作机制、适用设备、安全控制与部署前提,并结合 Fleet 开源仓库中的实际源码(ABM token 同步任务、NanoDEP 客户端、SCEP 证书续期等)展开源码级剖析,帮助你在 Mac、iPhone、iPad 设备实现"开箱即管"的零接触部署,同时理解 ADE 服务在 Fleet 服务端背后的完整调用链。
什么是 ADE:从 DEP 到 Automated Device Enrollment
Apple 已不再在其文档中使用 Device Enrollment Program(DEP)这一名称,转而用Automated Device Enrollment(ADE)来描述"新购设备在首次开机时自动注册进指定 MDM"的能力。通过在注册过程中启用监督(supervision),ADE 可以强制执行诸如"用户无法移除 MDM 管理配置描述文件"等策略,并扩展到数千台设备的规模。
ADE 将"通过授权渠道购买"与"组织在 Apple Business(AB)中的账户"在设备到达员工手中之前建立关联,使设备可以直接寄送给最终用户。用户首次开机并联网后,MDM 注册即自动开始:用户在完成 Setup Assistant 引导界面的同时,设备的配置在后台从 MDM 服务器(在 Fleet 场景下即自托管的 Fleet 服务器)下发。
这一能力最早于 2014 年以 Device Enrollment Program 之名推出,2019 年 12 月随 ABM(Apple Business Manager)发布更名为 ADE。底层技术没有变化,只是新名称更准确地描述了系统实际做的事情。对管理数百乃至数千台 Apple 设备的组织而言,这种自动化消除了过去要求 IT 团队在分发前物理接触每一台设备的配置负担:安全策略从首次开机起即生效,设备无需 IT 参与即可直接寄给远程员工。
ADE 的工作原理:从购买到完成注册的完整链路
ADE 依赖一系列从设备购买时刻就启动的自动化步骤:
- 购买即注册:通过 Apple 授权渠道购买设备时,设备序列号会自动登记进 Apple 的激活数据库,并被自动分配到组织的 ABM 账户;
- 首次激活查询:设备在首次激活、任何用户交互发生之前,会向 Apple 服务器发起查询;
- 下发注册信息:Apple 服务器返回组织的 MDM 注册 URL 及配置参数;
- 联系 MDM 服务器:设备随后联系 MDM 服务器,接收配置描述文件与安全策略。
注册完成后,监督状态与 MDM 配置共同决定了控制是否永久、用户能否移除管理描述文件。恢复出厂设置同样不会消除这些控制,因为注册状态绑定的是登记在 ABM 中的设备序列号。
服务端视角:ABM token 与受信任连接
在自动注册流程背后,ADE 通过token 认证在 ABM 与 MDM 服务器之间建立受信任连接:管理员从 ABM 下载 server token 文件并导入 MDM 服务器,该 token 证明该 MDM 服务器有权管理分配给此组织的设备。Fleet 仓库中完整实现了这条链路,核心代码位于 server/mdm/apple/apple_mdm.go,其中 tools/mdm/apple/glossary-and-protocols.md 用一张时序图给出了 ADE 注册的全貌(包括 Automatic Enrollment、Automatic Authenticated Enrollment 与 Manual Enrollment 三条路径):
- ADE 自动注册路径:设备
GET /api/mdm/apple/enroll(该端点由 ADE JSON profile 配置),Fleet 返回注册描述文件; - 启用终端用户认证(IdP/SSO)后,端点变为 ADE 配置的
configuration_web_url({server_url}/mdm/sso),设备先访问GET /api/v1/fleet/sso,Fleet 再返回带特定响应头的注册描述文件; - 随后设备走 SCEP 换证书(
POST /mdm/apple/scep)、MDM Authenticate(携带推送 token)、Bootstrap Token、TokenUpdate,进入 mTLS 的 MDM 命令循环。
从源码结构看,Fleet 对 Apple ADE 的同步通过 server/mdm/nanodep 目录下的 NanoDEP 客户端实现(这是 Fleet 维护的 NanoDEP 分支),服务端侧的 ABM token 管理与 ADE profile 分配逻辑集中在 server/mdm/apple/apple_mdm.go,协议层扩展实现位于 server/service/apple_mdm.go(实现 NanoMDM 的CheckinAndCommandService接口)。集成测试可参考 server/service/integration_mdm_dep_test.go。
网络连通性要求与失败排查
注册依赖网络连通性才能正常工作。Setup Assistant 会在网络选择界面暂停,直到设备能够到达 Apple 的激活服务器;没有网络访问,设备就无法完成自动注册流程。这一连通性要求确保了设备在用户获得访问权之前先收到当前的注册描述文件与安全配置。
注册失败通常源于:网络连接问题、证书过期或注册 profile 配置错误。注册失败时,设备会在 Setup Assistant 中显示错误信息,IT 团队可以按以下顺序排查:确认到 Apple 服务器的网络连通性(注意网络基础设施必须允许连接 Apple 服务器且不做 SSL/TLS 拦截)、检查证书到期时间、在 ABM 中审查注册 profile 配置。
ADE 的收益:零接触部署与内建安全
零接触部署通过消除分发前的物理设备接触降低了 IT 工作量:IT 团队只需在 ABM 中一次性配置注册 profile,设备即可自动注册,无需逐台操作。这种自动化将注册规模从几十台扩展到数千台而不增加 IT 人力,设备可以直接寄送给分布各地的员工,显著压缩 onboarding 周期。
这类收益在实际部署中有据可查:Apple 在零售企业案例中记录了使用 ADE 以小型 IT 团队远程管理数千台设备时,支持请求下降了 28%。
除运营效率外,ADE 还提供手动注册无法匹敌的安全优势:它阻止用户绕过或移除设备管理,堵上了此前方案中的安全缺口;安全策略在用户接触设备之前自动生效,确保加密、防火墙规则与必备应用在初始设置阶段即完成部署;新入职员工第一天就拿到的就是"开箱即用"的设备,消除了常见的服务台工单与配置延迟。
ADE 与手动注册的对比
组织将 Apple 设备注册进 MDM 主要有两种方式:ADE 与手动注册。理解两者差异有助于规划设备部署策略:
| 维度 | ADE | 手动注册 |
|---|---|---|
| 注册时机 | Setup Assistant 期间自动完成 | 可能需要在设置完成后由用户手动操作 |
| IT 参与 | 零接触(设备直接寄给用户) | IT 可能需要手动配置或指导用户 |
| MDM 描述文件移除 | 下发不可变、不可移除的 MDM 注册描述文件 | 视注册流程而定,用户可能可以移除管理 |
| 设备监督 | 自动监督 | 需要 Apple Configurator |
| 购买要求 | 必须通过授权卖家购买 | 任意设备来源均可 |
| 存量设备支持 | macOS 26 及 iOS/iPadOS 26 之前需要抹掉或使用 Apple Configurator | 多数 BYOD 与手动注册允许不抹掉数据即移除 |
ADE 适合以下场景:新购设备直接发给员工、把安全与合规放在首位的组织、IT 无法物理接触设备的远程办公团队,以及每年处理大批设备的规模化部署。
将手动注册设备转换为 ADE 需要完全抹掉设备。最佳实践是让 ADE 的落地时间对齐设备换新周期,而不是强迫用户当场抹机。过渡期内可以两种注册方式并行:新购设备走 ADE,已部署设备保留手动注册。另外,如果组织正在迁移 MDM 服务商且设备仍停留在较旧的 Apple 操作系统版本上,可能需要完全抹掉才能重新注册;应尽量确保所有设备运行最新 Apple OS 版本——WWDC 2025 公布的Managed Device Migration(托管设备迁移)允许计算机与移动设备不经过抹掉、直接在 Apple Business 中将设备记录从一个虚拟 MDM 服务器迁移到另一个。建议在提交整个机群前,先在小批测试设备上验证迁移行为,再判断是否需要对 OS 做更新。
哪些 Apple 设备支持 ADE?
ADE 覆盖 Apple 的主要设备平台,操作系统要求对当前大多数在售设备都已满足。
购买渠道决定资格:设备必须来自 Apple 官方或通过 ADE 参与的授权经销商,才能自动注册。通过经销商或运营商购买时,应在交易中提供组织的ABM Organization ID,使设备即时登记到账户。Apple Store 的零售散客购买不具备自动资格。存量设备可以通过 Apple Configurator(Apple 的 Mac 端应用,通过 USB 连接手动配置并监督设备)加入,但这要求物理接触设备并执行抹机,对已在使用的设备并不现实。
地域可用性:若业务横跨多国,ADE 通过 ABM 覆盖美洲、欧洲、亚太与中东 35 个以上国家/地区;经销商参与度因地区而异,大额下单前应与目标市场的经销商确认 ADE 可用性。
Fleet 侧的设备同步:dep_syncer 与 host_dep_assignments
ADE 设备在 MDM 服务端并非等到设备开机才"现身"。Fleet 通过 cmd/fleet/cron.go 中注册的dep_syncer定时任务持续与 Apple 服务器同步:任务先检查AppleBMEnabledAndConfigured(即 ABM token 是否已配置),随后调用apple_mdm.NewDEPService(...).RunAssigner(ctx)执行拉取与分配。同步节奏由配置项 mdm.apple_dep_sync_periodicity 控制(默认 1 分钟,可设为"30s"、5m"等 duration 字符串,环境变量为FLEET_MDM_APPLE_DEP_SYNC_PERIODICITY)。
从 docs/Contributing/mdm/apple/resetting-apple-dep-sync-cursor.md 可以看到这套同步的底层机制(由 server/mdm/nanodep 驱动、游标按 ABM token 持久化):
- 无游标→ 调用 Apple 的
fetch-devices(全量拉取); - 有游标→ 调用
sync-devices(仅增量); - 每次请求分页200 台设备(server/mdm/apple/apple_mdm.go 中的
DEPSyncLimit),循环直到 Apple 报告没有更多页; - Apple 的游标 7 天后过期,Fleet 会自动回退到全量拉取恢复。
每轮同步拉取新增/变更/移除的设备列表后:新增或变更的设备会创建或匹配hosts表中的一行(这意味着 IT 管理员可以在设备开机或安装 fleetd 之前,就把它在不同的 fleet/team 之间移动),并通过 ABM API 为设备分配对应的 JSON profile;被删除的设备则软删除host_dep_assignments表中的对应记录(该表专门保存所有经 ADE 同步入库的设备,条目为软删除)。一个值得注意的特殊行为:如果管理员在 UI/API 中删除了某台在 ABM 中仍有记录的 host,Fleet 会立即像刚从 ABM 同步进来一样重新创建该 host 条目。
如果怀疑同步视图出现偏差,可以按 resetting-apple-dep-sync-cursor.md 的说明清空游标(UPDATE nano_dep_names SET syncer_cursor = NULL, syncer_cursor_at = NULL;),下一轮同步即走全量fetch-devices重建视图;该操作不会重新注册设备、不改变 ABM 分配、也不重推 DEP profile,只重建 Fleet 侧的分配基线,在较大规模部署中执行是安全的。
ADE 提供的安全控制
ADE 在注册时自动监督设备,解锁非监督设备不具备的安全限制。监督带来更高级的管理控制,在保护公司数据的同时保持透明——用户可以在"设置"中看到设备的监督状态,不存在后台的隐藏监控。
监督模式提供了协同工作、防止未授权访问与数据丢失的一组能力:
- 自动设备监督,用于高级管理控制;
- 用户无法移除的强制 MDM 注册;
- 面向组织设备找回的Activation Lock 绕过码;
- 跨恢复出厂设置保持管理持续性的工厂重置保护;
- 用于安全 MDM 认证的设备身份证书。
Activation Lock 与绕过码:Activation Lock 将设备绑定到用户的 Apple ID 以防盗,但员工离职时若未关闭"查找"功能会带来回收麻烦。通过 ABM,ADE 提供绕过码,允许 MDM 管理员在不需要原用户 Apple ID 凭据的情况下清除设备激活锁。
证书管理:需要持续维护,因为Apple Push Notification 证书每年到期,且续期必须使用创建该证书时所用的同一个 Apple ID。证书过期后,设备与管理服务器会失去相互认证能力,直到有人完成续期。在 Fleet 的仓库中可以印证这一"年度证书"设计的落地:MDM 侧 SCEP 客户端证书的有效期由 mdm.apple_scep_signer_validity_days 配置(默认 365 天);而设备身份证书的续期由renew_scep_certificates定时任务负责——它通过InstallProfile命令下发新的注册描述文件(部分字段按 Apple 规定不可变更),该任务挂载在cleanups_then_aggregation的 cron 调度中,详见 docs/Contributing/mdm/README.md。
为 ADE 部署选择 MDM 平台
ADE 是通过 ABM 配置的注册机制,不是完整的管理平台:ABM 把设备分配给你的 MDM 服务器,但注册完成后真正下发 profile、应用与策略的是 MDM 服务器。没有 MDM 系统,ADE 本身不提供任何设备管理能力。
评估 MDM 供应商的 ADE 兼容性时,需要验证几个技术要求:
- 支持 APNs 证书管理及年度续期流程;
- 提供 Setup Assistant 定制能力,可控制注册体验(例如哪些引导界面用户可见);
- 多 MDM 服务器能力(当不同地区或业务单元需要不同管理系统时)。
若还需跨平台管理能力(不只管 Apple 设备),混合机群环境收益于"一个控制台管 Mac、Windows、Linux"的平台,而非多套工具来回切换。Fleet 即为这类平台:它是开源的跨平台设备管理方案,支持 Mac、iPhone、iPad 的 ADE 注册,同时管理 Windows 与 Linux 端点;开源模型提供完整的代码透明度(可在本仓库中逐行验证设备管理逻辑),自托管选项则让设备数据存放位置完全由你掌控。
部署 ADE 前需要准备什么?
ADE 的落地需要前置准备,确保部署顺畅。在注册设备之前,先确认这些基础前提已经就位:
- 已通过D-U-N-S 编号与域名验证的 Apple Business 账户;
- 支持 ADE 注册与 APNs 证书管理的 MDM(在 Fleet 中,即完成 ABM token 导入、
mdm.apple_*相关配置就绪的 Fleet 服务器); - 与授权经销商建立的自动设备注册合作;
- 允许无 SSL/TLS 拦截地连接 Apple 服务器的网络基础设施;
- 使用同一 Apple ID 完成年度 APNs 续期的证书续期流程。
在技术基础设施之外,配置规划决定了用户的注册体验。你需要:定义注册 profile,指定用户在初始设置中看到的 Setup Assistant 界面;建立对 IT 团队有意义的设备命名规范;为不同用户组创建部门级配置。务必在分发设备之前在 Apple Business 中完成这些 profile 的分配,让注册过程不出现最后一分钟的排查。在 Fleet 中启用 IdP 终端用户认证时,Fleet 会把更新后的注册描述文件回推给 Apple(同样由mdm.apple_dep_sync_periodicity控制节奏,默认一分钟),对应 Apple 注册 profile 中的configuration_web_url字段会被设置为{server_url}/mdm/sso,相关实现可参考 docs/Contributing/authentication/mdm-end-user-authentication.md 与 articles/end-user-authentication.md。
小结
ADE 消除了手动注册工作,通过监督模式与强制 MDM 注册强制安全策略生效,并把设备管理扩展到数千台规模而不需要等比例增加 IT 人力;组织借此实现更快的部署、更好的安全与更低的运营开销。Fleet 侧的实现要点可以浓缩为三条源码证据线:ABM token 与 ADE profile 管理在 server/mdm/apple/apple_mdm.go,Apple 设备增量同步由 cmd/fleet/cron.go 的dep_syncer任务驱动(每 200 台一页、游标 7 天过期自动回退全量),协议扩展(含 SSO 注册、SCEP 换证、证书续期)在 server/service/apple_mdm.go。掌握了这些,你既能按 ADE 的部署前提完成从零配置,也能在出问题时直接沿调用链定位到具体代码。
【免费下载链接】fleetOpen device management项目地址: https://gitcode.com/GitHub_Trending/fl/fleet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考