Highlight
Apple 在 iOS 17、iPadOS 17 和 macOS Sonoma 中将声明式设备管理(Declarative Device Management)作为新协议功能的唯一载体,新增了软件更新管理、应用管理、系统服务锁定、证书安装和 Profile 迁移等能力,让设备可以自主执行管理策略并异步上报状态,无需服务器轮询。
核心内容
问题:传统 MDM 管理大规模设备 fleet 的痛点
企业 IT 管理员管理成千上万台 Apple 设备时,面临几个核心难题:
- 服务器轮询开销大:传统 MDM 需要服务器不断轮询设备获取状态,设备越多,服务器压力越大。
- 软件更新难以强制:管理员需要确保设备及时安装系统更新,但现有 MDM 命令方式反馈滞后,无法确认设备是否真正完成更新。
- 状态同步延迟:设备上的 FileVault 状态、证书安装情况等关键信息,管理员无法实时掌握。
对于大型组织,这些问题叠加起来,管理成本随设备数量线性增长。
Apple 的方案:声明式设备管理
声明式设备管理(DDM)在 WWDC21 首次推出,WWDC22 增强了基础能力,WWDC23 则将新协议功能的重心完全转移到 DDM 上。其核心思想是:服务器向设备下发”声明”(Declaration),设备自主评估并执行,完成后异步上报状态。
这意味着设备不再需要等待服务器命令,而是根据预设策略主动行动。服务器也不再需要轮询,而是被动接收状态报告。
WWDC23 新增了五个核心管理领域:
- 软件更新管理:通过配置定义更新行为,设备主动执行并上报进度
- 应用管理:安装、配置和监控企业应用
- 系统服务锁定:限制系统服务,监控后台任务
- 证书和身份凭证安装:自动部署设备所需的安全凭证
- Profile 迁移简化:从传统 MDM Profile 迁移到 DDM 更加顺畅
详细内容
声明式软件更新管理(03:33)
传统 MDM 中,管理员使用命令安装更新,通过轮询获取反馈。这种方式在大型 fleet 中效率低下。
DDM 的软件更新管理使用配置(Configuration)定义行为,设备自主执行:
{
"Type": "com.apple.configuration.softwareupdate.enforcement.specific",
"Identifier": "com.example.softwareupdate.ios17",
"ServerToken": "abc123",
"Payload": {
"TargetOSVersion": "17.0",
"TargetBuildVersion": "21A329",
"DetailsURL": "https://example.com/update-info",
"TargetLocalDateTime": "2023-10-01T10:00:00"
}
}
关键点:
TargetOSVersion指定目标系统版本TargetBuildVersion精确到 build 号,避免安装错误的 seed 或 GM 版本TargetLocalDateTime设置强制更新的截止时间,在此之前用户有自主选择的机会DetailsURL指向组织内部的更新说明页面- 设备会主动执行更新,并通过异步状态报告通知服务器进度
使用 Predicates 控制更新顺序(06:00)
DDM 支持使用 Predicates 实现复杂的更新逻辑。例如,可以控制设备按特定顺序升级:
{
"Type": "com.apple.configuration.softwareupdate.enforcement.specific",
"Identifier": "com.example.softwareupdate.critical",
"ServerToken": "def456",
"Payload": {
"TargetOSVersion": "17.0",
"Predicate": "device.model.family == 'iPhone' AND device.os.version >= '16.5'"
}
}
关键点:
Predicate使用声明式语法描述条件- 可以基于设备型号、当前系统版本、 Rapid Security Response 可用性等条件
- 设备自主评估 Predicate,只有满足条件才执行更新
- 这允许管理员对不同类型的设备设置不同的更新策略
异步状态报告(06:14)
DDM 的核心优势之一是异步状态报告。设备在状态变化时主动向服务器推送:
{
"StatusItems": [
{
"Path": "softwareupdate.download",
"Value": {
"download-progress": 0.75,
"download-state": "downloading"
}
},
{
"Path": "softwareupdate.install",
"Value": {
"install-state": "pending",
"deadline": "2023-10-01T10:00:00"
}
}
]
}
关键点:
- 状态报告包含
download-progress、download-state、install-state等字段 - 管理员可以实时看到每台设备的更新进度
- 不再需要服务器轮询,网络开销大幅降低
- 状态报告是设备主动发起的,即使设备离线,也会在恢复连接后补发
FileVault 状态报告(03:45)
macOS 的 FileVault 磁盘加密状态现在可以通过 DDM 异步报告:
{
"StatusItems": [
{
"Path": "security.filevault",
"Value": {
"enabled": true,
"personal-recovery-key-escrowed": true,
"institutional-recovery-key-present": false
}
}
]
}
关键点:
enabled表示 FileVault 是否已启用personal-recovery-key-escrowed表示个人恢复密钥是否已托管到服务器- 管理员可以确认合规性,无需手动检查每台设备
Profile 迁移简化(03:54)
从传统 MDM Profile 迁移到 DDM 时,WWDC23 引入了新的行为让过渡更平滑。设备在收到 DDM 声明后,可以自动处理与现有 Profile 的冲突,减少管理员的手动干预。
核心启发
-
为 MDM 产品添加 DDM 支持:如果你正在开发或维护 MDM 解决方案,将软件更新管理从命令式迁移到声明式。为什么值得做:Apple 明确表示未来新协议功能只通过 DDM 提供,不支持 DDM 的产品将逐渐落后。怎么开始:阅读 Apple 在 GitHub 上公开的 Device Management Client Schema,实现
com.apple.configuration.softwareupdate.enforcement.specific声明类型。 -
构建软件更新合规仪表板:利用 DDM 的异步状态报告,为 IT 管理员构建一个实时更新的仪表板,显示 fleet 中每台设备的更新进度。为什么值得做:传统 MDM 需要轮询,状态有延迟;DDM 的状态报告是实时的,可以做出更及时的响应。怎么开始:在 MDM 服务器端实现状态报告接收端点,解析
softwareupdate.download和softwareupdate.install路径的状态项,用 WebSocket 推送到前端仪表板。 -
实现分批次滚动更新策略:使用 Predicates 控制更新顺序,先让测试组的设备升级,验证兼容性后再推广到生产环境。为什么值得做:大规模 fleet 同时更新风险高,分批次可以降低故障影响面。怎么开始:定义两个 Predicate,一个匹配设备名包含 “test” 的设备,另一个匹配所有设备,设置不同的
TargetLocalDateTime截止时间。 -
自动化 FileVault 合规检查:利用 FileVault 状态报告,自动标记未启用 FileVault 或恢复密钥未托管的设备。为什么值得做:安全合规是企业的硬性要求,手动检查效率低且容易遗漏。怎么开始:在 MDM 服务器中订阅
security.filevault状态报告,当enabled为 false 或personal-recovery-key-escrowed为 false 时,自动触发告警或重新下发 FileVault 配置。
关联 Session
- What’s new in managing Apple devices — 设备管理的整体更新,包括自动设备注册和 Return-to-Service
- What’s new in MDM — MDM 协议的基础更新,DDM 构建在其之上
- Meet device management for Apple Watch — watchOS 现在支持 MDM 和 DDM
评论
GitHub Issues · utterances