Accueil / Blog / Comment configur
ENGINEERING_BLOG · 2026.09.21

Comment configurer la liste blanche réseau de Xcode 27 CI ? Liste entreprise 2026

Le poste Mac accède à Internet, mais le pipeline Xcode 27 CI échoue pendant la résolution des dépendances, la signature ou l’envoi de l’archive.

La solution la plus rapide consiste à séparer les flux par fonction — source, dépendances, composants Xcode, signature, publication et gestion — puis à faire correspondre chaque règle à une exécution réelle, au lieu d’autoriser globalement les domaines Apple.

SECTION 01 Qui doit utiliser cette méthode ?

Ce guide s’adresse au responsable réseau ou sécurité qui doit justifier une liste blanche minimale pour les Mac CI, avec une preuve de test et une procédure de révision.

Il concerne aussi le responsable plateforme qui livre Xcode 27 sur Apple Silicon, ainsi que le responsable des achats et de l’infrastructure qui doit vérifier la qualité réseau d’un nœud Mac distant avant un pilote.

Chronologie recommandée : aujourd’hui, cartographiez les flux ; cette semaine, testez chaque domaine avec le compte du service CI ; avant la mise en production, séparez le nœud de signature et archivez les preuves. Si un accès n’est pas relié à une étape identifiée du pipeline, ne l’ajoutez pas automatiquement à la liste blanche.

Dernière mise à jour : 21 septembre 2026. Les éléments relatifs à Xcode 27 doivent être revérifiés dans les notes de version officielles de Xcode 27. Les hôtes et ports Apple doivent être contrôlés dans la documentation Apple destinée aux réseaux d’entreprise.

SECTION 02 Pourquoi un Mac connecté peut-il encore échouer en CI ?

Un test réussi depuis un terminal administrateur ne prouve pas que le pipeline est opérationnel. Le service CI peut utiliser un autre compte, un autre trousseau, une autre configuration de proxy, une résolution DNS différente ou un certificat interne que le système ne considère pas comme fiable.

La première erreur fréquente consiste à confondre « accès Internet » et « accès métier ». Une page web Apple accessible dans un navigateur ne démontre pas que le téléchargement d’un composant Xcode, la récupération d’un paquet Swift, la consultation de l’état d’une notarisation ou l’envoi vers App Store Connect fonctionnent dans le contexte du Runner.

La deuxième erreur est de regrouper des destinations qui n’ont pas le même niveau de confiance. Un dépôt public, un registre privé, un service de signature et un serveur de publication ne doivent pas nécessairement être accessibles depuis le même nœud.

La troisième erreur est de valider uniquement la connexion TCP. Une connexion établie peut être suivie d’un échec TLS, d’une authentification refusée, d’un jeton absent ou d’une redirection bloquée par le proxy. Le journal de validation doit donc conserver la destination, le compte utilisé, l’heure, le résultat et l’étape du pipeline.

Pourquoi le serveur de compilation ne peut-il pas atteindre Apple alors que le poste d’administration le peut ? Commencez par exécuter le contrôle avec le compte du service CI, sur le même nœud et à travers le même proxy. Comparez ensuite la résolution DNS, la chaîne de certificats, les variables d’environnement et les droits du trousseau. Un résultat obtenu depuis une session interactive ne remplace pas cette reproduction.

Attention : ne transformez pas *.apple.com en règle finale. Cette expression masque les différences entre téléchargement de composants, gestion des appareils, services développeur, publication et notarisation ; elle rend aussi l’audit des changements beaucoup plus difficile.

SECTION 03 Comment découper la liste blanche réseau de Xcode 27 CI ?

Traitez la chaîne comme six domaines de trafic indépendants. Cette séparation ne prétend pas déduire les domaines privés de votre entreprise : ceux-ci doivent venir de vos journaux, de vos équipes propriétaires et de vos contrats de service.

1. Code source et dépendances

Le premier groupe couvre les dépôts Git, Git LFS, les paquets Swift, CocoaPods et les registres privés. Il ne s’agit pas d’un ensemble Apple par défaut. Chaque dépôt doit être associé à son nom DNS, son port, son chemin logique et son mode d’authentification.

