在组织内管理软件更新
Manage software updates in your organization
2021年6月10日
一句话判断
如果你还在用脚本手动推送 macOS 更新通知,该认真看看 MDM(Mobile Device Management)的软件更新管理能力了——今年 Apple 终于把软件更新的管控粒度做到了足够实用的程度。
这场 Session 讲了什么
过去 IT 管理员管理设备软件更新是一场拉锯战:要么完全放手让用户自行更新,要么用各种 hack 方式强制推送。这个 Session 介绍了 macOS Monterey 和 iOS 15 中软件更新管理的新机制,涵盖 MDM payload 如何控制更新行为、如何通过 declarative management 声明目标版本,以及如何在 Managed Software Updates 框架下精细控制更新节奏。
Apple 引入了一个关键概念——“targeted software updates”。管理员可以指定设备应该安装的具体版本,甚至设置一个 deadline,到期后系统会自动强制安装。这比之前只能发一个”请更新”的通知靠谱得多。对于大规模部署的场景,这些能力意味着你终于可以把”确保全员更新”从一个愿望变成一个可执行的计划。
值得深挖的点
本地化软件更新策略(Localized Software Update Plan)
这个机制允许 MDM 为不同分组的设备设置不同的更新计划。你可以先让 IT 部门的设备更新验证兼容性,再逐步推给全公司。关键在于它不是一个简单的”延迟 N 天”的粗暴策略,而是可以精确到”这个群组安装 12.4,那个群组安装 12.3.1”的细粒度控制。配合 AvailableOSUpdates 这个 MDM command,管理员还能实时查询每台设备上可用的更新列表,做到心中有数。
软件更新的声明式管理整合
Declarative Device Management 是今年 Apple 在设备管理方面的大方向,软件更新也纳入了这个体系。通过 SoftwareUpdate declaration,你可以声明期望状态而不是发出一个个指令。这意味着设备在网络恢复、重新上线等场景下都能自动对齐目标版本,不需要 MDM 服务器反复轮询和重试。
代码片段
# 通过 MDM 发送软件更新命令的 Plist 示例
# 指定安装具体版本的更新
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RequestType</key>
<string>InstallAction</string>
<key>InstallAction</key>
<dict>
<key>Identifier</key>
<string>macOS Monterey 12.0.1</string>
<key>Action</key>
<string>Install</string>
</dict>
</dict>
</plist>
# 查询设备可用更新的 MDM 命令
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RequestType</key>
<string>AvailableOSUpdates</string>
</dict>
</plist>
# 使用 declarative management 声明目标软件版本
# 这段 JSON 会被推送到设备的声明式管理通道
{
"Identifier": "com.example.softwareupdate",
"Type": "com.apple.configuration.softwareupdate",
"Payload": {
"TargetOSVersion": "12.4",
"TargetBuildVersion": "21F79",
"DetailsKey": "Monterey 12.4 - 安全更新"
}
}
最佳实践
- 采用分阶段更新策略:先给 IT 团队推送,观察 48 小时无重大问题后再扩大范围。利用
LocalizedName在更新通知中加入组织内部的信息,比如”IT 部门要求在周五前完成更新”。 - 将
AvailableOSUpdates查询纳入设备的日常 check-in 流程,建立设备更新状态的仪表盘,而不是等问题爆发了才去排查。 - 对于关键安全更新,设置 deadline 配置,但给用户留出至少 3 天的自主选择窗口——强制更新的用户体验很糟,只在安全事件紧急时使用。
还有什么值得关注
- macOS Monterey 新增了
softwareupdate --fetch-full-installer的改进,可以下载完整安装器用于大规模部署。 - iOS 15 的软件更新现在支持通过 MDM 安装 rapid security response,安全补丁的推送速度比以往快得多。
InstallAction命令现在支持 scheduling,可以指定安装窗口避免打扰用户工作时间。