
-
Filtrez et acheminez le trafic réseau avec NetworkExtension
Découvrez les API du framework NetworkExtension qui donnent à votre app la puissance et la flexibilité nécessaires pour étendre les fonctionnalités réseau de base du système, telles que l'implémentation de filtres de contenu réseau, la création et la gestion de configurations VPN, et bien plus encore. Sur iOS, iPadOS et macOS 26, vous pouvez désormais créer des filtres de contenu avancés, capables de prendre des décisions relatives au trafic en utilisant l'URL complète, et non plus seulement le nom d'hôte, sans compromettre la confidentialité et la sécurité. Nous commencerons par une vue d'ensemble des principaux cas d'utilisation du framework NetworkExtension, y compris les relais réseau et les VPN. Ensuite, nous nous pencherons sur la nouvelle API de filtrage d'URL et ses composants clés, notamment Private Information Retrieval, Privacy Pass, et bien plus encore.
Chapitres
- 0:00 - Bienvenue
- 1:48 - Présentation de NetworkExtension
- 3:21 - Accéder aux ressources distantes
- 8:40 - Filtrer le contenu
- 10:54 - Créer des filtres d’URL
Ressources
- Filtering traffic by URL
- NEHotspotManager
- Network Extension
- NEURLFilterManager
- PIRService
- TN3120: Expected use cases for Network Extension packet tunnel providers
- TN3165: Packet Filter is not API
- verdict(for:)
Vidéos connexes
WWDC25
WWDC19
-
Rechercher dans cette vidéo…
Bonjour, je m’appelle Maria Alice Dos Santos et je fais partie de l’équipe Technologies Internet d’Apple. Je suis ici pour vous parler du framework Network Extension et de ses dernières avancées dans iOS et macOS 26.
Network Extension est un framework. Il fournit une suite complète d’API permettant de créer des apps qui étendent et personnalisent les capacités réseau sur les plateformes Apple.
Les apps Network Extension fonctionnent de manière transparente dans toute la pile réseau. Elles sont étroitement intégrées aux API de framework Network, CFNetwork, WebKit et Sockets, ainsi qu’aux composants système tels que le routage, la politique du trafic et tous les modes de gestion du système. Cela permet à Network Extension d’obtenir les fonctionnalités souhaitées de la manière la plus optimale en termes de performances et de sécurité réseau.
Network Extension est un framework performant qui vous permet de modifier la mise en réseau dans tout le système. Pour garantir le fonctionnement de votre app avec les autres apps et le système, il est essentiel de choisir l’API adaptée au type d’app à développer.
Durant cette séance, je présenterai le large éventail d’apps à créer à l’aide du framework Network Extension, et la façon de procéder pour créer des apps qui permettent d’accéder à des ressources distantes à l’aide de relais et de VPN. Nous verrons aussi comment créer des filtres de contenu à l’aide de Network Extension, et notamment une nouvelle façon de créer un filtre basé sur des URL dans iOS et macOS 26. Le framework Network Extension permet à vos apps de personnaliser et d’étendre les capacités de mise en réseau de diverses manières.
Sur iOS, les API de gestion et de points d’accès Wi-Fi permettent à vos apps de configurer des réglages Wi-Fi et d’interagir avec les points d’accès Wi-Fi. Cela inclut la nouvelle API d’extension NEHotspotHelper dans iOS 26.
Les apps iOS peuvent également utiliser l’API Local Push. Elle est destinée aux apps utilisées sur des réseaux sans accès au Apple Push Notification Service, comme les bateaux de croisière ou les hôpitaux. Vous pouvez ainsi gérer des fonctionnalités comme la messagerie textuelle et les appels VoIP sur un réseau restreint.
Vous pouvez créer une app de sécurité pour protéger le trafic DNS des attaques à l’aide une configuration DNS et une API de Proxy. Vous pouvez installer une configuration DNS et utiliser ces protocoles DNS chiffrés intégrés, ou le trafic DNS d’un proxy sur votre propre canal de sécurité.
Les apps Mac peuvent ainsi utiliser l’API Transparent Proxy pour rediriger le trafic d’un site web vers un service de sécurité sur le cloud à des fins d’authentification et d’autorisation. Vous pouvez aussi créer des apps qui permettent d’accéder à des ressources distantes en toute sécurité, ou qui protègent les personnes en filtrant de façon sécurisée et privée les contenus auxquels elles accèdent sur le réseau.
L’accès à distance sécurisé est une vaste catégorie qui couvre de nombreuses façons de se connecter en toute sécurité depuis l’extérieur aux systèmes internes, ou de protéger le trafic personnel sur des réseaux non sécurisés en tunnelisant le trafic d’un appareil vers un serveur distant. Avec Network Extension, deux approches principales sont à considérer. Relais réseau et VPN IP. Utilisez celui qui correspond le mieux à vos besoins en fonction du type de trafic à tunneliser. Envisagez des relais réseau plutôt que des VPN traditionnels pour tunneliser le trafic TCP ou UDP afin d’accéder à des apps spécifiques. Par exemple, les apps d’entreprise hébergées dans le cloud, notamment de messagerie ou de collaboration, conviennent parfaitement aux relais. Le protocole MASQUE permet un proxy sécurisé, optimisé pour les performances. Il peut facilement être intégré dans les environnements cloud modernes. Et comme la plate-forme intègre la prise en charge des relais, vous n’avez pas besoin de créer votre propre extension pour en tirer parti. Il vous suffit de configurer vos paramètres de relais et votre authentification à l’aide de l’API NERelayManager ou d’un profil de configuration du serveur MDM. Si vous souhaitez tunneliser le trafic IP, utilisez l’option VPN IP. Par exemple, les VPN basés sur IP peuvent être utilisés dans l’entreprise, pour étendre son réseau aux employés et leur donner ainsi un accès complet comme s’ils étaient physiquement au bureau. Cette solution est idéale pour les employés connus de longue date qui ont besoin d’un accès permanent ou complet au réseau de l’entreprise.
De même, les organisations très réglementées, avec des politiques de sécurité réseau strictes, peuvent avoir besoin de transférer tout le trafic de leurs appareils gérés via le réseau de l’entreprise.
Les gens peuvent aussi vouloir protéger leur trafic avec un VPN sur des réseaux non sécurisés pour préserver leur vie privée et leur anonymat.
Pour créer un tunnel VPN IP, utilisez l’API NEVPNManager pour tirer parti de l’un des protocoles intégrés, IKEv2 ou IPsec, ou utilisez NEPacketTunnelProvider pour implémenter vos propres protocoles de tunnelisation personnalisés. Lors de la création d’un VPN IP, votre implémentation indique au système quel le trafic tunneliser, avec des itinéraires spécifiques inclus et exclus. Sous macOS, la table de routage peut être modifiée en dehors de votre app par un administrateur ou un autre processus. Des itinéraires plus précis pourraient interférer avec vos itinéraires VPN. Network Extension permet à votre app d’appliquer ses itinéraires VPN pour s’assurer qu’ils sont prioritaires et respectés à tout moment. Network Extension facilite la gestion des exigences de routage de vos tunnels par votre app. Pour un VPN à tunnel fractionné, activez l’option enforceRoutes pour appliquer à la fois les itinéraires inclus et exclus. Pour un VPN à tunnel complet, activez l’option includeAllNetworks pour imposer l’acheminement de tout le trafic à travers votre tunnel. Lorsque cette option est activée, les excludedRoutes spécifiés n’ont aucun effet. Ces deux options gèrent des exceptions configurables pour permettre à un ensemble de trafic défini par le système de sortir du tunnel, afin que les services essentiels fonctionnent comme prévu lorsque votre VPN est en cours d’exécution. Par exemple, activez excludeLocalNetworks pour que les services de réseau local comme AirDrop et AirPlay contournent le tunnel. Ou activez d’autres exceptions pour permettre à des services comme les appels et la messagerie, Apple Push Notification Service et les communications entre appareils de contourner le tunnel. La plupart de ces exceptions sont activées par défaut, mais permettent une personnalisation selon vos besoins de sécurité.
Network Extension est l’API prise en charge pour créer une app VPN. Elle fonctionne en toute transparence avec d’autres composants réseau et système. Il est fortement déconseillé de construire une app VPN avec quoi que ce soit d’autre. Évitez d’utiliser Packet Filter ou de modifier directement la table de routage sur le Mac. Ceci n’est pas pris en charge et risque d’entrer en conflit avec les règles de filtrage et de routage du trafic installées par le système ou d’autres apps. Si votre app VPN n’utilise pas Network Extension aujourd’hui, vous devriez migrer dès que possible. Ainsi, votre app restera compatible avec le système et toutes les fonctionnalités clés attendues par vos clients, comme travailler en harmonie avec des fonctionnalités telles que AirDrop, Mac Virtual Display, Xcode, ainsi que des fonctionnalités de continuité comme Sidecar. Utilisez NEPacketTunnelProvider uniquement pour tunneliser le trafic IP. Il est déconseillé de l’utiliser pour atteindre d’autres objectifs. NEPacketTunnelProvider fonctionne au niveau de la couche IP et ne reçoit pas les métadonnées du flux ou de l’app nécessaires pour faire d’autres choses, comme la création de connexions proxy pour les requêtes DNS ou le filtrage de contenu. Si votre objectif est de filtrer du contenu, utilisez l’API Content Filter, dont je parlerai ensuite. L’API Content Filter vous permet d’analyser le trafic sur l’appareil à surveiller ou de prendre des décisions de filtrage à mesure que le trafic circule dans la pile réseau. Un cas d’utilisation courant est un pare-feu personnel, qui examine et bloque les flux de trafic jugés malveillants pour un appareil personnel. Ou une app de surveillance du trafic d’entreprise, pour les appareils gérés, afin de surveiller tout le trafic réseau entrant et sortant, pour les employés dans des environnements hautement sécurisés.
Créez une sous-classe d’un ou deux fournisseurs de filtres de contenu pour obtenir le trafic souhaité. NEFilterDataProvider vous fournit des flux TCP et UDP, ainsi que d’autres trafics de protocole IP, tels que ICMP.
Pour les apps Mac, une sous-classe de NEFilterPacketProvider recevra des paquets de couche 2.
Les fournisseurs de filtres ne peuvent pas modifier le trafic, mais fournissent simplement un verdict de filtre au système, soit pour autoriser, soit pour rejeter le flux. Le filtre de contenu de tout le système iOS n’est pris en charge que sur les appareils supervisés.
Les filtres de contenu utilisant NEFilterDataProvider et NEFilterPacketProvider sont parfaits si votre app a besoin de filtrer le contenu en fonction du flux de trafic ou via l’inspection de paquets. Mais il se peut que vous souhaitiez filtrer en fonction de métadonnées au niveau de l’app, comme l’URL. Avec un filtre de contenu traditionnel, votre app peut prendre des décisions de filtrage en fonction des infos de niveau de trafic, comme l’hôte et le port de cette requête HTTPS.
Certaines apps peuvent ne pas vouloir bloquer des sites entiers, mais plutôt filtrer des ressources spécifiques. Les requêtes HTTPS sont chiffrées, de sorte qu’un filtre de contenu traditionnel n’aurait pas accès aux détails nécessaires de la demande d’URL pour prendre une décision de filtrage précise, comme la ressource spécifique demandée ou les paramètres de requête dans l’URL. À partir d’iOS 26, vous pouvez créer un nouveau type de filtre, un filtre d’URL, qui prend des décisions de filtrage de contenu en fonction de l’URL complète. Le filtre d’URL de Network Extension vous permet de filtrer les requêtes HTTP et HTTPS à l’échelle du système, en se basant sur l’URL complète de la requête. Grâce à cette technologie, vous pouvez créer des apps qui bloquent des ressources spécifiques sur Internet. Par exemple, vous pouvez créer une app de contrôle parental pour protéger les enfants des sites web nocifs. Une app pour écoles peut utiliser un filtre pour empêcher les élèves d’accéder aux réseaux sociaux, aux jeux d’argent ou à d’autres contenus sensibles sur de nombreux sites Web. Ou les entreprises peuvent vouloir bloquer les contenus sans rapport avec le travail pour les employés.
Chez Apple, nous pensons que le respect de la vie privée est un droit humain fondamental. Le filtrage d’URL utilise une cryptographie de pointe pour vous permettre de créer des apps capables de prendre des décisions de filtrage efficaces en fonction de l’URL complète, sans compromettre la confidentialité. Les URL peuvent révéler des informations sensibles comme des identifiants uniques ou l’historique de navigation. Network Extension est conçu pour vous permettre de créer un filtre de contenu qui prend des décisions de filtrage précises en fonction de l’URL complète. Mais le contenu de l’URL n’est pas révélé à l’app et toutes les requêtes de base de données adressées aux serveurs back-end sont anonymisées pour protéger la confidentialité. Toute la chaîne des serveurs back-end, tant ceux d’Apple que les vôtres, n’aura accès à aucune information de contenu ou d’identité. Le filtrage d’URL est effectué avec votre ensemble de données d’URL, contenant les URL que vous souhaitez bloquer. Vous fournissez un préfiltre sur l’appareil et un serveur de base de données hors appareil pour les recherches d’URL. Le système effectue l’ensemble du processus de filtrage en votre nom avec votre ensemble de données. Votre app ne s’exécute pas dans le chemin de filtrage et n’a pas accès au trafic. Le système effectue un préfiltrage sur l’appareil pour améliorer les performances et peut lancer des recherches dans une base de données hors appareil pour les verdicts finaux. Tous les échanges de la base de données hors appareil sont protégés pour préserver la confidentialité du contenu et de l’identité. Avec une forte protection de la confidentialité, les filtres URL sont pris en charge à la fois sur les appareils gérés et non gérés. Avant d’entrer dans le détail de la fonctionnalité, intéressons-nous aux technologies qui en constituent les éléments de base. Le filtrage d’URL repose sur quatre technologies : filtres de Bloom, Private Information Retrieval, Privacy Pass et Oblivious HTTP Relay.
Je vais commencer par les filtres de Bloom.
Pour le filtrage d’URL, Network Extension utilisera le filtre de Bloom que vous créez avec votre ensemble de données URL contenant les URL que vous souhaitez bloquer. Un filtre de Bloom est créé à partir d’un ensemble de données prédéfini, en hachant chaque élément de l’ensemble à l’aide de plusieurs fonctions de hachage et en définissant les bits correspondants dans un tableau de bits de taille fixe. Une fois ce filtre de Bloom créé, vous pouvez l’utiliser pour tester si un élément fait partie de l’ensemble. Les filtres de Bloom ne produiront jamais de faux négatifs, mais peuvent produire de faux positifs.
Votre filtre de Bloom sera utilisé comme préfiltre pour une vérification rapide. Si la correspondance est négative, l’URL vérifiée ne fait définitivement pas partie de votre ensemble de données URL et sera immédiatement autorisée, sans autre vérification. Si la correspondance est positive, le résultat de la correspondance n’est pas définitif en raison d’éventuels faux positifs. Une vérification plus approfondie, telle qu’une recherche dans la base de données hors appareil, sera nécessaire pour parvenir à un verdict concluant.
L’utilisation d’un filtre de Bloom comme préfiltre réduit considérablement les recherches dans la base de données hors appareil, améliorant ainsi les performances.
La deuxième technologie clé est Private Information Retrieval. Private Information Retrieval, ou PIR, permet à un client d’effectuer une recherche dans une base de données sur un serveur hébergeant une base de données mot-clé-valeur sans révéler au serveur le mot-clé interrogé ni le résultat de la recherche. Il s’appuie sur le chiffrement homomorphe, qui autorise le calcul sur des données chiffrées, permettant ainsi au serveur PIR d’effectuer des recherches dans la base de données sur des requêtes chiffrées. Le serveur n’a donc pas accès à la requête ou au contenu de la réponse.
Voici comment cela fonctionne. Le client sur l’appareil génère la clé de chiffrement et la maintient privée sur l’appareil, ce qui chiffre toutes les requêtes envoyées au serveur. Le serveur utilise ensuite les requêtes chiffrées pour effectuer des recherches dans la base de données. Le serveur ne peut à aucun moment déchiffrer la requête pendant le processus. Le serveur renvoie des réponses chiffrées au client. Le client reçoit et déchiffre les réponses sur l’appareil. Seul le client, à l’exclusion même du serveur, peut déchiffrer la réponse du serveur. Le client utilise ensuite les résultats de la recherche. PIR est déjà une technologie utilisée pour de nombreuses fonctionnalités de protection de la vie privée, comme l’API Live Caller-ID Lookup. Pour le filtrage des URL, le serveur PIR effectue des recherches d’URL avec des requêtes chiffrées, ce qui permet au serveur de fournir des fonctionnalités de filtrage sans savoir quelles URL sont demandées et quels résultats sont renvoyés. La troisième technologie clé est Privacy Pass. PIR utilise Privacy Pass pour une authentification anonyme auprès de votre serveur. Cela vous permet de vous assurer que votre serveur ne répond qu’aux requêtes provenant d’appareils authentifiés et autorisés, sans pouvoir suivre l’historique des requêtes individuelles. Chaque appareil fait l’objet d’une attestation initiale pour obtenir un identifiant à long terme, qui peut ensuite être utilisé pour récupérer une collection de jetons signés à l’aveugle par chiffrement auprès de l’émetteur du Privacy Pass. L’appareil utilise ces jetons pour s’authentifier auprès de votre serveur sans révéler son identité. La dernière technologie clé est Oblivious HTTP Relay. Oblivious HTTP Relay est un proxy de protection de la vie privée qui masque l’adresse IP de l’origine, ce qui permet d’empêcher le serveur de suivre et de relier les requêtes au fil du temps. Il comporte trois entités : le client, le relais et la passerelle. Le client chiffre les demandes à l’aide de la clé publique de la passerelle. Il envoie ensuite la requête chiffrée au relais. Le relais supprime l’adresse IP du client des demandes entrantes et transmet les demandes à la passerelle. La passerelle déchiffre la demande et l’envoie à la ressource cible. Le relais n’apprend rien sur le contenu des requêtes, tandis que la passerelle et la ressource cible ne savent pas d’où vient le trafic.
J’ai présenté les quatre technologies. Je vais maintenant expliquer comment configurer la solution et comment fonctionne le filtrage d’URL.
En commençant par votre app de filtrage d’URL installée sur l’appareil, votre app fournira Network Extension, votre ensemble de données URL, en tant que filtre de Bloom et une base de données d’URL hébergée sur votre serveur PIR pour la recherche d’URL.
La configuration de votre serveur inclut également un émetteur Privacy Pass pour une authentification anonyme.
Votre app de filtrage d’URL indique à Network Extension où atteindre votre serveur PIR. Votre app implémente également une nouvelle extension d’app pour récupérer votre filtre de Bloom sur l’appareil.
Toutes les requêtes et réponses de la base de données sont échangées via le relais OHTTP hébergé par Apple. En d’autres termes, la passerelle OHTTP sera hébergée par vous pour transférer le trafic vers votre serveur.
Les requêtes utilisant OHTTP pour le filtrage d’URL passent par un relais OHTTP hébergé par Apple.
C’est une fonctionnalité que vous devez demander à l’aide du formulaire disponible dans la documentation. Apple validera la configuration de votre serveur pour OHTTP avant approbation. Cette opération doit être effectuée avant que vous puissiez distribuer votre app sur l’App Store, avec des builds TestFlight, ad hoc Developer ID ou d’entreprise. Les builds signées par Development sont exemptées de cette obligation, ce qui vous permet de commencer à créer et à tester votre app de filtrage sans attendre.
Une fois tous les éléments en place, je vais travailler sur un exemple pour montrer comment fonctionne le filtrage d’URL. Le filtrage d’URL sera effectué uniquement par le système. Votre app et votre extension d’app ne s’exécutent pas dans ce chemin. Le système examinera toutes les demandes d’URL, en comparant chaque URL à votre ensemble de données. Dans cet exemple, un navigateur initie une demande d’URL vers une ressource spécifique sur le site example.com. Le système vérifiera d’abord l’URL demandée par rapport au filtre de Bloom. Une correspondance négative du filtre de Bloom signifie à coup sûr que l’URL ne figure pas dans votre ensemble de données. L’URL sera autorisée et le navigateur procèdera à la requête HTTP.
Maintenant, le navigateur initie une autre requête d’URL pour une ressource différente sur example.com, qui obtient une correspondance positive du filtre de Bloom. En raison d’éventuels faux positifs, une correspondance positive signifie que l’URL peut se trouver dans votre ensemble de données. Dans ce cas, le système effectuera une recherche hors appareil auprès de votre serveur PIR en envoyant une requête chiffrée au serveur. Sur le serveur, la consultation de la base de données est effectuée à l’aide de la requête chiffrée reçue pour obtenir une correspondance. Le serveur n’a aucune connaissance de ce qui est interrogé ou de ce qui est renvoyé. Le serveur chiffre le résultat de la correspondance et répond.
Le système sur l’appareil déchiffre la réponse. Si le résultat renvoyé indique une correspondance, l’URL sera refusée et le navigateur fera échouer la requête.
Le filtrage d’URL de Network Extension s’applique à l’ensemble du système. Vérification de toutes les requêtes HTTP envoyées via les API réseau Apple, telles que WebKit et URLSession. Toutefois, pour les apps qui n’utilisent pas ces API de mise en réseau, leur trafic HTTP ne sera pas vérifié automatiquement par le système. Si vous créez un navigateur web ou toute autre app n’utilisant pas WebKit ou URLSession, adoptez l’API de participation pour vérifier toutes les requêtes d’URL avant de les envoyer. Appelez NEURLFilter verdictForURL avec l’URL de la demande et honorez le verdict renvoyé en faisant échouer la requête si l’URL est refusée. Maintenant que vous savez comment fonctionnent les filtres d’URL, je vais vous expliquer les étapes à suivre pour en créer un. Vous allez configurer votre serveur PIR et créer votre filtre de Bloom. Ensuite, créez votre app de filtre d’URL et votre extension d’app.
Je vais commencer par la configuration du serveur PIR. Pour commencer, utilisez l’exemple de code, qui fournit un exemple de serveur PIR. Dans le référentiel du projet figurent des exemples d’implémentations du serveur PIR, ainsi qu’un émetteur Privacy Pass. Pour personnaliser le serveur pour le filtrage d’URL, créez un cas d’utilisation avec un format de nom spécifique. Le nom du cas d’utilisation doit avoir l’ID de bundle de votre app comme préfixe, suivi de la chaîne url.filtering.
Le serveur PIR stocke les enregistrements de données dans un format clé-valeur. Pour le filtre d’URL Network Extension, formatez votre ensemble de données en conséquence, en définissant chaque enregistrement avec la chaîne d’URL comme clé et la valeur sur l’entier 1. La deuxième étape consiste à construire votre filtre de Bloom. Créez le filtre de Bloom avec votre ensemble de données URL à l’aide des fonctions et de la méthode de hachage spécifiées, documentées pour l’API NEURLFilterControlProvider. En fonction du degré de stabilité ou de dynamisme de votre ensemble de données, décidez de la manière dont votre filtre de Bloom sera transmis à l’appareil et de la fréquence de mise à jour. Pour les ensembles de données statiques qui changent rarement, incluez votre filtre de Bloom dans le bundle de votre app et laissez votre extension le récupérer à partir des ressources de votre bundle. Les mises à jour ultérieures du filtre de Bloom peuvent être incluses avec les mises à jour de votre app. Pour les jeux de données dynamiques qui changent fréquemment, configurez le système pour qu’il déclenche la récupération périodiquement. Lorsque le système déclenche la récupération, votre extension d’app peut télécharger le filtre de Bloom à partir de votre serveur. L’étape suivante consiste à créer votre app de filtrage d’URL. Ajoutez le nouveau droit Network Extension url-filter-provider à votre app, ce qui vous permet d’utiliser les API de filtrage d’URL. Utilisez l’API NEURLFilterManager dans votre app pour créer une configuration et gérer votre filtre URL. Importez le framework Network Extension et utilisez l’instance singleton partagée NEURLFilterManager. Vous pouvez configurer et activer votre filtre d’URL en quelques étapes. Tout d’abord, chargez le dernier instantané de la configuration du filtre d’URL à partir du disque, le cas échéant. Définissez ensuite l’attribut requis dans votre configuration pour indiquer au système comment atteindre votre serveur PIR et communiquer avec lui, et configurez d’autres paramètres facultatifs pour affiner votre filtre d’URL.
Enfin, activez et enregistrez votre configuration du filtre d’URL. Maintenant, votre filtre d’URL va prendre effet.
Le filtre d’URL prend en charge les déploiements grand public et d’entreprise. Pour le déploiement à grande échelle de votre app de filtrage d’URL, transférez le profil de configuration du filtrage d’URL aux appareils gérés via votre solution MDM. Les données utiles existantes du filtre de contenu prennent désormais en charge : Une nouvelle clé pour activer la fonctionnalité de filtrage d’URL, et un nouveau dictionnaire pour configurer les URLFilterParameters. La configuration du filtre d’URL MDM nécessite une supervision de l’appareil.
L’étape suivante consiste à créer votre extension d’app de filtrage d’URL. Pour créer votre extension d’app, utilisez le nouveau modèle d’extension d’app de filtrage d’URL dans Xcode. Mettez en œuvre le protocole NEURLFilterControlProvider en tant qu’extension d’app. Ce protocole permet à votre extension d’app de récupérer votre filtre de Bloom sur l’appareil. Importez le framework Network Extension et mettez en œuvre le protocole NEURLFilterControlProvider. Votre mise en œuvre de la fonction fetchPrefilter sera appelée par le système pour récupérer votre filtre de Bloom, en fonction de l’intervalle que vous avez configuré. Dans l’implémentation, récupérez le filtre de Bloom et renvoyez-le au système. Votre implémentation peut récupérer les données de votre filtre de Bloom à partir des ressources du bundle de votre app ou en les téléchargeant depuis votre serveur. Et avant de soumettre votre app à l’App Store ou à TestFlight, vérifiez que votre demande de fonctionnalité a été envoyée et approuvée, afin que les requêtes puissent être transmises à votre passerelle OHTTP. Network Extension est un framework très performant qui vous permet de tunneliser et de filtrer le trafic et bien plus encore. Examinez la façon dont vous utilisez Network Extension. Utilisez l’API appropriée qui vous aide à créer des apps qui offrent les fonctionnalités souhaitées et fonctionnent bien avec le système. Utilisez les relais réseau pour un accès à distance sécurisé pour le trafic TCP et UDP. Utilisez Network Extension pour créer vos solutions VPN. Créez de puissants filtres de contenu à l’aide de l’API de filtrage d’URL de Network Extension. Pour commencer, consultez les exemples de serveur et d’app. Merci de votre attention !
-
-
22:15 - Use participation API to check URLs before sending requests
// Use participation API to check URLs before sending requests import NetworkExtension func checkURL(url: URL) async throws -> Bool { var passRequest : Bool = true let verdict = await NEURLFilter.verdict(for: url) if verdict == .deny { passRequest = false } return passRequest }
-
25:01 - Configure and manage URL Filter
// Configure and manage URL Filter import NetworkExtension let manager = NEURLFilterManager.shared try await manager.loadFromPreferences() try manager.setConfiguration( pirServerURL: URL(string:"https://pir.example.com")!, pirPrivacyPassIssuerURL: URL(string:"https://privacypass.example.com")!, pirAuthenticationToken: "1234", controlProviderBundleIdentifier: "com.example.myURLFilter.extension") manager.prefilterFetchInterval = 86400 // fetch every 1 day manager.shouldFailClosed = false manager.localizedDescription = "Alice's URL Filter" manager.isEnabled = true try await manager.saveToPreferences()
-
26:41 - Implement NEURLFilterControlProvider protocol
// Implement NEURLFilterControlProvider protocol import NetworkExtension class URLFilterControlProvider: NEURLFilterControlProvider { func fetchPrefilter() async throws -> NEURLFilterPrefilter? { // Fetch your Bloom filters data from your app bundle or from your server let data = NEURLFilterPrefilter.PrefilterData.temporaryFilepath(fileURL) let result = NEURLFilterPrefilter(data: data, bitCount: numberOfBits, hashCount: numberOfHashes, murmurSeed: murmurSeed) return result } }
-
-
- 0:00 - Bienvenue
Découvrez Network Extension, un framework qui permet de créer des apps pour personnaliser la mise en réseau sur les plateformes Apple. Sous iOS et macOS 26, ce framework propose des VPN, des relais et des filtres de contenu, ainsi que de nouvelles fonctionnalités de filtrage basées sur les URL.
- 1:48 - Présentation de NetworkExtension
Le framework Network Extension permet aux apps iOS et macOS de personnaliser la mise en réseau. Cela inclut la gestion du Wi-Fi, l’interaction avec les points d’accès, les notifications push locales pour les réseaux restreints, la sécurité DNS, le filtrage de contenu et l’accès sécurisé aux ressources à distance.
- 3:21 - Accéder aux ressources distantes
L’accès à distance sécurisé permet aux utilisateurs de se connecter en toute sécurité aux systèmes internes à partir d’emplacements externes ou de protéger le trafic personnel sur des réseaux non sécurisés. Network Extension propose deux approches principales pour la tunnellisation du trafic : les relais réseau et les VPN basés sur l’IP. Les relais réseau, utilisant le protocole MASQUE, sont optimisés pour les performances et conviennent à la tunnellisation du trafic TCP ou UDP vers des apps spécifiques, telles que les apps d’entreprise hébergées dans le cloud. Vous pouvez configurer des relais à l’aide de 'NERelayManager' ou via un profil MDM. Les VPN basés sur l’IP sont davantage adaptés à l’extension des réseaux d’entreprise aux employés, à la mise en place d’un accès complet au réseau ou aux organisations hautement réglementées qui ont besoin d’envoyer tout le trafic via le réseau d’entreprise. Les particuliers peuvent également les utiliser pour protéger leur vie privée sur les réseaux non sécurisés. Vous pouvez créer des tunnels VPN basés sur l’IP à l’aide de l’API NEVPNManager, en tirant parti de protocoles intégrés comme IKEv2 ou IPsec, ou de protocoles personnalisés. Network Extension permet aux apps d’appliquer des routes VPN, en veillant à ce qu’elles soient prioritaires, et prend en charge les configurations VPN à tunnel fractionné et à tunnel complet avec des exceptions configurables. Network Extension est l’API recommandée et prise en charge pour la création d’apps VPN. L’utilisation d’autres méthodes est fortement déconseillée et peut entraîner des problèmes de compatibilité. Migrez votre app VPN vers Network Extension dès que possible.
- 8:40 - Filtrer le contenu
L’API de filtrage de contenu vous permet de créer des pare-feux personnels et des apps de surveillance du trafic d’entreprise. Elle permet aux apps d’inspecter les flux de trafic et de fournir des verdicts 'allow' ou 'drop'.
- 10:54 - Créer des filtres d’URL
Dans iOS 26, vous pouvez créer un filtre d’URL pour que les apps qui bloquent des ressources spécifiques sur Internet s’étendent à l’ensemble du système. Cette technologie est particulièrement utile pour les apps de contrôle parental, les écoles et les entreprises afin de restreindre l’accès à des contenus inappropriés ou non liés au travail. Le filtre d’URL utilise des techniques cryptographiques avancées pour protéger la confidentialité des utilisateurs. Le système utilise une combinaison de quatre technologies clés : filtres de Bloom, Private Information Retrieval (PIR), Privacy Pass et Oblivious HTTP Relay. Votre app ne s’exécute pas dans le chemin de filtrage et n’a pas accès au trafic d’URL. En outre, ni Apple ni votre serveur n’ont accès au trafic d’URL ni aux informations d’identité. Les filtres d’URL sont pris en charge sur les appareils gérés et non gérés. Les filtres d’URL utilisent un relais OHTTP hébergé par Apple, dont vous devez configurer l’application et l’utilisation pour les apps signées pour la distribution. Les builds signés par le développement sont exemptés de cette obligation. Si vous compilez une app qui n’utilise pas WebKit ou URLSession, transmettez chaque URL à l’API NEURLFilter et respectez le verdict renvoyé. Pour les déploiements d’entreprise, le profil de configuration du filtre d’URL peut être transféré via la Gestion des appareils mobiles sur des appareils gérés.