Pour un dépôt privé, vérifiez notamment :

  • l’identité du compte de service ;
  • la présence du certificat de l’autorité interne ;
  • la disponibilité du secret dans le contexte non interactif ;
  • la réussite d’un clonage propre ;
  • la capacité à récupérer les objets volumineux et les sous-modules ;
  • le comportement après expiration du cache.

Swift Package Manager et CocoaPods peuvent atteindre des sources différentes. Ne concluez donc pas qu’un dépôt principal fonctionnel suffit à autoriser toutes les dépendances. Pour chaque source, conservez une preuve de résolution, de téléchargement et de contrôle du fichier de verrouillage.

Si votre équipe utilise un Runner auto-hébergé, liez les tâches à des étiquettes et à des groupes correspondant à la zone réseau appropriée. La documentation GitHub sur les Runners auto-hébergés décrit le principe de ces nœuds ; la gestion des étiquettes de Runner permet ensuite d’éviter qu’un travail exigeant un accès privé soit envoyé vers un nœud sans sortie interne.

2. Composants Xcode et environnements de test

Le téléchargement initial de Xcode ne couvre pas nécessairement tous les composants utilisés par votre chaîne. Les simulateurs, plateformes supplémentaires et ressources associées doivent être traités comme des flux distincts. Apple documente le téléchargement et l’installation des composants Xcode dans sa documentation dédiée.

Votre règle doit donc préciser :

  • le nœud autorisé à télécharger ou mettre à jour un composant ;
  • le compte responsable de cette opération ;
  • le moment où le téléchargement est effectué ;
  • la source de cache éventuelle ;
  • le comportement si le cache est vide ou invalide ;
  • la preuve conservée après installation.

Pour Xcode 27, les conditions de système et de matériel ne doivent pas être déduites d’un billet de forum. Vérifiez la compatibilité annoncée dans les notes de version Apple, puis testez l’installation dans le contexte exact du Runner. La présence d’une puce Apple Silicon ne prouve ni la disponibilité du composant ni l’accès au service distant requis.

3. Services développeur, appareils et comptes Apple

Les opérations liées aux comptes développeur, à l’enregistrement d’appareils, aux profils de provisionnement et aux services de distribution doivent être séparées des flux de dépendances. La liste Apple des hôtes et ports pour les réseaux d’entreprise constitue la référence pour les destinations et ports Apple ; elle doit être recoupée avec vos journaux de connexion plutôt que copiée sans contrôle.

Pour chaque destination, inscrivez dans le registre :

  • le service Apple concerné ;
  • la finalité exacte dans le pipeline ;
  • le sens de la connexion ;
  • le proxy imposé ou l’exception documentée ;
  • l’identité qui utilise le service ;
  • le symptôme attendu en cas de blocage.

Un contrôle de disponibilité ne suffit pas pour les appareils physiques. Ajoutez une opération représentant réellement votre flux : préparation d’un environnement, installation d’une version de test ou exécution d’une tâche de validation. Le but est de démontrer que le service est utilisable avec le certificat, le profil et le compte prévus.

SECTION 04 Quels droits réserver au nœud de signature et de publication ?

La signature, l’archivage, l’envoi vers App Store Connect et la notarisation doivent être traités comme des domaines de confiance différents. Un nœud chargé de signer une version de production ne devrait pas exécuter indistinctement des branches non approuvées, télécharger des dépendances arbitraires et servir de poste de diagnostic général.

Pour App Store Connect, utilisez un mécanisme d’authentification correspondant au rôle requis. Apple décrit la création des clés API App Store Connect ; votre procédure interne doit associer chaque clé à un propriétaire, une durée de validité, un périmètre et une méthode de révocation. Ne placez pas une clé de publication dans un nœud qui accepte des tâches non contrôlées.

La notarisation doit également être vérifiée au-delà de l’envoi initial. Apple documente Notary API, notamment pour automatiser le dépôt et le suivi. Votre scénario doit couvrir la soumission, la consultation du statut, la récupération du journal et la validation de l’attachement du ticket. Une archive simplement acceptée par le service ne constitue pas une preuve complète de succès de la chaîne.

Quelles sorties faut-il ouvrir pour un nœud de publication signé ? Ouvrez uniquement les destinations nécessaires à l’opération de publication et de notarisation identifiée, puis refusez les flux de dépannage ou de dépendances qui ne sont pas indispensables à cette étape. Les ports autorisés doivent être confirmés dans la documentation Apple et dans les journaux de votre organisation ; le port TCP 443 est couramment utilisé pour les échanges HTTPS documentés par Apple, tandis qu’un accès SSH, lorsqu’il est nécessaire à l’administration, doit rester limité à votre réseau de gestion et être vérifié séparément dans la documentation de ports Apple【https://support.apple.com/en-gb/103229】.

