
デバイス管理を使ってソフトウェアアップデートをAppleデバイスに導入する
宣言型デバイス管理はAppleのデバイス管理の将来像です。これにより、デバイスは常にポーリングしなくても、設定の適用やデバイス管理サービスへのステータス報告を非同期で行うことができます。これはパフォーマンスと拡張性のためには最適で、ソフトウェアアップデートを管理するための高度なアプローチも利用できるようになります。宣言型デバイス管理は、プロアクティブなステータスレポートを値および構成変更として提供します。このようにして、デバイス管理サービスには、定期的にクエリーを実行しなくても、デバイスに最新の状況が表示されます。
デバイス管理サービスは、デバイスにソフトウェアアップデートコマンドを送信してアップデートを開始するのではなく、オペレーティングシステムバージョンの望ましい状態を宣言し、その状態を達成するためのタスクをデバイス自体に委任します。これにより、管理対象ソフトウェアアップデートプロセスの回復力を高め、ユーザ透過性を向上させることができます。
ソフトウェアアップデート宣言の活用の重要性
デバイス管理サービスは、可能な限りソフトウェアアップデート宣言を活用する必要があります。ただし、ソフトウェアアップデートの古いコマンドとプロファイルは引き続き使用可能で、対応しています。それらは、以下の変更によって、ソフトウェアアップデート宣言と連携できます:
宣言によって定義される延期は、制限によって構成される延期よりも優先されます。
宣言によって適用されるmacOSの自動ソフトウェアアップデート設定は、構成プロファイルで提供された自動アップデート設定よりも優先されます。
オペレーティングシステムが宣言型デバイス管理を使用して構成する保留中のソフトウェアアップデートがある場合、クライアントは一部のデバイス管理コマンドを処理できなくなり、以下の表のように、デバイスにアクティブな宣言があることを示すエラーを返します:
デバイス管理コマンド | 結果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 制限付き: Macコンピュータでは、管理されていないオペレーティングシステムベースのアップデートが、例えばXcodeやコマンドラインツールなどのコマンド応答に表示される場合があります。 | ||||||||||
| デバイスは | ||||||||||
| デバイスは空のステータス配列を返します。 |
Apple Software Lookup Serviceを使用する
Apple Software Lookup Service(https://gdmf.apple.com/v2/pmvで利用可能です)は公開されているアップデート、アップグレード、および緊急セキュリティ対応のリストを取得できる公式のリソースです。これによってデバイス管理サービスでは、Appleからリリースが公開され次第リリースを照会して、各ハードウェアモデルの適用対象かどうかを適切なタイミングで正確に計算できます。
JSONレスポンスには、利用可能なソフトウェアリリースの3つのリストが含まれています:
PublicAssetSets: このリストには、一般ユーザがアップデートまたはアップグレードを行おうとした場合に利用可能な最新リリースが含まれています。
AssetSets: このリストは
PublicAssetSets
の一部であり、デバイス管理サービスがデバイスにプッシュできるすべてのリリースが含まれています。PublicRapidSecurityResponses: このリストには、Appleデバイスで現在利用可能な緊急セキュリティ対応リリースが含まれています。
リストの各要素には、オペレーティングシステムのProductVersion
番号とBuild
、リリースが公開されたPostingDate
、ExpirationDate
、そのリリースのSupportedDevices
のリストが含まれています。デバイスのリストは、デバイスのProductName
値と照合できます。これは、DeviceInformation
レスポンス、初回のAuthenticate
リクエスト、またはデバイスが登録を試みたときのMachineInfo
で返されます。
通常、有効期限は掲載日の180日後に設定され、アップデートの署名が期限切れになる日を定義します。期限切れのアップデートはデバイスにインストールできません。後続のアップデートが利用可能になると、前のアップデートの有効期限がアップデートされる場合があります。有効期限が表示されていない場合、そのアップデートは期限切れになっていません。アップデートが期限切れになるのは、有効期限が過去の場合だけです。
アセットはオペレーティングシステムのプラットフォームによって以下のキーを使用してグループ化されます:
iOS
(iPadOS、tvOS、およびwatchOSを含む)macOS
visionOS
{
"AssetSets": {
"iOS": [
{
"ProductVersion": "18.2.1",
"Build": "22C6161",
"PostingDate": "2025-01-06",
"ExpirationDate": "2025-04-17",
"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,10", "iPad14,11", "iPad14,2", "iPad14,3", "iPad14,4", "iPad14,5", "iPad14,6", "iPad14,8", "iPad14,9", "iPad16,1", "iPad16,2", "iPad16,3", "iPad16,4", "iPad16,5", "iPad16,6", "iPad7,11", "iPad7,12", "iPad8,1", "iPad8,10", "iPad8,11", "iPad8,12", "iPad8,2", "iPad8,3", "iPad8,4", "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8", "iPad8,9", "iPhone11,2", "iPhone11,4", "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", "iPhone15,4", "iPhone15,5", "iPhone16,1", "iPhone16,2", "iPhone17,1", "iPhone17,2", "iPhone17,3", "iPhone17,4"
]
},
製品バージョンのリストを使用して、どのバージョンがデバイスの現在のオペレーティングシステムのバージョンより新しく、特定のデバイスに適用可能かを判断します。そのあと、オペレーティングシステムのアップデート候補として、そのバージョンのリストをデバイス管理サービス管理者に提供してください。
デバイス管理サービスにステータスレポートを送信する
ステータス項目が変更されたときにそのアップデートを受け取るには、デバイスにManagementStatusSubscriptions
宣言を送信することで、サーバが各ステータスレポートに登録する必要があります。そのあとデバイスは、ManagementStatusSubscriptions
宣言がアクティブになったとき、登録されている項目のステータスが変わった場合、および24時間ごとに、デバイス管理サービスにStatusReport
を送信します。
オペレーティングシステムのバージョンとソフトウェアアップデートのステータスを監視する場合は、デバイス管理サービスが以下のステータスレポートに登録することをおすすめします:
ステータスレポート | 説明 |
---|---|
| デバイス上のオペレーティングシステムのビルドバージョン(21E219など)。 |
| デバイスで使用中のオペレーティングシステムのバージョン(17.4など)。 |
| デバイスで使用中のオペレーティングシステムのビルドと緊急セキュリティ応答のバージョン(20A123aや20F75cなど)。 |
| デバイスで使用中のオペレーティングシステムの緊急セキュリティ対応のバージョン(aなど)。 |
| デバイスで保留中のソフトウェアアップデートのビルドとオペレーティングシステムのバージョンが含まれているディクショナリ。 |
| ソフトウェアアップデートのインストールのステータス。値は以下の通りです:
|
| 保留中のソフトウェアアップデートの理由についての詳細を含むディクショナリ。
|
| ソフトウェアアップデートのエラーについての詳細。詳細には、ソフトウェアアップデートが失敗した回数、最後のエラーのタイムスタンプ、およびエラーの理由が含まれます。 |
| デバイスの登録済みベータプログラムの名前、または登録済みベータプログラムがない場合は空の文字列。 |
デバイス管理サービスは、その他のレポートに加えて、対応のために管理者がsoftwareupdate.install-reason
を使用できるようにしたり、アップデートがどのように実行されたかについての詳しい情報を提供したりしたい場合があります。このディクショナリを使用して、ユーザがアップデートを開始したのか、アップデートが自動的に行われたのか、またはソフトウェアアップデート強制宣言によって開始されたのかを判断できます。
登録時に特定の最小ソフトウェアバージョンをリクエストする
デバイスがこの機能に対応している場合は、設定アシスタントでデバイスが管理構成を検出したときに、デバイス管理サービスへの最初の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で使用可能なオペレーティングシステムのアップデートを検索するために使用されるデバイスモデル識別子。 |
デバイス管理サービスは、提供された情報に基づいて、デバイスを強制的にアップデートするかどうかを決定できます。
デバイス管理サービスがソフトウェアアップデートを強制しないことを選択した場合は、
HTTP POST
要求への応答で登録プロファイルを返し、通常通り登録の進行を許可します。デバイス管理サービスがソフトウェアアップデートを強制することを選択した場合は、403ステータスコードで
HTTP
応答を返し、応答本文にJSONまたはXMLオブジェクトを含める必要があります(HTTP Content-Type
応答ヘッダはそれぞれapplication/json
またはapplication/xml
に設定する必要があります)。
エラー応答を受信したあと、デバイスは指定されたバージョンへのアップデートを試みます。アップデートが成功すると、デバイスは再起動し、ユーザは設定アシスタントをもう一度実行する必要があります。デバイスからデバイス管理サービスへの次のMachineInfo POST
要求は、アップデートされたオペレーティングシステムのバージョンを表示します。そのあとサービスは登録を進行できます。アップデートできなかった場合は、ユーザにエラーメッセージが表示され、設定アシスタントに再度「リモートマネージメント」パネルが表示されます。
次の表でresponse
スキーマを定義します。
キー | タイプ | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 文字列 | はい |
| ||||||||
| 文字列 | いいえ | エラーの説明。ログ記録のためにのみ使用されます。 | ||||||||
| 文字列 | いいえ | ユーザに表示するのに適しているエラーの説明。 | ||||||||
| ディクショナリ | はい | ソフトウェアアップデートを指定する追加のデータ。 |
details
ディクショナリスキーマはここに定義されています。
キー | タイプ | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 文字列 | はい | デバイスがアップデートする必要があるオペレーティングシステムのバージョン。 | ||||||||
| 文字列 | いいえ | デバイスがアップデートする必要があるビルドバージョン。 | ||||||||
| ディクショナリ | いいえ | デバイスがベータプログラムに登録されて、ベータプログラムオペレーティングシステムバージョンへのソフトウェアアップデートを強制することが許可されます。 強制されたソフトウェアアップデートが完了したあと、デバイスはベータプログラムになります。 |
OSVersion
のみを指定した場合、デバイスはこのバージョンに使用できる緊急セキュリティ対応を自動的にダウンロードしてインストールします。特定のビルドまたは追加バージョンが必要な場合は、デバイス管理サービスがオプションでBuildVersion
を指定することもできます。例えば、iOS 16.5.1(c)はすでに使用可能であっても、登録する前にiOS 16.5.1(a)を実行することをデバイスに要求するには、デバイス管理サービスはOSVersion
をiOS 16.5.1
に、BuildVersion
を20F770750b
に設定する必要があります。
重要: macOS 15より前では、指定できるのはPublicAssetSets
リストとPublicRapidSecurityResponses
リストにあるリリースのみです。macOS 15では、AssetSets
にあるアセットも使用できます。
ソフトウェアアップデート用のデバイス管理設定
com.apple.configuration.softwareupdate.settings
宣言(iOS 18、iPadOS 18、macOS 15、およびtvOS 18.4以降で使用可能)は、ソフトウェアアップデート動作のさまざまな側面を構成するために使用できるディクショナリで構成されます。
デバイス管理サービスがさまざまなキーを複数の宣言に分散させたあと、デバイスがすべてのアクティブなソフトウェアアップデート設定宣言の設定を結合します。複数の宣言が同じキーを構成する場合、結合動作は個々のキーによって異なります。その動作について、以下の表で説明します。
デバイス管理で自動ソフトウェアアップデートを構成する
com.apple.configuration.softwareupdate.settings
宣言は、監視対象のiPhone、iPad、Apple TV、およびMacデバイスで自動ソフトウェアアップデートを定義するディクショナリを提供します。詳しくは、AutomaticActionsディクショナリキーを参照してください。
デバイス管理サービスによる緊急セキュリティ対応の処理方法
緊急セキュリティ対応は常にオペレーティングシステムの最新のアップデートに適用され、これが緊急セキュリティ対応の基本バージョンになります。例えば、iPhoneにオペレーティングシステムバージョンiOS 17.2がインストールされている場合、使用可能な場合は17.2 (a)追加アップデートが適用されます。iOS 18、iPadOS 18、およびmacOS 15ではアップデートの組み合わせが使用可能になっているため、ソフトウェアアップデートに使用可能な緊急セキュリティ対応を含めることができます。
iOS 18、iPadOS 18、およびmacOS 15より前では、特定の追加バージョンが存在することを保証するために、デバイス管理サービスが2つのソフトウェアアップデートをトリガする必要がある場合があります。まず、デバイスにまだ追加アップデートの基本バージョンが存在しない場合は、デバイスを基本バージョンにアップデートする必要があります(例えば、iOS 17.1からiOS 17.2に)。次に、基本バージョンを追加バージョンにアップデートする必要があります(例えば、iOS 17.2をiOS 17.2 (a)に)。
iOS 18、iPadOS 18、およびmacOS 15では、デバイス管理サービスは次のいずれかを指定できます:
オペレーティングシステムバージョン(使用可能な緊急セキュリティ対応を自動的にインストールします)
追加ビルドバージョン(デバイスはプロセスの一環として基本バージョンに必要なアップデートを自動的に実行します)
これらの2つのアプローチは、ソフトウェアアップデート強制構成に適用され、さらに自動デバイス登録中に強制最小バージョンに適用されます。
また、com.apple.configuration.softwareupdate.settings
宣言は、監視対象のiPhone、iPad、およびMacデバイス上で緊急セキュリティ対応動作を構成するために使用することもできます。詳しくは、iOS、iPadOS、およびmacOS用のRapidSecurityResponseディクショナリキーを参照してください。
デバイス管理でソフトウェアアップデートを延期する
ソフトウェアのアップデートまたはアップグレードを1日から90日延期することは、監視対象のiPhone、iPad、およびMacデバイスでcom.apple.configuration.softwareupdate.settings
宣言を使用して実行されます。
構成する延期には、リリースが公開されたあと、組織がユーザにリリースを提供するまでの日数を定義します。構成した延期に関係なく、デバイス管理サービスは管理対象デバイスで特定のソフトウェアアップデート、アップグレード、または緊急セキュリティ対応を強制できます。詳しくは、iOS、iPadOS、およびtvOS用のDeferralsディクショナリキーおよびmacOS用のDeferralsディクショナリキーを参照してください。
注記: ソフトウェアアップデートを延期すると、そのバージョンに依存している緊急セキュリティ対応も延期されます。
デバイス管理でソフトウェアアップデートを強制する
デバイス登録または自動デバイス登録を使用して登録されたデバイスで特定の時刻までにソフトウェアアップデートを強制するために、デバイス管理サービスはcom.apple.configuration.softwareupdate.enforcement.specific
宣言を適用できます。
デバイスに適用される構成が、現在のデバイスのバージョンと同じかそれより古いオペレーティングシステムまたはビルドのバージョンを指定している場合、デバイスはステータスレポートにエラーを返します
現在のデバイスのバージョンよりも新しいオペレーティングシステムまたはビルドのバージョンについて複数の構成が存在している場合は、一番古いターゲットの日付と時刻の構成が最初に処理され、それ以外はキュー内に残ります。デバイスが新しいバージョンにアップデートされると、構成のセットが再処理されて、次に処理される構成が決定されます。このプロセスの一環として、デバイスは現在のバージョンと同じかそれより古いバージョンを指定する既存の構成をすべて無視します。
デバイス管理サービスにTargetOSVersion
のみが定義されている場合、オペレーティングシステムにより利用可能な緊急セキュリティ対応が自動的にインストールされます。特定のリリースまたは緊急セキュリティ対応をターゲットにするために、デバイス管理サービスは、追加のバージョン識別子など、ビルドを指定するだけでなくTargetBuildVersion
キーを使用できます。
詳しくは、ソフトウェアアップデート強制のディクショナリキーを参照してください。
通知
Notificationsキーは、強制時刻および再起動カウントダウンの1時間前に通知のみを表示するように、デフォルトの通知動作を変更します。詳しくは、Notificationsキーを参照してください。
Appleシリコンを搭載したMacコンピュータでブートストラップトークンを使用する
Appleシリコンを搭載した監視対象のMacコンピュータで強制されたソフトウェアアップデートを認証するため、デバイス管理サービスはブートストラップトークンを要求およびエスクローできます。これによって完全にシームレスなソフトウェアアップデート体験が可能になり、プロセスの一環としてユーザの操作は必要なくなります。必要なときに、デバイスがGetBootstrapTokenRequest
を使用してデバイス管理サービスからブートストラップトークンを取得します。
デバイス管理サービスは最初の手順で、SecurityInfo
コマンドを使用してデバイスがブートストラップトークンに対応するかどうかを判断します。true
に設定されたBootstrapTokenRequiredForSoftwareUpdate
が応答に含まれている場合、デバイスはブートストラップトークンを使用してソフトウェアアップデートを認証できます。
ブートストラップトークンを作成するには、デバイス管理サービスはデバイス管理プロファイルのServerCapabilities
配列にcom.apple.mdm.bootstraptoken
を追加する必要があります。詳しくは、Apple Developer Webサイトの「デバイス管理プロファイル」(英語)を参照してください。
デバイスはブートストラップトークンを受け取ったあと、セキュアトークンが有効になっているユーザが次にログインしたときに、ブートストラップトークンを作成します。次に、デバイス管理サービスのチェックインエンドポイントを検出すると、SetBootstrapTokenRequest
を使用してトークンをエスクローします。詳しくは、Apple Developer Webサイトの「ブートストラップトークンを設定する」(英語)を参照してください。
最新のスキーマ仕様については、Appleデバイス管理GitHubリポジトリを参照してください。