MDMを使ってソフトウェアアップデートをAppleデバイスに導入する
宣言型デバイス管理はAppleのデバイス管理の将来像です。これにより、デバイスは常にポーリングしなくても、設定の適用やMDM(モバイルデバイス管理)ソリューションへのステータス報告を非同期で行うことができます。これはパフォーマンスと拡張性にとっては最適で、ソフトウェアアップデートを管理するための最新のアプローチも可能にします。宣言型デバイス管理は、プロアクティブなステータスレポートを値および構成変更として提供します。このようにして、MDMソリューションには、定期的にクエリーを実行しなくても、デバイスに最新の状況が表示されます。
MDMソリューションは、デバイスにソフトウェアアップデートコマンドを送信してアップデートを開始するのではなく、オペレーティングシステムバージョンの望ましい状態を宣言し、その状態を達成するためのタスクをデバイス自体に委任します。これにより、管理対象ソフトウェアアップデートプロセスの回復力を高め、ユーザ透過性を向上させることができます。
ソフトウェアアップデート宣言の活用の重要性
MDMソリューションは、可能な限りソフトウェアアップデート宣言を活用するべきです。ただし、ソフトウェアアップデートの古いコマンドとプロファイルは引き続き使用可能で、対応しています。それらは、以下の変更によって、ソフトウェアアップデート宣言と連携できます:
宣言によって定義される延期は、制限によって構成される延期よりも優先されます。
宣言によって適用されるmacOSの自動ソフトウェアアップデート設定は、構成プロファイルで提供された自動アップデート設定よりも優先されます。
宣言型デバイス管理を使用して構成された保留中のソフトウェアアップデートがある場合、一部のMDMコマンドはクライアントによって処理されなくなり、以下の表のように、デバイスにアクティブな宣言があることを伝えるエラーが返されます:
MDMコマンド | 結果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 制限付き: macOSでは、管理されていないオペレーティングシステムベースのアップデートが、例えばXcodeやコマンドラインツールなどのコマンド応答に表示される場合があります。 | ||||||||||
| デバイスは | ||||||||||
| デバイスは空のステータス配列を返します。 |
Apple Software Lookup Serviceを使用する
Apple Software Lookup Service(https://gdmf.apple.com/v2/pmvで利用可能です)は公開されているアップデート、アップグレード、および緊急セキュリティ対応のリストを取得できる公式のリソースです。これによってMDMソリューションでは、リリースが公開され次第リリースを照会して、各ハードウェアモデルの適用対象かどうかを適切なタイミングで正確に計算できます。
JSONレスポンスには、利用可能なソフトウェアリリースの3つのリストが含まれています:
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
宣言を送信することで、サーバが各ステータスレポートに登録する必要があります。そのあとデバイスは、ManagementStatusSubscriptions
宣言がアクティブになったとき、登録されている項目のステータスが変わった場合、および24時間ごとに、MDMソリューションにStatusReport
を送信します。
オペレーティングシステムのバージョンとソフトウェアアップデートのステータスを監視する場合は、MDMソリューションが以下のステータスレポートに登録することをおすすめします:
ステータスレポート | 説明 |
---|---|
| デバイス上のオペレーティングシステムのビルドバージョン(21E219など)。 |
| デバイスで使用中のオペレーティングシステムのバージョン(17.4など)。 |
| デバイスで使用中のオペレーティングシステムのビルドと緊急セキュリティ応答のバージョン(20A123aや20F75cなど)。 |
| デバイスで使用中のオペレーティングシステムの緊急セキュリティ対応のバージョン(aなど)。 |
| デバイスで保留中のソフトウェアアップデートのビルドとオペレーティングシステムのバージョンが含まれているディクショナリ。 |
| ソフトウェアアップデートのインストールのステータス。値は以下の通りです:
|
| 保留中のソフトウェアアップデートの理由についての詳細を含むディクショナリ。
|
| ソフトウェアアップデートのエラーについての詳細。詳細には、ソフトウェアアップデートが失敗した回数、最後のエラーのタイムスタンプ、およびエラーの理由が含まれます。 |
| デバイスの登録済みベータプログラムの名前、または登録済みベータプログラムがない場合は空の文字列。 |
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 Software Lookup Serviceで使用可能なオペレーティングシステムのアップデートを検索するために使用されるデバイスモデル識別子。 |
MDMソリューションは、提供された情報に基づいて、デバイスを強制的にアップデートするかどうかを決定できます。
MDMソリューションがソフトウェアアップデートを強制しないことを選択した場合は、HTTP POST要求への応答でMDM登録プロファイルを返し、通常通りMDM登録の進行を許可します。
MDMソリューションがソフトウェアアップデートを強制することを選択した場合は、403ステータスコードでHTTP応答を返し、応答本文にJSONまたはXMLオブジェクトを含める必要があります(HTTP Content-Type応答ヘッダはそれぞれ
application/json
またはapplication/xml
に設定する必要があります)。
エラー応答を受信したあと、デバイスは指定されたバージョンへのアップデートを試みます。アップデートが成功すると、デバイスは再起動し、ユーザは設定アシスタントをもう一度実行する必要があります。デバイスからMDMソリューションへの次のMachineInfo
POST要求は、アップデートされたオペレーティングシステムのバージョンを表示します。するとMDMソリューションはMDM登録を進行できます。アップデートできなかった場合は、ユーザにエラーが表示され、設定アシスタントに再度「リモートマネージメント」パネルが表示されます。
次の表でresponse
スキーマを定義します。
キー | タイプ | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 文字列 | はい |
| ||||||||
| 文字列 | いいえ | エラーの説明。ログ記録のためにのみ使用されます。 | ||||||||
| 文字列 | いいえ | ユーザに表示するのに適しているエラーの説明。 | ||||||||
| ディクショナリ | はい | ソフトウェアアップデートを指定する追加のデータ。 |
details
ディクショナリスキーマはここに定義されています。
キー | タイプ | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 文字列 | はい | デバイスがアップデートする必要があるオペレーティングシステムのバージョン。 | ||||||||
| 文字列 | いいえ | デバイスがアップデートする必要があるビルドバージョン。 | ||||||||
| ディクショナリ | いいえ | デバイスがベータプログラムに登録されて、ベータプログラムオペレーティングシステムバージョンへのソフトウェアアップデートを強制することが許可されます。 強制されたソフトウェアアップデートが完了したあと、デバイスはベータプログラムになります。 |
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ソリューションが2つのソフトウェアアップデートをトリガする必要がある場合があります:まず、デバイスにまだ追加アップデートの基本バージョンが存在しない場合は、デバイスを基本バージョンにアップデートする必要があります(例えば、iOS 17.1からiOS 17.2に)。次に、基本バージョンを追加バージョンにアップデートする必要があります(例えば、iOS 17.2をiOS 17.2 (a)に)。
iOS 18、iPadOS 18、およびmacOS 15では、MDMソリューションは次のいずれかを指定できます:
オペレーティングシステムバージョン(使用可能な緊急セキュリティ対応を自動的にインストールします)
追加ビルドバージョン(デバイスはプロセスの一環として基本バージョンに必要なアップデートを自動的に実行します)
これらの2つのアプローチは、ソフトウェアアップデート強制構成に適用され、さらに自動デバイス登録中に強制最小バージョンに適用されます。
また、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キーを参照してください。
Appleシリコンを搭載したMacコンピュータでブートストラップトークンを使用する
Appleシリコンを搭載した監視対象のMacコンピュータで強制されたソフトウェアアップデートを認証するため、MDMソリューションはブートストラップトークンを要求およびエスクローできます。これによって完全にシームレスなソフトウェアアップデート体験が可能になり、プロセスの一環としてのユーザの操作の必要がなくなります。必要なときに、デバイスがGetBootstrapTokenRequest
を使用してMDMソリューションからブートストラップトークンを取得します。
MDMソリューションは最初の手順で、SecurityInfo
コマンドを使用してデバイスがブートストラップトークンに対応するかどうかを判断します。trueに設定されたBootstrapTokenRequiredForSoftwareUpdate
が応答に含まれている場合、デバイスはブートストラップトークンを使用してソフトウェアアップデートを認証できます。
ブートストラップトークンが作成されるには、MDMソリューションはMDMプロファイルのServerCapabilities
配列にcom.apple.mdm.bootstraptoken
を追加する必要があります。詳しくは、Apple Developer Webサイトの「MDMペイロード」(英語)を参照してください。
デバイスはブートストラップトークンを受け取ったあと、セキュアトークンが有効になっているユーザが次にログインしたときに、ブートストラップトークンを作成します。次に、MDMソリューションのチェックインエンドポイントを検出すると、SetBootstrapTokenRequest
を使用してトークンをエスクローします。詳しくは、Apple Developer Webサイトの「ブートストラップトークンを設定する」(英語)を参照してください。
最新のスキーマ仕様については、Appleデバイス管理GitHubリポジトリを参照してください。