Le nœud de compilation ordinaire peut disposer d’un périmètre plus large pour résoudre les dépendances et construire les artefacts. Le nœud de signature doit avoir un périmètre plus étroit, un compte distinct, un journal d’audit renforcé et une règle de déploiement séparée. Cette distinction réduit le risque qu’un secret de publication soit exposé par une tâche qui n’avait besoin que de compiler.

SECTION 05 La conception du proxy et du pare-feu face aux pannes

Un proxy explicite, un proxy transparent, une inspection TLS, une réécriture DNS ou une autorité de certification interne peuvent modifier le résultat d’une même URL. Le navigateur de l’administrateur peut faire confiance à l’autorité interne alors que le processus du Runner ne la connaît pas. Un service peut aussi refuser un certificat remplacé par l’inspection TLS, même si la connexion TCP est autorisée.

Validez chaque destination selon cette progression :

  1. résolution DNS depuis le nœud concerné ;
  2. établissement TCP vers le port autorisé ;
  3. négociation TLS et validation de la chaîne ;
  4. authentification et autorisation ;
  5. réponse métier attendue ;
  6. réussite de l’étape complète du pipeline.

Ne remplacez pas cette procédure par ping. Le protocole ICMP peut être filtré alors que l’application fonctionne, ou être autorisé alors que le service métier reste inaccessible.

Comment diagnostiquer un échec d’accès Apple dans une CI iOS ? Identifiez d’abord l’étape exacte : téléchargement, authentification, signature, envoi, notarisation ou retour de résultat. Ensuite, rejouez cette étape avec le compte de service et activez temporairement les journaux du proxy. Comparez le nom résolu, le certificat présenté, le code de réponse, l’identité et l’horodatage. Enfin, restaurez la politique normale et joignez la preuve au ticket de changement.

Pour chaque règle, nommez aussi un responsable de révision, une date de contrôle et une action de retour arrière. Cela devient essentiel si Apple modifie un hôte, si votre proxy change de comportement ou si une équipe déplace un registre privé.

SECTION 06 La méthode d’acceptation avant ouverture en production

Organisez le déploiement par jalons plutôt que par simple ajout de domaines.

Jalon de cartographie. Exportez les journaux d’une exécution complète, en distinguant une compilation de demande de fusion, une archive signée et une publication. Classez chaque requête comme source, dépendance, composant, Apple, publication, gestion ou flux non expliqué.

Jalon de réduction. Supprimez les destinations observées uniquement dans un outil interactif ou dans une tâche abandonnée. Remplacez les domaines génériques par des destinations documentées et des exceptions soumises à approbation.

Jalon de reproduction. Lancez les tests avec l’utilisateur du service CI, sur chaque catégorie de nœud. Une règle validée sur un nœud de test ne doit pas être considérée comme validée sur le nœud de signature.

Jalon de panne contrôlée. Bloquez temporairement une destination non critique et vérifiez que le journal identifie clairement le domaine de panne. Une règle difficile à diagnostiquer est une mauvaise candidate pour la production, même si elle laisse passer le scénario nominal.

Jalon de preuve. Archivez la règle, la demande de changement, la commande ou le pipeline de validation, les journaux, l’approbateur et la date de révision. Prévoyez aussi la procédure de retrait lorsqu’une destination devient inutile.

Voici les deux tableaux à intégrer dans votre dossier d’acceptation.

