使用 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
回應、初次「認證」
要求或 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 解決方案可能會想訂閲以下狀態報告:
狀態報告 | 説明 |
---|---|
| 裝置上作業系統的版號版本(例如 21E219)。 |
| 裝置上使用中的作業系統版本(例如 17.4)。 |
| 裝置上使用中的作業系統版號和「快速保安回應」版本(例如 20A123a 或 20F75c)。 |
| 裝置上使用中的作業系統「快速保安回應」版本(例如 a)。 |
| 包含裝置上待處理的軟件更新版號和作業系統版本的辭典。 |
| 軟件更新安裝狀態,其中包含以下值:
|
| 包含軟件待更新原因之詳情的辭典。
|
| 有關軟件更新失敗的詳細資料。 詳細資料包括軟件更新失敗的次數、上次失敗的時間戳記和失敗原因。 |
| 裝置已註冊的 Beta 版計劃名稱,或在沒有已註冊的 Beta 版計劃時的空白字串。 |
除了其他報告,MDM 解決方案可能也會想讓管理員使用 softwareupdate.install-reason
以便支援並針對觸發更新的方式提供其他意見。 此辭典可用來判斷更新由用户自行開始、自動發生還是由軟件更新強制執行聲明強制執行。
MDM 註冊期間要求指定的最低軟件版本
如裝置支援此功能,當裝置偵測到「設定輔助程式」中的管理設定,便會在 MachineInfo
資料(在初始 HTTP POST 要求中傳送給 MDM 解決方案)中傳回設為 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 解決方案可能需要觸發兩個軟件更新才能確定特定的補充版本出現: 首先,如裝置尚未安裝該基礎版本,其必須將裝置更新至補充更新的基礎版本(例如 iOS 17.1 至 iOS 17.2);然後其必須將該基礎版本更新至補充版本(例如 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 延遲軟件更新
使用受監管的 iPhone、iPad 和 Mac 裝置上的 com.apple.configuration.softwareupdate.settings
聲明來完成將軟件更新或升級延遲 1 至 90 日。
設定的延遲可定義一個版本在公開可用後多少日便不會向用户提供。 MDM 解決方案不會受設定的延遲影響,仍可在受管理的裝置上強制執行特定軟件更新、升級或「快速保安回應」。 詳情請參閲:iOS 和 iPadOS 的 Deferrals 辭典鍵和macOS 的 Deferrals 辭典鍵。
附註:延遲軟件更新也會延遲任何依存於該版本的「快速保安回應」。
使用 MDM 強制執行軟件更新
如要在使用「裝置註冊」或「自動裝置註冊」註冊的裝置上於特定時間前強制執行軟件更新,MDM 解決方案可以套用 com.apple.configuration.softwareupdate.enforcement.specific
聲明。
如設定指定的作業系統或版號版本與現有裝置版本相同或較舊,系統會忽略該設定。
如多個設定中提供的作業系統或版號版本比現有裝置版本新,系統會先處理目標日期和時間最早的設定,並將其他的任何設定留在佇列。 當裝置更新至新的版本,系統會重新處理設定組,以決定下一個要處理的設定。
如 MDM 解決方案只定義 TargetOSVersion
,任何可用的「快速保安回應」都會自動安裝。 如要將指定版本或「快速保安回應」設定為目標,MDM 解決方案除了指定包括補充版本識別碼的版本外,還可以使用 TargetBuildVersion
鍵。
詳情請參閲:強制執行軟件更新辭典鍵。
通知
Notifications 鍵會更改預設通知行為,以僅在強制執行時間和重新啟動倒數前 1 小時顯示通知。 如需更多資料,請參閲:Notifications 鍵。
將 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 資源庫。