Utilisation de la GAM 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. L’appareil peut ainsi appliquer des réglages de manière asynchrone et renvoyer des rapports d’état à la solution de gestion des appareils mobiles (GAM) sans qu’il soit nécessaire de l’interroger constamment. C’est une solution idéale en matière de rendement et d’extensibilité et permet une approche moderne de la gestion des mises à jour logicielles. La gestion déclarative des appareils permet d’obtenir des rapports d’état dynamiques à mesure que les valeurs et les configurations changent. De cette manière, une solution GAM 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, une solution GAM 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 solutions GAM 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 en attente est configurée à l’aide de la gestion déclarative des appareils, certaines commandes GAM ne sont plus traitées par le client. Elles renvoient des erreurs signalant l’existence d’une déclaration active sur l’appareil, comme le montre le tableau suivant :
Commande de GAM | Résultat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| Limité : Dans macOS, 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 à une solution de GAM de demander les versions dès qu’elles sont publiées 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 : Sous-ensemble de PublicAssetSets, cette liste contient toutes les versions disponibles pour les solutions de GAM à distribuer aux appareils supervisés.
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
xrOS
(qui représente 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"
]
},
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 cette liste de versions à l’administrateur de GAM pour lui indiquer les mises à jour potentielles des systèmes d’exploitation.
Envoi d’un rapport d’état à la solution GAM
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
à la solution GAM 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, la solution GAM 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 solutions GAM 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 le déclenchement d’une mise à jour. Ce dictionnaire peut être utilisé pour déterminer si la mise à jour a été initiée par l’utilisateur, effectuée automatiquement ou 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 GAM
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 à la solution GAM 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é | Système d’exploitation minimum pris 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, la solution GAM peut décider de forcer ou non l’appareil à se mettre à jour.
Si une solution GAM choisit de ne pas imposer de mise à jour logicielle, elle renvoie simplement le profil d’inscription GAM en réponse à la requête HTTP POST, comme elle le ferait normalement pour permettre à une inscription GAM de se dérouler.
Si la solution GAM choisit de forcer une mise à jour logicielle, 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 réponse HTTP Content-Type doit être défini sur respectivement
application/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 à la solution GAM indique la version actualisée du système d’exploitation, et la solution GAM peut alors procéder à l’inscription GAM. Si la mise à jour échoue, une erreur est affichée à 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 seule la OSVersion
est indiquée, 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, une solution GAM 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) une solution GAM 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 GAM pour les mises à jour logicielles
La déclaration com.apple.configuration.softwareupdate.settings
(disponible dans iOS 18, iPadOS 18, et macOS 15) 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 une solution GAM, un appareil fusionne les réglages de toutes les mises à jour logicielles actives et de toutes les déclarations. Si la même clé est configurée par plusieurs déclarations, le comportement de la fusion dépend de la clé individuelle et est décrit dans les tableaux ci-dessous.
Configuration des mises à jour logicielles automatiques avec GAM
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, et Mac. Pour en savoir plus, consultez la rubrique Clés du dictionnaire AutomaticActions.
Traitement GAM des améliorations rapides à la sécurité
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, une solution GAM peut avoir à déclencher deux mises à jour logicielles pour s’assurer qu’une version supplémentaire particulière est présente : tout d’abord, elle doit mettre à jour l’appareil à la version de base de la mise à jour complémentaire, si l’appareil n’est pas déjà à cette version de base (par exemple, iOS 17.1 à iOS 17.2); elle doit alors mettre à jour la version de base vers la version complémentaire (par exemple, iOS 17.2 à iOS 17.2 (a)).
Sous iOS 18, iPadOS 18, et macOS 15, une solution GAM 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 GAM
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étermine le nombre de jours pendant lesquels une version n’est pas proposée aux utilisateurs après avoir été mise à la disposition du public. Quelle que soit la configuration du report, une solution GAM 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 Clés de dictionnaire de reports pour iOS et iPadOS 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.
Application des mises à jour logicielles avec GAM
Pour imposer une mise à jour logicielle avant une certaine date aux appareils inscrits à l’aide de Device Enrollment ou Automated Device Enrollment, les solutions GAM peuvent appliquer la déclaration com.apple.configuration.softwareupdate.enforcement.specific
.
Si une configuration indique un système d’exploitation ou une version identique ou antérieure à la version actuelle de l’appareil, la configuration est ignorée.
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.
Toute amélioration rapide à la sécurité disponible est installée automatiquement si une solution GAM ne définit que le TargetOSVersion
. Pour cibler une version particulière ou une amélioration rapide à la sécurité, une solution GAM peut utiliser la clé TargetBuildVersion
en plus de préciser la version, y compris l’identifiant de version supplé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, une solution GAM 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 de la solution GAM.
Tout d’abord, la solution GAM 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, la solution GAM doit ajouter com.apple.mdm.bootstraptoken
au tableau ServerCapabilities
dans le profil GAM. Pour en savoir plus, consultez la page consacrée à l’entité GAM sur le site Web Apple Developer.
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 de la solution GAM 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.