Utiliser une solution MDM 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 à lʼappareil dʼappliquer des réglages de façon asynchrone et de signaler son état à la solution de gestion des appareils mobiles (MDM) sans devoir être interrogé en permanence. Elle permet dʼobtenir des performances et une extensibilité idéales, tout en offrant une approche moderne 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 manière, une solution MDM dispose toujours d’une vue à jour des appareils sans avoir à les interroger régulièrement.
Plutôt que d’envoyer une commande de mise à jour logicielle à un appareil pour qu’il initie une mise à jour, une solution MDM 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
Lorsque c’est possible, les solutions MDM doivent tirer profit des déclarations de mises à jour logicielles. 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 configurée à l’aide de la gestion déclarative d’appareils est en attente, certaines commandes MDM ne sont plus traitées par le client et renvoient des erreurs indiquant qu’une déclaration active est présente sur l’appareil, comme le montre le tableau suivant.
Commande MDM | Résultat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Limité : Sous macOS, 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 à une solution MDM d’interroger les versions dès qu’elles sont publiées et de calculer l’applicabilité pour chaque modèle de 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 solutions MDM, qui se chargent ensuite de les envoyer aux appareils supervisés.
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
xrOS
(qui correspond à 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"
]
},
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 cette liste de versions à lʼadministrateur MDM en les présentant comme candidats potentiels pour la mise à jour du système dʼexploitation.
Envoi d’un rapport d’état à la solution MDM
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
à la solution MDM 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, la solution MDM 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 solutions MDM 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 a été déclenchée. Ce dictionnaire peut être utilisé pour déterminer si un utilisateur a initié la mise à jour lui-même, si la mise à jour a eu lieu automatiquement ou si elle a été appliquée par une déclaration d’application de mise à jour logicielle.
Demande d’une version minimale spécifique du logiciel pendant l’inscription à la solution MDM
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 à la solution MDM 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é | Version du système d’exploitation la plus ancienne à être prise 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, la solution MDM peut décider de forcer ou non la mise à jour de l’appareil.
Si une solution MDM choisit de ne pas forcer une mise à jour logicielle, elle renvoie simplement un profil d’inscription MDM en réponse à la requête HTTP POST, comme elle le ferait normalement pour autoriser une inscription à la solution MDM.
Si la solution MDM choisit de forcer une mise à jour logicielle, alors elle 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 la réponse HTTP Content-Type doit être défini sur
application/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 requête POST MachineInfo
suivante de l’appareil à la solution MDM affiche la version du système d’exploitation mise à jour et la solution MDM peut alors procéder à l’inscription à la solution MDM. Si la mise à jour échoue, l’utilisateur voit une 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 seule la clé OSVersion
est précisée, un appareil télécharge et installe automatiquement toute mise à jour de sécurité urgente disponible pour cette version. Dans le cas où une version spécifique supplémentaire ou d’assemblage est requise, une solution MDM 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, une solution MDM 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 MDM pour les mises à jour logicielles
La déclaration com.apple.configuration.softwareupdate.settings
(disponible sous iOS 18, iPadOS 18 et macOS 15) se compose de dictionnaires qui peuvent être utilisés pour configurer différents aspects du comportement de mise à jour logicielle.
Après qu’une solution MDM 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. Dans le cas où la même clé est configurée par plusieurs déclarations, le comportement de fusion dépend de la clé individuelle et est indiqué dans les tableaux ci-dessous.
Configuration des mises à jour logicielles automatiques avec la solution MDM
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 et Mac supervisés. Pour plus d’informations, consultez la section Clés du dictionnaire AutomaticActions.
Gestion des mises à jour de sécurité urgentes par la solution MDM
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’une solution MDM doive déclencher deux mises à jour logicielles pour s’assurer qu’une version supplémentaire spécifique soit présente : d’abord, elle devait mettre à jour l’appareil vers la version de base de la mise à jour supplémentaire, si l’appareil n’utilisait pas déjà cette version de base (par exemple, iOS 17.1 vers iOS 17.2) ; puis elle devait mettre à jour la version de base vers la version supplémentaire (par exemple, iOS 17.2 vers iOS 17.2 (a)).
Sous iOS 18, iPadOS 18 et macOS 15, une solution MDM peut indiquer :
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 une solution MDM
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 pendant combien de jours une version n’est pas proposée aux utilisateurs après sa mise à disposition publique. Indépendamment d’un report configuré, une solution MDM 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 et iPadOS 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.
Application des mises à jour de logiciels avec une solution MDM
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 solutions MDM peuvent appliquer la déclaration com.apple.configuration.softwareupdate.enforcement.specific
.
Si une configuration indique une version de système d’exploitation ou d’assemblage qui est identique ou antérieur à la version actuelle de l’appareil, alors la configuration est ignorée.
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.
Toute mise à jour de sécurité urgente disponible est installée automatiquement si une solution MDM définit uniquement TargetOSVersion
. Pour cibler une mise à jour de sécurité urgente ou une version spécifique, une solution MDM 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 section 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, une solution MDM 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 de la solution MDM.
Dans la première étape, la solution MDM 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 vrai, l’appareil peut utiliser un jeton d’amorçage pour autoriser une mise à jour logicielle.
Pour obtenir la création d’un jeton d’amorçage, la solution MDM doit ajouter com.apple.mdm.bootstraptoken
au tableau ServerCapabilities
dans le profil MDM. Pour en savoir plus, consultez la rubrique MDM payload (en anglais) 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 la solution MDM 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.