使用 MDM 來部署軟體更新到 Apple 裝置
宣告式裝置管理是 Apple 裝置管理的未來。宣告式裝置管理可讓裝置以非同步方式套用設定和回報狀態到行動裝置管理(MDM)解決方案而無須持續輪詢。這特別適用於提升效能和可擴充性,也可促成管理軟體更新的現代化方式。宣告式裝置管理可將來自裝置的主動狀態回報提供為值和設定更動。以此方式,MDM 解決方案無須執行定期查詢便能隨時取得裝置的最新狀態。
作為傳送軟體更新指令給裝置來啟動更新的替代,MDM 解決方案會宣告期望的作業系統版本狀態並將達成該狀態的認位委託給裝置本身。這可讓受管理的軟體更新程序更有韌性並提升對使用者的顯示頻率。
運用軟體更新宣告的重要性
MDM 解決方案應盡可能運用軟體更新宣告。然而,舊版軟體更新指令和描述檔仍可使用且受支援。兩者可透過下列更動與軟體更新宣告共同作業:
由宣告定義的延遲會優先於取用限制所設定的延遲。
由宣告在 macOS 上套用的自動軟體更新會優先於設定描述檔中提供的自動更新設定。
若有使用宣告式裝置管理設定的軟體更新等待中,部分 MDM 指令不會再由用戶端處理,而是傳回錯誤告知裝置上有現用的宣告,如下表所示:
MDM 指令 | 結果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 受限制:在 macOS 中,未受管理的作業系統型更新可能會顯示在指令回應中,例如在 Xcode 或命令列工具中。 | ||||||||||
| 裝置會傳回 | ||||||||||
| 裝置會傳回空白狀態陣列。 |
使用「Apple 軟體查詢服務」
「Apple 軟體查詢服務」(可在 https://gdmf.apple.com/v2/pmv 中使用)為取得公開可用更新、升級和「快速安全回應」的官方資源。此資源允許 MDM 解決方案在發佈一經公開便以及時和準確的方式進行查詢並計算每個硬體機型的適用程度。
JSON 回應會包含可用軟體發佈的三個列表:
PublicAssetSets:此列表包含一般大眾嘗試更新或升級時適用的最新發佈。
AssetSets:此列表為 PublicAssetSets 的子集並包含可供 MDM 解決方案推播到受監管裝置的所有發佈。
PublicRapidSecurityResponses:此列表包含目前適用於 Apple 裝置的「快速安全回應」發佈。
列表中的每個元件皆包含 ProductVersion
號碼和作業系統的 Build
,發佈公開的 PostingDate
、ExpirationDate
和該發佈的 SupportedDevices
列表。裝置列表會符合裝置中的 ProductName
值,而該值會在裝置嘗試註冊時於 DeviceInformation
回應、初次 Authenticate
要求或 MachineInfo
中傳回。
通常設為發佈日期後 180 天的到期日,定義了更新簽署到期的日期。到期的更新無法再安裝在裝置上。當後續的更新可用時,之前的更新可能會更新其到期日。若未提供到期日,則該更新尚未到期。到期日在過去的更新便已到期。
內容會由作業系統平台使用下列密鑰分類:
iOS
(會包含 iPadOS、tvOS 和 watchOS)macOS
xrOS
(即 visionOS)
{
"AssetSets": {
"iOS": [
{
"ProductVersion": "17.5",
"Build": "21F6079",
"PostingDate": "2024-05-13",
"ExpirationDate": "2024-08-15",
"SupportedDevices": ["iPad11,1", "iPad11,2", "iPad11,3", "iPad11,4", "iPad11,6", "iPad11,7", "iPad12,1", "iPad12,2", "iPad13,1","iPad13,10", "iPad13,11", "iPad13,16", "iPad13,17", “iPad13,18", "iPad13,19", "iPad13,2", "iPad13,4", “iPad13,5", "iPad13,6", "iPad13,7", "iPad13,8", "iPad13,9", "iPad14,1", "iPad14,2", "iPad14,3", "iPad14,4", "iPad14,5", "iPad14,6", "iPad6,11", "iPad6,12", "iPad6,3", "iPad6,4", "iPad6,7", "iPad6,8", "iPad7,1", "iPad7,11", "iPad7,12", "iPad7,2", "iPad7,3", "iPad7,4", "iPad7,5", "iPad7,6", "iPad8,1", "iPad8,10", "iPad8,11", "iPad8,12", "iPad8,2", "iPad8,3", "iPad8,4", "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8", "iPad8,9", "iPhone10,1", "iPhone10,2", "iPhone10,3", "iPhone10,4", "iPhone10,5", "iPhone10,6", "iPhone11,2", "iPhone11,6", "iPhone11,8", "iPhone12,1", "iPhone12,3", "iPhone12,5", "iPhone12,8", "iPhone13,1", "iPhone13,2", "iPhone13,3", "iPhone13,4", "iPhone14,2", "iPhone14,3", "iPhone14,4", "iPhone14,5", "iPhone14,6", "iPhone14,7", "iPhone14,8", "iPhone15,2", "iPhone15,3"
]
},
使用產品版本列表來判斷哪些版本高於裝置的目前作業系統版本以及適用於特定裝置。提供版本列表給 MDM 管理者作為潛在的作業系統更新候選項目。
將狀態報告傳送給 MDM 解決方案
若要在狀態項目更動時接收其更新,伺服器必須傳送 ManagementStatusSubscriptions
宣告給裝置來訂閱每個狀態報告。若訂閱的項目有更動,以及每 24 小時,裝置會在 ManagementStatusSubscriptions
宣告啟用時將 StatusReport
傳送給 MDM 解決方案。
為了監控作業系統版本和軟體更新狀態,MDM 解決方案可能會想訂閱下列狀態報告:
狀態報告 | 說明 |
---|---|
| 裝置上的作業系統版號版本(例如 21E19)。 |
| 裝置上使用中的作業系統版本(例如 17.4)。 |
| 裝置上使用中的作業系統版號和「快速安全回應」版本,例如(20A123a 或 20F75c)。 |
| 裝置上使用中的作業系統「快速安全回應」版本(例如 a)。 |
| 包含裝置上等待中之軟體更新版號和作業系統版本的辭典。 |
| 軟體更新安裝狀態,包含下列值:
|
| 包含軟體更新等待中之相關原因的詳細資訊的辭典。
|
| 關於軟體更新失敗的詳細資訊。詳細資訊包含軟體更新失敗的次數、上次失敗的時間戳記和失敗原因。 |
| 裝置的註冊 Beta 版計畫名稱,或是在沒有註冊的 Beta 版計畫時顯示空白字串。 |
除了其他報告,MDM 解決方案可能也會想讓管理者使用 softwareupdate.install-reason
以便支援並針對觸發更新的方式提供其他見解。此辭典可用來確認使用者已自行啟動更新,更新自動發生,或是由軟體更新強制執行宣告強制執行。
在 MDM 註冊期間要求特定最低軟體版本
若裝置支援此功能,當裝置偵測到「設定輔助程式」中的管理設定,便會在傳送給 MDM 解決方案之初始 HTTP POST 要求的 MachineInfo
資料中傳回設為 True 的MDM_CAN_REQUEST_SOFTWARE_UPDATE 密鑰。如需更多資訊,請參閱 Apple 裝置管理 GitHub 資源庫中的 MachineInfo yaml 檔案。
此外,裝置會在 MachineInfo
資料(皆為字串)中提供下列欄位:
密鑰 | 支援的最低作業系統 | 說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
VERSION | iOS 17 iPadOS 17 macOS 14 | 安裝在裝置上的版號版本(例如 7A182)。 | |||||||||
OS_VERSION | iOS 17 iPadOS 17 macOS 14 | 安裝在裝置上的作業系統版本(例如 17.0)。 | |||||||||
SUPPLEMENTAL_BUILD_VERSION | iOS 17 iPadOS 17 macOS 14 | 裝置的「快速安全回應」版本(若有一個可用)。 | |||||||||
SUPPLEMENTAL_OS_VERSION_EXTRA | iOS 17 iPadOS 17 macOS 14 | 裝置的額外「快速安全回應」版本(若有一個可用)。 | |||||||||
SOFTWARE_UPDATE_DEVICE_ID | iOS 17.4 iPadOS 17.4 macOS 14.4 | 用來在「Apple 軟體查詢服務」中查詢可用作業系統更新的裝置機型識別碼。 |
根據提供的資訊,MDM 解決方案可以決定是否要強制裝置執行更新。
若 MDM 解決方案選擇不強制執行軟體更新,則只會傳回 MDM 註冊描述檔以回應 HTTP POST 要求,如同其允許 MDM 註冊繼續進行的正常操作。
若 MDM 解決方案選擇強制執行軟體更新,則必須傳回包含 403 狀態代碼 HTTP 回應,並將 JSON 或 XML 納入回應內文(HTTP 內容類型回應標題必須分別設為
application/json
或application/xml
)。
收到此錯誤回應後,裝置會嘗試更新到指定的版本。若更新成功,裝置會重新啟動而且使用者必須再次執行「設定輔助程式」。裝置傳送給 MDM 解決方案的下一個 MachineInfo
POST 要求會顯示更新的作業系統版本,而 MDM 解決方案可以接著進行 MDM 註冊。若更新失敗,錯誤會對使用者顯示而且「遠端管理」面板會在「設定輔助程式」中再次顯示。
response
架構定義於下表。
密鑰 | 類型 | 必要 | 說明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 字串 | 是 | 必須設為 | ||||||||
| 字串 | 否 | 錯誤的描述。僅供記錄使用。 | ||||||||
| 字串 | 否 | 適合對使用者顯示的錯誤描述。 | ||||||||
| 辭典 | 是 | 指定軟體更新的其他資料。 |
details
辭典架構定義於此處。
密鑰 | 類型 | 必要 | 說明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 字串 | 是 | 裝置必須更新的作業系統版本。 | ||||||||
| 字串 | 否 | 裝置必須更新的版號版本。 | ||||||||
| 辭典 | 否 | 裝置會註冊 Beta 版計畫,讓強制執行的軟體更新為 Beta 版計畫作業系統版本。 在強制執行的軟體更新完成後,裝置仍會在 Beta 版計畫中。 |
若僅指定 OSVersion
,裝置會自動替此版本下載並安裝任何可用的「快速安全回應」。若需要特定版號或補充版本,MDM 解決方案也可選擇是否指定 BuildVersion
。例如,儘管 iOS 16.5.1(c)已可供使用,若需要在註冊前讓裝置執行 iOS 16.5.1(a),MDM 解決方案必須將 OSVersion
設為 iOS 16.5.1 並將 BuildVersion
設為 20F770750b。
【重要事項】在 macOS 15 之前只能指定來自 PublicAssetSets
和 PublicRapidSecurityResponses
列表中的版本。在 macOS 15 中也可使用來自 AssetSets
中的內容。
軟體更新的 MDM 設定
com.apple.configuration.softwareupdate.settings
宣告(適用於 iOS 18、iPadOS 18 和 macOS 15)由可用來設定多種軟體更新動作層面的辭典所組成。
在 MDM 解決方案發布跨多個宣告的不同密鑰後,裝置會合併所有現用軟體更新設定宣告的設定。若相同密鑰由多個宣告設定,合併動作會取決於個別密鑰,概述於下表。
使用 MDM 設定自動軟體更新
com.apple.configuration.softwareupdate.settings
宣告會提供辭典來定義受監管 iPhone、iPad 和 Mac 上的自動軟體更新動作。如需更多資訊,請參閱:AutomaticActions 辭典密鑰。
MDM 如何處理「快速安全回應」
「快速安全回應」會一律套用到作業系統的最新更新,從而成為「快速安全回應」的基礎版本。例如,若 iPhone 安裝的是作業系統版本 iOS 17.2,則會在有提供時套用 17.2(a)補充更新。在 iOS 18、iPadOS 18 和 macOS 15 中已可使用合併的更新,這可讓軟體更新包含任何可用的「快速安全回應」。
在 iOS 18、iPadOS 18 和 macOS 15 之前,MDM 解決方案可能必須觸發兩個軟體更新才能確保特定的補充版本出現:首先,若裝置尚未安裝該基礎版本,MDM 必須將裝置更新到補充更新的基礎版本(例如 iOS 17.1 到 iOS 17.2);然後 MDM 必須將該基礎版本更新到補充版本(例如 iOS 17.2 到 iOS 17.2(a))。
在 iOS 18、iPadOS 18 和 macOS 15 中,MDM 解決方案可以指定以下任一項目:
作業系統版本(會自動安裝可用的「快速安全回應」)
補充版號版本(會使裝置自動執行必要的更新到基礎版本作為程序的部分)
這兩種方式會在「自動裝置註冊」期間套用到軟體更新強制執行設定,以及強制執行的最低版本。
com.apple.configuration.softwareupdate.settings
宣告也可用來設定受監管的 iPhone、iPad 和 Mac 裝置上的「快速安全回應」動作。如需更多資訊,請參閱:iOS、iPadOS 和 macOS 的 RapidSecurityResponse 辭典密鑰。
使用 MDM 延遲軟體更新
延遲軟體更新或升級 1 到 90 天可使用 iPhone、iPad 和 Mac 裝置上的 com.apple.configuration.softwareupdate.settings
宣告完成。
設定的延遲會定義一個版本在公開可用後多少天便不會提供給使用者。不受設定的延遲支配,MDM 解決方案仍可在受管理的裝置上強制執行特定軟體更新、升級或「快速安全回應」。如需更多資訊,請參閱:iOS 和 iPadOS 的 Deferrals 辭典密鑰和 macOS 的 Deferrals 辭典密鑰。
【注意】延遲軟體更新也會延遲任何依附於該版本的「快速安全回應」。
使用 MDM 強制執行軟體更新
若要在使用「裝置註冊」或「自動裝置註冊」進行註冊的裝置上依照特定時間強制執行軟體更新,MDM 解決方案可以套用 com.apple.configuration.softwareupdate.enforcement.specific
宣告。
若設定指定的作業系統或版號版本與目前的裝置版本相同或較舊,則該設定會被忽略。
若有包含比目前裝置版本新的作業系統或版號版本的多個設定,包含最早目標日期與時間的設定會先處理,而任何其他設定會保留在佇列中。裝置更新到新版本時,設定集會經過重新處理以確認接下來要處理的設定是哪一個。
若 MDM 解決方案只定義 TargetOSVersion
,任何可用的「快速安全回應」都會自動安裝。若要以特定版本或「快速安全回應」為目標,MDM 解決方案在指定版號之外還可以使用 TargetBuildVersion
密鑰,包含補充版本識別碼。
如需更多資訊,請參閱:強制執行軟體更新辭典密鑰。
通知
Notifications 密鑰會更改預設通知動作來在強制執行時間的 1 小時前才顯示通知,以及重新啟動的倒數。如需更多資訊,請參閱:Notifications key。
將 Bootstrap 代號用於配備 Apple 晶片的 Mac 電腦
若要在受監管的 Apple 晶片式 Mac 電腦上授權強制執行的軟體更新,MDM 解決方案可以要求並託管 Bootstrap 代號。這可促成完整流暢的軟體更新體驗並免除使用者互動作為程序部份的需要。如有需要,裝置會使用 GetBootstrapTokenRequest
來從 MDM 解決方案取回 Bootstrap 代號。
在第一個步驟中,MDM 解決方案會使用 SecurityInfo
指令來確認裝置是否支援 Bootstrap 代號。若回應包含設為 True 的 BootstrapTokenRequiredForSoftwareUpdate
,裝置便可使用 Bootstrap 代號來授權軟體更新。
若要製作 Bootstrap 代號,MDM 解決方案必須在 MDM 描述檔中將 com.apple.mdm.bootstraptoken
加入 ServerCapabilities
陣列。如需更多資訊,請參閱 Apple 開發者網站上的 MDM 承載資料。
在裝置收到 Bootstrap 代號後,便會在下次已啟用「安全代號」的使用者登入時製作 Bootstrap 代號。裝置接著會聯絡 MDM 解決方案的簽入端點並使用 SetBootstrapTokenRequest
託管代號。如需更多資訊,請參閱 Apple 開發者網站上的 設定 Bootstrap 代號。
如需最新的架構規格,請參閱:Apple 裝置管理 GitHub 資源庫。