
Utiliser la gestion des appareils pour déployer des mises à jour de logiciels sur les appareils Apple
La gestion déclarative des appareils est l’avenir de la gestion des appareils Apple. Elle permet à un appareil dʼappliquer des réglages de façon asynchrone et de signaler son état au service de gestion des appareils sans devoir être interrogé en permanence. Elle permet dʼobtenir des performances et une extensibilité idéales, tout en offrant une approche avancée de la gestion des mises à jour logicielles. La gestion déclarative des appareils fournit des rapports d’état proactifs provenant des appareils lorsque les valeurs et les configurations changent. De cette façon, un service de gestion des appareils dispose toujours d’une vue actualisée des appareils sans avoir à effectuer des requêtes régulières.
Plutôt que d’envoyer une commande de mise à jour logicielle à un appareil pour qu’il initie une mise à jour, un service de gestion des appareils déclare l’état de la version souhaitée du système d’exploitation et délègue la tâche consistant à atteindre cet état à l’appareil lui-même. Cela permet une gestion plus résiliante du processus de mise à jour logicielle et une meilleure transparence pour l’utilisateur.
L’importance de tirer profit des déclarations de mises à jour logicielles
Les services de gestion des appareils doivent utiliser les déclarations de mise à jour de logiciels autant que possible. Cependant, les anciens profils et commandes de mises à jour logicielles sont toujours disponibles et pris en charge. Ils peuvent fonctionner avec les déclarations de mises à jour logicielles, avec les modifications suivantes :
Les reports définis par une déclaration sont prioritaires sur les reports configurés par une restriction.
Les réglages de mises à jour logicielles automatiques sur macOS appliqués par une déclaration sont prioritaires sur les réglages de mises à jour automatiques fournis dans un profil de configuration.
Lorsqu’une mise à jour logicielle en attente est configurée par le système d’exploitation à l’aide de la gestion des appareils déclarative, le client ne peut plus traiter certaines commandes de gestion des appareils et renvoie des erreurs indiquant qu’une déclaration active est présente sur l’appareil, comme le montre le tableau suivant :
Commande de gestion des appareils | Résultat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Limité : Pour les Mac, les mises à jour basées sur le système d’exploitation qui ne sont pas gérées peuvent s’afficher dans la réponse à la commande, par exemple dans Xcode ou les outils de ligne de commande. | ||||||||||
| L’appareil renvoie une erreur | ||||||||||
| L’appareil renvoie un tableau d’état vide. |
Utilisation du service ALS (Apple Software Lookup Service)
Le service ALS (Apple Software Lookup Service) (disponible à l’adresse https://gdmf.apple.com/v2/pmv) est la ressource officielle pour obtenir une liste des mises à jour, des mises à niveau et des mises à jour de sécurité urgentes accessibles au public. Il permet à un service de gestion des appareils d’interroger les versions dès qu’Apple les publie et de calculer leur applicabilité pour chaque modèle matériel de manière rapide et précise.
La réponse JSON contient trois listes de versions logicielles disponibles :
PublicAssetSets : Cette liste contient les versions les plus récentes mises à la disposition du grand public dans le cas d’une tentative de mise à jour ou de mise à niveau.
AssetSets : Cette liste est un sous-ensemble de
PublicAssetSets
et contient toutes les versions mises à la disposition des services de gestion des appareils, qui se chargent ensuite de les envoyer aux appareils.PublicRapidSecurityResponses : Cette liste contient les versions des mises à jour de sécurité urgentes actuellement disponibles pour les appareils Apple.
Chaque élément de la liste contient le numéro de ProductVersion
et le Build
du système d’exploitation, sa PostingDate
lorsque la version a été publiée, sa ExpirationDate
et une liste de SupportedDevices
pour cette version. La liste des appareils correspond à la valeur ProductName
de l’appareil, qui est renvoyée dans une réponse DeviceInformation
, dans la requête Authenticate
initiale ou dans les informations MachineInfo
lorsque l’appareil tente de s’inscrire.
La date d’expiration, généralement fixé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 arrivée à expiration ne peut plus être installée sur des appareils. Lorsque des mises à jour ultérieures sont mises à disposition, les dates d’expiration des mises à jour précédentes peuvent être mises à jour. Si aucune date d’expiration n’est fournie, la mise a jour n’a pas encore expiré. Une mise à jour n’a expiré que si elle a une date d’expiration dans le passé.
Les actifs sont regroupés par plateforme de système dʼexploitation à l’aide 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"
]
},
Utilisez la liste des versions de produit pour identifier les versions ultérieures à celle du système dʼexploitation actuel de l’appareil qui sont applicables à un appareil en particulier. Fournissez ensuite cette liste de versions à lʼadministrateur du service de gestion des appareils en les présentant comme candidats potentiels pour la mise à jour du système dʼexploitation.
Envoi d’un rapport d’état au service de gestion des appareils
Afin de recevoir des mises à jour lorsque des éléments d’état changent, le serveur doit s’abonner à chaque rapport d’état en envoyant une déclaration ManagementStatusSubscriptions
à l’appareil. L’appareil envoie alors un StatusReport
au service de gestion des appareils lorsqu’une déclaration ManagementStatusSubscriptions
devient active, si l’état de l’élément qui fait l’objet de l’abonnement change, et toutes les 24 heures.
Aux fins de surveillance des versions du système d’exploitation et de 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 d’assemblage du système d’exploitation présente sur l’appareil (par exemple, 21E219). |
| La version du système d’exploitation utilisée sur l’appareil (par exemple, 17.4). |
| Les versions d’assemblage et de mise à jour de sécurité urgente du système d’exploitation utilisées sur l’appareil (par exemple 20A123a ou 20F75c). |
| La version de la mise à jour de sécurité urgente du système d’exploitation utilisée sur l’appareil (par exemple a). |
| Un dictionnaire qui contient les versions d’assemblage et de système d’exploitation de la mise à jour logicielle en attente sur l’appareil. |
| L’état d’installation de la mise à jour logicielle, qui présente les valeurs suivantes :
|
| Un dictionnaire contenant des détails sur la raison d’une mise à jour logicielle en attente. La clé
|
| Détails à propos de l’échec d’une mise à jour logicielle. Les détails comprennent le nombre d’échecs de la mise à jour logicielle, l’horodatage du dernier échec et la raison de l’échec. |
| Le nom du programme bêta auquel l’appareil est inscrit ou une chaîne vide s’il n’est inscrit à aucun programme bêta. |
En plus des autres rapports, les services de gestion des appareils peuvent également souhaiter mettre softwareupdate.install-reason
à la disposition des administrateurs à des fins d’assistance et pour fournir des informations supplémentaires quant à la manière dont une mise à jour se produit. Vous pouvez utiliser ce dictionnaire pour déterminer si un utilisateur a initié la mise à jour, si la mise à jour a eu lieu automatiquement ou si elle a été initiée par une déclaration d’application de mise à jour logicielle.
Demande d’une version minimale spécifique du logiciel pendant l’inscription
Si un appareil prend en charge cette fonctionnalité, il renvoie une clé MDM_CAN_REQUEST_SOFTWARE_UPDATE
, définie sur 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 Assistant réglages. Pour en savoir plus, consultez le fichier yaml MachineInfo dans le répertoire 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 du système d’exploitation les plus anciennes à être prises en charge | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
VERSION | iOS 17 iPadOS 17 macOS 14 | La version d’assemblage 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 de la mise à jour de sécurité urgente de l’appareil (le cas échéant). | |||||||||
SUPPLEMENTAL_OS_VERSION_EXTRA | iOS 17 iPadOS 17 macOS 14 | La version supplémentaire de la mise à jour de sécurité urgente de l’appareil (le cas échéant). | |||||||||
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 du système d’exploitation disponibles dans le service Apple Software Lookup Service. |
En fonction des informations fournies, le service de gestion des appareils peut décider d’obliger l’appareil à se mettre à jour.
Si un service de gestion des appareils choisit de ne pas appliquer une mise à jour logicielle, il renvoie simplement le profil d’inscription en réponse à la requête
HTTP POST
, comme il le fait pour autoriser la poursuite de l’inscription.Si le service de gestion des appareils choisit d’imposer 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 surapplication/json
ouapplication/xml
, respectivement).
Après réception de cette réponse d’erreur, l’appareil tente de se mettre à jour vers la version indiquée. Si la mise à jour réussit, l’appareil redémarre et l’utilisateur doit à nouveau utiliser Assistant réglages. La prochaine requête MachineInfo POST
de l’appareil vers le service de gestion des appareils affichera la version mise à jour du système d’exploitation, et le service pourra alors procéder à l’inscription. Si la mise à jour échoue, l’utilisateur voit un message dʼerreur et la sous-fenêtre « Gestion à distance » s’affiche à nouveau dans Assistant réglages.
Le schéma response
est défini dans le tableau ci-dessous.
Clé | Type | Requis | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Chaîne | Oui | Doit être défini sur | ||||||||
| Chaîne | Non | La description de l’erreur. Utilisé uniquement à des fins de journalisation. | ||||||||
| Chaîne | Non | La description de l’erreur adaptée pour être montrée à l’utilisateur. | ||||||||
| Dictionnaire | Oui | Données supplémentaires précisant la mise à jour logicielle. |
Le schéma de dictionnaire details
est défini ici.
Clé | Type | Requis | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Chaîne | Oui | La version du système d’exploitation vers laquelle l’appareil doit se mettre à jour. | ||||||||
| Chaîne | Non | La version d’assemblage vers laquelle l’appareil doit se mettre à jour. | ||||||||
| Dictionnaire | Non | L’appareil s’inscrit au programme bêta, ce qui permet l’application de mises à jour logicielles vers des versions du système d’exploitation du programme bêta. L’appareil reste dans le programme bêta après la fin de la mise à jour logicielle appliquée. |
Si vous ne spécifiez que OSVersion
, un appareil télécharge et installe automatiquement toute mise à jour de sécurité urgente disponible pour cette version. Si une version spécifique supplémentaire ou d’assemblage est requise, un service de gestion des appareils peut également préciser, de manière facultative, la clé BuildVersion
. Par exemple, pour exiger d’un appareil qu’il exécute iOS 16.5.1(a) avant son inscription, même si iOS 16.5.1(c) est déjà disponible, un service de gestion des appareils doit définir OSVersion
sur iOS 16.5.1
et BuildVersion
sur 20F770750b
.
Important : Avant macOS 15, seules les versions provenant des listes PublicAssetSets
et PublicRapidSecurityResponses
pouvaient être indiquées. Sous macOS 15, les ressources de AssetSets
peuvent également être utilisées.
Réglages de la gestion des appareils pour les mises à jour logicielles
La déclaration com.apple.configuration.softwareupdate.settings
(disponible sous iOS 18, iPadOS 18, macOS 15 et tvOS 18.4 ou versions ultérieures) se compose de dictionnaires qui peuvent être utilisés pour configurer différents aspects du comportement de mise à jour logicielle.
Après qu’un service de gestion des appareils a distribué différentes clés dans plusieurs déclarations, un appareil fusionne les réglages de toutes les déclarations actives de réglages de mises à jour logicielles. Si plusieurs déclarations configurent la même clé, le comportement de la fusion dépend de la clé individuelle et est indiqué dans les tableaux ci-dessous.
Configurer les mises à jour logicielles automatiques avec la gestion des appareils
La déclaration com.apple.configuration.softwareupdate.settings
offre un dictionnaire pour définir le comportement de mise à jour logicielle automatique sur les iPhone, iPad, Apple TV et Mac supervisés. Pour plus d’informations, consultez la section Clés du dictionnaire AutomaticActions.
Comment un service de gestion des appareils gère les mises à jour de sécurité rapides
Une mise à jour de sécurité urgente s’applique toujours à la dernière mise à jour d’un système d’exploitation, qui devient la version de base de la mise à jour de sécurité urgente. Par exemple, si un iPhone a la version iOS 17.2 du système d’exploitation installée, alors il applique la mise à jour supplémentaire 17.2 (a), si celle-ci est disponible. Sous iOS 18, iPadOS 18 et macOS 15, des mises à jour combinées ont été mises à disposition. Elles permettent à une mise à jour logicielle d’inclure toute mise à jour de sécurité urgente disponible.
Avant iOS 18, iPadOS 18 et macOS 15, il était possible qu’un service de gestion des appareils doive déclencher deux mises à jour logicielles pour s’assurer qu’une version supplémentaire spécifique soit présente. D’abord, il doit mettre à jour l’appareil vers la version de base de la mise à jour supplémentaire, si l’appareil n’utilise pas déjà cette version de base (par exemple, iOS 17.1 vers iOS 17.2). Ensuite, il doit mettre à jour la version de base vers la version supplémentaire (par exemple, iOS 17.2 vers iOS 17.2 (a)).
Avec iOS 18, iPadOS 18 et macOS 15, un service de gestion des appareils peut spécifier :
soit la version du système d’exploitation (qui installe automatiquement les mises à jour de sécurité urgentes) ;
soit la version d’assemblage supplémentaire (qui fait en sorte que l’appareil effectue une mise à jour nécessaire vers la version de base automatiquement dans le cadre du processus).
Ces deux approches s’appliquent à la configuration d’application des mises à jour logicielles, et à la version minimale appliquée pendant l’inscription automatisée d’appareils.
La déclaration com.apple.configuration.softwareupdate.settings
peut également être utilisée pour configurer le comportement de mise à jour de sécurité urgente sur les iPhone, iPad et Mac supervisés. Pour plus d’informations, consultez la section Clés du dictionnaire RapidSecurityResponse pour iOS, iPadOS et macOS.
Reporter une mise à jour logicielle avec la gestion des appareils
Le report d’une mise à niveau ou à jour de logiciels de 1 à 90 jours se fait à l’aide de la déclaration com.apple.configuration.softwareupdate.settings
sur les iPhone, iPad et Mac supervisés.
Un report configuré définit le nombre de jours qui s’écoulent avant qu’une organisation ne propose une version aux utilisateurs après sa mise à disposition publique. Indépendamment d’un report configuré, un service de gestion des appareils peut toujours appliquer des mises à jour, mises à niveau ou mises à jour de sécurité urgentes spécifiques sur des appareils gérés. Pour en savoir plus, consultez les rubriques Clés des dictionnaires Deferrals pour iOS, iPadOS et tvOS et Clés du dictionnaire Deferrals pour macOS.
Remarque : le report de mises à jour logicielles reporte également toute mise à jour de sécurité urgente qui dépend de cette version.
Appliquer des mises à jour logicielles avec la gestion des appareils
Pour appliquer une mise à jour logicielle avant une certaine heure sur des appareils inscrits à l’aide de l’inscription d’appareils ou de l’inscription automatisée d’appareils, 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 indique une version de système d’exploitation ou d’assemblage qui est identique ou antérieur à la version actuelle de l’appareil, l’appareil renvoie une erreur dans le rapport d’état.
Si plusieurs configurations sont présentes avec une version de système d’exploitation ou d’assemblage plus récente que la version actuelle de l’appareil, la configuration dont la date/heure cible est la plus ancienne est traitée en premier, et les autres restent dans la file d’attente. Lorsque l’appareil se met à jour vers une nouvelle version, l’ensemble de configurations est traité à nouveau pour déterminer la suivante à traiter. Dans le cadre de ce processus, l’appareil ignore toutes les configurations existantes qui indiquent une version antérieure ou identique à la version actuelle.
Le système d’exploitation installe automatiquement toutes les mises à jour de sécurité urgentes disponibles si un service de gestion des appareils définit uniquement TargetOSVersion
. Pour cibler une mise à jour de sécurité urgente ou une version spécifique, un service de gestion des appareils peut utiliser la clé TargetBuildVersion
en plus de préciser l’assemblage, y compris l’identifiant de version supplémentaire.
Pour en savoir plus, consultez la rubrique Clés du dictionnaire d’application des mises à jour logicielles.
Notifications
La clé Notifications modifie le comportement de notification par défaut pour afficher une notification seulement 1 heure avant l’heure de mise en application et le décompte de redémarrage. Pour plus d’informations, consultez la section Clé Notifications.
Utilisation du jeton d’amorçage pour les ordinateurs Mac dotés d’une puce Apple
Afin d’autoriser une mise à jour logicielle appliquée sur un ordinateur Mac supervisé doté d’une puce Apple, un service de gestion des appareils peut demander un jeton d’amorçage et l’envoyer à lʼautorité de séquestre. Cela permet une expérience de mise à jour logicielle totalement fluide et évite le besoin d’interaction de l’utilisateur dans le cadre du processus. Si nécessaire, l’appareil utilise GetBootstrapTokenRequest
pour récupérer un jeton d’amorçage auprès du service de gestion des appareils.
Dans la première étape, 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 un BootstrapTokenRequiredForSoftwareUpdate
défini sur 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 d’appareil. Pour en savoir plus, consultez la rubrique Profil de la gestion des appareils sur le site web Apple Developer.
Lorsque l’appareil reçoit le jeton d’amorçage, il crée un jeton d’amorçage à la prochaine connexion d’un utilisateur disposant d’un jeton sécurisé. Il communique ensuite avec le point d’entrée de vérification du service de gestion des appareils et envoie le jeton à l’autorité de séquestre à l’aide de SetBootstrapTokenRequest
. Pour en savoir plus, consultez la rubrique Set Bootstrap Token (en anglais) sur le site web Apple Developer.
Pour obtenir la spécification de schéma actuelle, consultez le répertoire GitHub de gestion des appareils Apple.