
Utilisation de la gestion des appareils pour déployer des mises à jour logicielles pour les appareils Apple
La gestion déclarative des appareils est l’avenir de la gestion d’appareil Apple. Un appareil peut ainsi appliquer des réglages de manière asynchrone et renvoyer des rapports d’état au service de gestion des appareils sans qu’il soit nécessaire de l’interroger constamment. C’est une solution idéale en matière de rendement et d’extensibilité. Elle offre aussi une approche avancée de la gestion des mises à jour logicielles. La gestion déclarative des appareils offre des rapports d’état dynamiques à mesure que les valeurs et les configurations changent. De cette manière, un service de gestion des appareils dispose toujours d’une représentation actualisée des appareils sans avoir à constamment effectuer des requêtes.
Au lieu d’envoyer une commande de mise à jour logicielle à un appareil pour lancer une mise à jour, un service de gestion des appareils déclare l’état de la version du système d’exploitation souhaité et délègue la tâche de réaliser cet état à l’appareil lui-même. Le processus de mise à jour logicielle est ainsi géré de manière plus flexible et les utilisateurs bénéficient d’une plus grande transparence.
L’importance d’exploiter les déclarations de mise à jour logicielle
Dans la mesure du possible, les services de gestion des appareils doivent s’appuyer sur les déclarations de mise à jour logicielle. Toutefois, les commandes et les profils de mise à jour des anciens logiciels sont toujours accessibles et pris en charge. Elles peuvent être utilisées en même temps que les déclarations de mise à jour logicielle, sous réserve des modifications suivantes :
la priorité est donnée aux différés définis par une déclaration par rapport aux différés configurés par une restriction;
Les réglages de mise à jour logicielle automatique sur macOS appliqués par une déclaration sont prioritaires sur les réglages de mise à jour automatique fournis dans un profil de configuration.
Lorsqu’une mise à jour logicielle est en attente et que le système d’exploitation la configure à l’aide de la gestion déclarative des appareils, le client ne peut plus traiter certaines commandes de gestion des appareils et renvoie des erreurs indiquant qu’une déclaration est active sur l’appareil, comme le montre le tableau suivant.
Commande de gestion des appareils | Résultat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Limité : Pour les ordinateurs Mac, les mises à jour non gérées basées sur le système d’exploitation peuvent s’afficher dans la réponse à la commande, par exemple dans Xcode ou dans les outils de ligne de commande. | ||||||||||
| L’appareil renvoie une erreur | ||||||||||
| L’appareil renvoie un tableau d’état vide. |
Utilisation du service de recherche sur les logiciels Apple
Le service de recherche sur les logiciels Apple (accessible au https://gdmf.apple.com/v2/pmv) est la ressource officielle pour l’obtention d’une liste des mises à jour, mises à niveau et améliorations rapides à la sécurité offertes au public. Il permet à un service de gestion des appareils de demander les versions dès qu’Apple les publie et de calculer l’applicabilité pour chaque modèle d’appareil de manière rapide et précise.
La réponse JSON contient trois listes de versions logicielles disponibles :
PublicAssetSets : Cette liste contient les dernières versions disponibles pour le grand public lorsque les utilisateurs tentent d’effectuer une mise à jour ou une mise à niveau.
AssetSets : Cette liste est un sous-ensemble de
PublicAssetSets
et contient toutes les versions disponibles pour les services de gestion des appareils à distribuer aux appareils.PublicRapidSecurityResponses : Cette liste contient des versions des améliorations rapides à la sécurité actuellement offertes pour les appareils Apple.
Chaque élément de la liste contient le numéro ProductVersion
et la valeur Build
du système d’exploitation, la valeur PostingDate
indiquant la date de publication de la version, la valeur ExpirationDate
et une liste SupportedDevices
indiquant les appareils compatibles avec la version. La liste des appareils correspond à la valeur ProductName
de l’appareil, qui est renvoyée dans une réponse DeviceInformation
, la requête Authenticate
originale ou les renseignements MachineInfo
lors de la tentative d’inscription de l’appareil.
La date d’expiration, généralement réglée à 180 jours après la date de publication, définit la date d’expiration de la signature de la mise à jour. Une mise à jour expirée ne peut plus être installée sur les appareils. La publication de mises à jour ultérieures peut entraîner la modification des dates d’expiration des mises à jour antérieures. S’il n’y a pas de date d’expiration, la mise à jour n’a pas encore expiré. Une mise à jour est expirée uniquement lorsque sa date d’expiration est passée.
Les ressources sont groupées par plateforme de système d’exploitation au moyen des clés suivantes :
iOS
(qui comprend iPadOS, tvOS et 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"
]
},
Consultez la liste des versions de produit pour déterminer lesquelles sont plus récentes que la version du système d’exploitation actuellement installée sur l’appareil et s’appliquent à un appareil en particulier. Fournissez ensuite cette liste de versions à l’administrateur du service de gestion des appareils pour lui indiquer les mises à jour potentielles des systèmes d’exploitation.
Envoi d’un rapport d’état au service de gestion des appareils
Pour recevoir les mises à jour des éléments d’état au fur et à mesure des changements, le serveur doit s’abonner à chaque rapport d’état en envoyant une déclaration ManagementStatusSubscriptions
à l’appareil. L’appareil envoie ensuite un StatusReport
au service de gestion des appareils lorsqu’une déclaration ManagementStatusSubscriptions
devient active, si l’état d’un rapport souscrit change, et toutes les 24 heures.
Afin de surveiller les versions des systèmes d’exploitation et l’état des mises à jour logicielles, le service de gestion des appareils peut souhaiter s’abonner aux rapports d’état suivants :
Rapport d’état | Description |
---|---|
| La version du système d’exploitation sur l’appareil (par exemple, 21E219). |
| La version du système d’exploitation utilisée sur l’appareil (par exemple, 17.4). |
| Les versions du système d’exploitation et de l’amélioration rapide à la sécurité utilisées sur l’appareil, par exemple (20A123a ou 20F75c). |
| La version du système d’exploitation de l’amélioration rapide à la sécurité utilisée sur l’appareil (par exemple, a). |
| Un dictionnaire qui contient les versions du build et du système d’exploitation de la mise à jour logicielle en attente sur l’appareil. |
| L’état de l’installation de la mise à jour logicielle, qui a les valeurs suivantes :
|
| Un dictionnaire détaillant la raison d'une mise à jour logicielle en cours. La clé
|
| Renseignements sur l’échec de la mise à jour logicielle. Les renseignements comprennent le nombre de fois où la mise à jour logicielle a échoué, l’horodatage du dernier échec et la raison de l’échec. |
| Le nom du programme bêta inscrit de l’appareil, ou une chaîne vide s’il n’y a pas de programme bêta inscrit. |
En plus des autres rapports, les services de gestion des appareils peuvent également mettre le rapport softwareupdate.install-reason
à la disposition des administrateurs pour des raisons de support et pour fournir des renseignements supplémentaires sur la manière dont une mise à jour à lieu. Vous pouvez utiliser ce dictionnaire pour savoir si la mise à jour est démarrée par l’utilisateur, si elle s’effectue automatiquement ou si elle est imposée par une déclaration d’application de la mise à jour logicielle.
Demande d’une version minimale particulière du logiciel lors de l’inscription
Si un appareil prend en charge cette capacité, il renvoie une clé GAM_CAN_REQUEST_SOFTWARE_UPDATE
, qui prend la valeur True, dans les données MachineInfo
qu’il envoie dans la requête HTTP POST
initiale au service de gestion des appareils lorsque l’appareil détecte une configuration de gestion dans l’assistant réglages. Pour en savoir plus, consultez la rubrique MachineInfo yaml file dans le dépôt GitHub de gestion des appareils Apple.
De plus, les appareils fournissent les champs suivants dans les données MachineInfo
(toutes les chaînes) :
Clé | Versions des systèmes d’exploitation minimum prises en charge | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
VERSION | iOS 17 iPadOS 17 macOS 14 | La version installée sur l’appareil (par exemple, 7A182). | |||||||||
OS_VERSION | iOS 17 iPadOS 17 macOS 14 | La version du système d’exploitation installée sur l’appareil (par exemple, 17.0). | |||||||||
SUPPLEMENTAL_BUILD_VERSION | iOS 17 iPadOS 17 macOS 14 | La version des améliorations rapides à la sécurité de l’appareil (si disponible). | |||||||||
SUPPLEMENTAL_OS_VERSION_EXTRA | iOS 17 iPadOS 17 macOS 14 | La version extra des améliorations rapides à la sécurité de l’appareil (si disponible). | |||||||||
SOFTWARE_UPDATE_DEVICE_ID | iOS 17.4 iPadOS 17.4 macOS 14.4 | L’identifiant du modèle de l’appareil utilisé pour rechercher les mises à jour disponibles du système d’exploitation dans le Service de recherche sur les logiciels Apple. |
Sur la base des renseignements fournis, le service de gestion des appareils peut décider de forcer ou non l’appareil à se mettre à jour.
Si un service de gestion des appareils choisit de ne pas imposer de mise à jour logicielle, il renvoie simplement le profil d’inscription en réponse à la requête
HTTP POST
, comme il le fait pour permettre à l’inscription de se dérouler.Si le service de gestion des appareils choisit de forcer une mise à jour logicielle, il doit renvoyer une réponse
HTTP
avec le code d’état 403 et inclure un objet JSON ou XML dans le corps de la réponse (l’en-tête de réponseHTTP Content-Type
doit être défini sur respectivementapplication/json
ouapplication/xml
).
Après avoir reçu cette réponse d’erreur, l’appareil tente de passer à la version indiquée. Si la mise à jour réussit, l’appareil redémarre et l’utilisateur doit repasser par l’Assistant réglages. La prochaine requête POST MachineInfo
envoyée par l’appareil au service de gestion des appareils indique la version actualisée du système d’exploitation, et le service peut alors procéder à l’inscription. Si la mise à jour échoue, un message d’erreur s’affiche à l’intention de l’utilisateur et le volet Gestion à distance apparaît à nouveau dans l’assistant réglages.
Le schéma de réponse
est définit dans le tableau ci-dessous.
Clé | Type | Obligatoire | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Chaîne | Oui | Doit être définit comme | ||||||||
| Chaîne | Non | La description de l’erreur. Uniquement utilisé pour la journalisation. | ||||||||
| Chaîne | Non | Description de l’erreur à afficher pour l’utilisateur. | ||||||||
| Dictionnaire | Oui | Données supplémentaires indiquant la mise à jour logicielle. |
Le schéma du dictionnaire des détails
est défini ici.
Clé | Type | Obligatoire | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Chaîne | Oui | La version du système d’exploitation vers laquelle l’appareil doit être mis à jour. | ||||||||
| Chaîne | Non | La version build vers laquelle l’appareil doit être mis à jour. | ||||||||
| Dictionnaire | Non | L’appareil est inscrit au programme bêta, ce qui permet d’appliquer les mises à jour logicielles aux version du système d’exploitation du programme bêta. L’appareil reste dans le programme bêta une fois la mise à jour logicielle imposée terminée. |
Si vous indiquez juste la OSVersion
, un appareil télécharge et installe automatiquement toutes améliorations rapides à la sécurité disponible pour cette version. Si une version build particulière ou supplémentaire est nécessaire, un service de gestion des appareils peut aussi préciser en option la BuildVersion
. Par exemple, pour demander à un appareil d’exécuter iOS 16.5.1(a) avant l’inscription, (même si iOS 16.5.1(c) est déjà disponible) un service de gestion des appareils doit configurer OSVersion
à iOS 16.5.1
et la BuildVersion
à 20F770750b
.
Important : Avant macOS 15, seules les versions des listes PublicAssetSets
et PublicRapidSecurityResponses
peuvent être précisées. Sous macOS 15, il est aussi possible d’utiliser les ressources de AssetSets
.
Réglages de gestion des appareils pour les mises à jour logicielles
La déclaration com.apple.configuration.softwareupdate.settings
(disponible dans iOS 18, iPadOS 18, et macOS 15, tvOS 18.4 ou version ultérieure) comprend des dictionnaires qui peuvent être utilisés pour configurer divers aspects du comportement de la mise à jour logicielle.
Une fois les différentes clés réparties entre plusieurs déclarations par un service de gestion des appareils, un appareil fusionne les réglages de toutes les mises à jour logicielles actives et de toutes les déclarations. Si plusieurs déclarations configurent la même clé, le comportement de la fusion dépend de la clé individuelle qui est décrit dans les tableaux ci-dessous.
Configuration des mises à jour logicielles automatiques avec gestion des appareils
La déclaration com.apple.configuration.softwareupdate.settings
propose un dictionnaire pour définir le comportement de mise à jour logicielle automatique sur les appareils supervisés iPhone, iPad, Apple TV et Mac. Pour en savoir plus, consultez la rubrique Clés du dictionnaire AutomaticActions.
Traitement des améliorations rapides à la sécurité par un service de gestion des appareils
Les améliorations rapides à la sécurité s’appliquent toujours à la dernière mise à jour d’un système d’exploitation, qui devient la version de base de l’amélioration rapide à la sécurité. Par exemple, si un iPhone a une version iOS 17.2 du système d’exploitation installée, il applique alors la mise à jour complémentaire 17.2 (a), si elle est disponible. Sous iOS 18, iPadOS 18, et macOS 15, des mises à jour combinées ont été mises à disposition, qui permettent à une mise à jour logicielle d’inclure toutes améliorations rapides à la sécurité disponibles.
Avant iOS 18, iPadOS 18, et macOS 15, un service de gestion des appareils peut avoir à déclencher deux mises à jour logicielles pour s’assurer qu’une version supplémentaire particulière est présente. Tout d’abord, il doit mettre à jour l’appareil vers la version de base de la mise à jour complémentaire, si l’appareil n’est pas déjà sur cette version de base (par exemple, iOS 17.1 vers iOS 17.2). Il faut ensuite mettre à jour la version de base vers la version complémentaire (par exemple, iOS 17.2 vers iOS 17.2 (a)).
Sous iOS 18, iPadOS 18, et macOS 15, un service de gestion des appareils peut préciser l’un ou l’autre des éléments suivants :
La version du système d’exploitation (qui installe automatiquement les améliorations rapides à la sécurité disponibles).
La version build complémentaire (qui fait que l’appareil effectue automatiquement une mise à jour nécessaire de la version de base dans le cadre du processus).
Ces deux approches s’appliquent à la configuration de l’application des mises à jour logicielles et à la version minimale appliquée lors de l’inscription automatisée des appareils.
La déclaration com.apple.configuration.softwareupdate.settings
peut également être utilisée pour configurer le comportement de l’amélioration rapide à la sécurité sur les appareils supervisés iPhone, iPad et Mac. Pour en savoir plus, consultez la rubrique Clés de dictionnaire RapidSecurityResponse pour iOS, iPadOS, et macOS.
Report d’une mise à jour logicielle avec la gestion des appareils
Différer une mise à jour ou une mise à niveau logicielle de 1 à 90 jours s’effectue à l’aide de la déclaration com.apple.configuration.softwareupdate.settings
sur les appareils supervisés iPhone, iPad et Mac.
Un report configuré définit le nombre de jours précédant la mise à disposition d’une version par une organisation aux utilisateurs après sa publication. Quelle que soit la configuration du report, un service de gestion des appareils peut toujours imposer une mise à jour logicielle ou une mise à niveau particulière, ou encore une amélioration rapide à la sécurité sur les appareils gérés. Pour en savoir plus, consultez la rubrique Clés de dictionnaire de reports pour iOS, iPadOS et tvOS et Clés de dictionnaire de reports pour macOS.
Remarque : Le report des mises à jour logicielles entraîne également le report des améliorations rapides à la sécurité qui dépendent de cette version.
Imposition des mises à jour logicielle avec la gestion des appareils
Pour imposer une mise à jour logicielle avant une certaine date aux appareils inscrits à l’aide de Device Enrollment ou Automated Device Enrollment, les services de gestion des appareils peuvent appliquer la déclaration com.apple.configuration.softwareupdate.enforcement.specific
.
Si une configuration est appliquée à un appareil qui précise un système d’exploitation ou une version de build identique ou antérieure à la version actuelle de l’appareil, celui-ci renvoie une erreur dans le rapport d’état.
Si plusieurs configurations sont présentes avec un système d’exploitation ou une version plus récents que la version actuelle de l’appareil, la configuration dont la date et l’heure cibles sont les plus anciennes est traitée en premier, et les autres restent dans la file d’attente. Lorsque l’appareil passe à une nouvelle version, l’ensemble des configurations est à nouveau traité afin de déterminer laquelle est la prochaine à être traitée. Au cours de ce processus, l’appareil ignore toutes les configurations actuelles qui indiquent une version antérieure ou identique à la version actuelle.
Si un service de gestion des appareils définit uniquement la TargetOSVersion
, le système d’exploitation installe automatiquement toute amélioration rapide à la sécurité disponible. Pour cibler une version particulière ou une amélioration rapide à la sécurité, un service de gestion des appareils peut utiliser la clé TargetBuildVersion
en plus de préciser la version, y compris l’identifiant de version complémentaire.
Pour en savoir plus, consultez la rubrique Imposer les mises à jour logicielles des clés du dictionnaire.
Notifications
La clé de notifications modifie le comportement de notification par défaut pour afficher une notification seulement une heure avant l’heure d’application et le compte à rebours de redémarrage. Pour en savoir plus, consultez la rubrique Clé de notifications.
Utilisation du jeton d’amorçage pour les ordinateurs Mac avec puce Apple
Pour autoriser une mise à jour logicielle imposée sur un ordinateur Mac supervisé avec puce Apple, un service de gestion des appareils peut demander un jeton d’amorçage et le mettre sous séquestre. La mise à jour du logiciel se fait ainsi de manière totalement transparente et l’utilisateur n’a pas besoin d’intervenir dans le processus. Au besoin, les appareils utilisent une requête GetBootstrapTokenRequest
pour récupérer le jeton d’amorçage à partir du service de gestion des appareils.
Tout d’abord, le service de gestion des appareils détermine si l’appareil prend en charge un jeton d’amorçage à l’aide de la commande SecurityInfo
. Si la réponse comprend une BootstrapTokenRequiredForSoftwareUpdate
qui est définie comme true
, l’appareil peut utiliser un jeton d’amorçage pour autoriser une mise à jour logicielle.
Pour créer un jeton d’amorçage, le service de gestion des appareils doit ajouter com.apple.mdm.bootstraptoken
au tableau ServerCapabilities
dans le profil de gestion des appareils. Pour en savoir plus, consultez la page consacrée auprofil de gestion des appareils sur le site Web Apple Developer (en anglais).
Après avoir reçu le jeton d’amorçage, l’appareil crée un jeton d’amorçage lors de la prochaine connexion d’un utilisateur disposant d’un jeton actif sécurisé. Ensuite, il s’adresse au point de terminaison d’enregistrement du service de gestion des appareils et séquestre le jeton à l’aide de SetBootstrapTokenRequest
. Pour en savoir plus, consultez la page consacrée à la configuration d’un jeton d’amorçage sur le site Web Apple Developer.
Pour la spécification de schéma la plus courante, consultez le dépôt GitHub de gestion des appareils Apple.