Type de nœud Flux à tester Périmètre conseillé Preuve minimale
Compilation ordinaire Code source, dépendances, composants nécessaires, résultat de build Sortie contrôlée vers les dépôts et services documentés Journal de résolution, compilation propre et résultat CI
Nœud de dépendances Dépôts privés, Git LFS, Swift Package, CocoaPods, registres internes Accès aux sources approuvées, avec proxy et identité de service Cache vide, téléchargement complet et contrôle du verrouillage
Nœud de signature Archivage, profils, certificats, publication autorisée Périmètre distinct, sans flux général de diagnostic Archive signée, journal d’autorisation et révocation testée
Nœud de secours Même fonction que le nœud remplacé, avec accès d’administration séparé Règles préparées mais activées après validation Bascule contrôlée, nouvelle exécution et preuve de retour
Couche de contrôle Question à consigner Résultat attendu Décision si échec
DNS Le nom se résout-il depuis le bon réseau ? Réponse cohérente avec le service approuvé Corriger la zone ou le proxy DNS
TCP Le port documenté accepte-t-il la connexion ? Connexion établie depuis le Runner Vérifier pare-feu, route et règle de sortie
TLS La chaîne et le nom correspondent-ils ? Certificat accepté par le processus CI Corriger l’autorité ou l’inspection TLS
Authentification Le compte possède-t-il le rôle nécessaire ? Jeton, clé ou certificat accepté Réduire ou corriger les droits
Requête métier L’action demandée fonctionne-t-elle ? Réponse utile pour l’étape CI Examiner l’API, le chemin et le service
Pipeline Le résultat revient-il jusqu’à l’orchestrateur ? Étape terminée et journal exploitable Vérifier le retour, le délai et le Runner

La checklist d’acceptation

  • [ ] Chaque requête observée est rattachée à une étape du pipeline.
  • [ ] Les hôtes Apple ont été comparés à la documentation Apple actuelle.
  • [ ] Les domaines privés proviennent d’un inventaire interne ou d’un journal d’exécution, et non d’une supposition.
  • [ ] Le test est exécuté avec le compte du service CI.
  • [ ] Le test couvre le DNS, TCP, TLS, l’authentification, la requête métier et le résultat de pipeline.
  • [ ] Les dépôts Git, Git LFS, Swift Package, CocoaPods et registres privés sont vérifiés séparément.
  • [ ] Le téléchargement d’un composant Xcode est testé lorsque le cache est vide.
  • [ ] Le nœud de signature possède une sortie et des secrets distincts du nœud de compilation ordinaire.
  • [ ] La publication App Store Connect est validée avec une clé au périmètre documenté.
  • [ ] La notarisation couvre le dépôt, le statut, le journal et l’attachement du ticket.
  • [ ] Le comportement du proxy et de l’inspection TLS est documenté.
  • [ ] Un scénario de perte de connectivité et de reprise est archivé.
  • [ ] Chaque règle possède un propriétaire, un approbateur, une date de révision et une procédure de retrait.
  • [ ] Le nœud de secours a été testé dans la même zone réseau que celle prévue pour la production.
  • [ ] La conclusion est classée : autorisé, correction limitée dans le temps, pilote isolé ou refus de mise en production.

SECTION 07 L’évaluation d’un Mac distant avant le déploiement

Un Mac distant peut convenir à un pilote d’équipe, à une capacité de compilation temporaire ou à un environnement audio, vidéo et design qui exige macOS sans achat immédiat de matériel. Mais la décision ne doit pas se limiter à la présence d’une adresse IP publique ou à l’accès VNC.

Avant de retenir une infrastructure distante, demandez une démonstration documentée de l’accès proxy, des dépendances privées, de l’isolement entre nœuds, du téléchargement des composants Xcode, de la signature, de la publication et de la reprise après perte de connexion. Vous pouvez également consulter la page d’aide de VPSNIX pour préparer les points techniques à vérifier, puis utiliser le guide de validation d’un Mac temporaire comme support de discussion interne.

L’achat d’un Mac dédié reste cohérent si votre équipe impose une charge stable, un accès physique à des appareils ou une conservation locale stricte des secrets. À l’inverse, un parc acheté immobilise du capital, demande une gestion du remplacement et complique l’ajout rapide d’un nœud pour une campagne de release. Une location de Mac auprès de VPSNIX peut être plus adaptée à un pilote ou à une capacité variable, à condition que le fournisseur démontre l’accès réseau et la reprise attendus ; consultez alors les informations de location Mac de VPSNIX, sans substituer la page commerciale aux preuves de votre matrice.

Votre décision finale devrait donc suivre cette règle : si les flux privés, la signature et la reprise ne sont pas vérifiables, isolez le pilote ou refusez la mise en production ; s’ils sont démontrés sur le nœud réellement utilisé, vous pouvez comparer le coût et la capacité avec un Mac acheté en interne. Le prix seul ne compense jamais une sortie réseau impossible à auditer.