Flux d'appareils IoT Hub (préversion)

Les flux d’appareil Azure IoT Hub facilitent la création de tunnels TCP bidirectionnels sécurisés pour différents scénarios de communication cloud-à-appareil. Un flux d’appareil est régi par un *point de terminaison de streaming IoT Hub qui fait office de proxy entre votre appareil et les points terminaison de service. Cette configuration, représentée dans le diagramme, est particulièrement utile quand des appareils se trouvent derrière un pare-feu réseau ou à l’intérieur d’un réseau privé. Dès lors, les flux d’appareils IoT Hub permettent aux clients d'accéder aux appareils IoT de manière sécurisée via un pare-feu, sans devoir trop ouvrir les ports de pare-feu de réseau entrants ou sortants.

« Vue d’ensemble des flux d’appareils IoT Hub »

Grâce aux flux d’appareils IoT Hub, les appareils restent sécurisés et les connexions TCP sortantes vers le point de terminaison de streaming IoT Hub interviennent exclusivement sur le port 443. Une fois qu’un flux est établi, les applications côté service et côté appareil ont chacune un accès programmatique à un objet client WebSocket afin d’échanger entre elles des octets bruts. Ce tunnel offre des garanties de fiabilité à égalité avec TCP.

Avantages

Les flux d'appareils IoT Hub offrent les avantages suivants :

  • Connectivité sécurisée via un pare-feu : Les appareils IoT sont accessibles depuis les points de terminaison de service, sans ouverture du port du pare-feu entrant au niveau de l'appareil ou du réseau (seule une connectivité sortante vers IoT Hub est requise sur le port 443).

  • Authentication (Authentification) : Le côté appareil et le côté service du tunnel doivent s'authentifier auprès de IoT Hub à l'aide des informations d'identification correspondantes.

  • Chiffrement : Par défaut, les flux d'appareils IoT Hub utilisent des connexions TSL. Ce facteur garantit que le trafic est toujours chiffré, indépendamment du fait que l’application utilise ou non le chiffrement.

  • Simplicité de la connectivité : Dans de nombreux cas, grâce aux flux d’appareils, la connectivité aux appareils IoT ne requiert plus de configuration complexe des réseaux privés virtuels.

  • Compatibilité avec la pile TCP/IP : Les flux d'appareils IoT Hub peuvent prendre en charge le trafic des applications TCP/IP. Cette approche signifie qu’un large éventail de protocoles propriétaires et basés sur des standards peuvent utiliser cette fonctionnalité.

  • Facilité d'utilisation dans des configurations de réseau privé : Le service peut communiquer avec un appareil en référençant son ID d’appareil plutôt que son adresse IP. Ceci est utile quand un appareil est situé à l’intérieur d’un réseau privé et a une adresse IP privée, ou que son adresse IP est attribuée dynamiquement et n’est pas connue côté service.

Workflows des flux d’appareils

Un flux d'appareil est initié lorsque le service demande à se connecter à un appareil en fournissant son ID d'appareil. Ce workflow s’adapte particulièrement au modèle de communication client/serveur, dont SSH et RDP, quand un utilisateur envisage de se connecter à distance au serveur SSH ou RDP en cours d’exécution sur l’appareil à l’aide d’un programme client SSH ou RDP.

Le processus de création de flux d'appareils implique une négociation entre l’appareil, le service, ainsi que le point de terminaison principal et le point de terminaison de streaming du hub IoT. Le point de terminaison principal du hub IoT orchestre la création d’un flux d'appareil et le point de terminaison de streaming gère le trafic entre le service et l'appareil.

Flux de création de flux d'appareils

La création programmatique d’un flux d’appareil en utilisant le Kit de développement logiciel (SDK) implique les étapes suivantes, qui sont également représentées dans la figure :

« Processus de liaison de flux d’appareils »

  1. L’application de l'appareil enregistre à l'avance un rappel pour être informé chaque fois qu'un nouveau flux d'appareil est initié vers l'appareil. Cette étape intervient généralement lorsque l'appareil démarre et se connecte à IoT Hub.

  2. Si besoin, le programme côté service initie un flux d'appareil en fournissant l'ID d'appareil (pas l’adresse IP).

  3. IoT Hub informe le programme côté client en appelant le rappel enregistré à l’étape 1. L’appareil peut accepter ou rejeter la requête d’initiation de flux. Cette logique peut être spécifique à votre scénario d’application. Si l’appareil rejette la requête de flux, IoT Hub en informe le service ; sinon, les étapes ci-dessous sont effectuées.

  4. L’appareil crée une connexion TCP sortante sécurisée vers le point de terminaison de streaming sur le port 443, et met à niveau la connexion vers un WebSocket. L’URL du point de terminaison de streaming et les informations d’identification à utiliser à des fins d’authentification sont fournies à l’appareil par IoT Hub dans le cadre de la requête envoyée à l’étape 3.

  5. Si l’appareil accepte le flux, le service en est informé et crée son propre client WebSocket vers le point de terminaison de streaming. De même, il reçoit les informations d’authentification et l'URL du point de terminaison de streaming de IoT Hub.

Dans le processus de liaison ci-dessus :

  • Le processus de liaison doit se terminer sous 60 secondes (étapes 2 à 5), à défaut de quoi la liaison échoue et le service en est informé.

  • Une fois le flux de création ci-dessus terminé, le point de terminaison de streaming fait office de proxy et transfert le trafic entre le service et l’appareil via leurs WebSockets respectifs.

  • L’appareil et le service doivent disposer d’une connectivité sortante vers le point de terminaison principal d’IoT Hub et vers le point de terminaison de streaming sur le port 443. L’URL de ces points de terminaison est disponible sous l’onglet Vue d’ensemble du portail IoT Hub.

  • Un flux établi offre des garanties de fiabilité à égalité avec TCP.

  • Toutes les connexions vers IoT Hub et le point de terminaison de streaming utilisent TLS et sont chiffrées.

Flux de fin

Un flux établi prend fin lorsqu'une des connexions TCP vers la passerelle est déconnectée (par le service ou l'appareil). Cette action peut être effectuée volontairement en fermant le WebSocket sur les programmes de l’appareil ou du service, ou involontairement en cas d’expiration du délai de connectivité réseau ou d’échec du processus. Quand une connexion de l’appareil ou du service vers le point de terminaison de streaming prend fin, l’autre connexion TCP est également interrompue (de manière forcée), et l’appareil et le service doivent si nécessaire recréer le flux.

Connectivité requise

Les côtés appareil et service d'un flux d'appareil doivent tous deux pouvoir établir des connexions TLS à IoT Hub et son point de terminaison de streaming. Cette situation nécessite une connectivité sortante sur le port 443 vers ces points de terminaison. Le nom d’hôte associé à ces points de terminaison se trouve sous l’onglet Vue d’ensemble d’IoT Hub, comme illustré dans la figure :

« Points de terminaison des flux d'appareils »

Vous pouvez aussi récupérer les informations relatives aux points de terminaison en utilisant Azure CLI sous la section des propriétés du hub, dans les clés property.hostname et property.deviceStreams.

az iot hub devicestream show --name <YourIoTHubName>

La sortie est un objet JSON de tous les points de terminaison auxquels l’appareil et le service de votre hub doivent se connecter afin d’établir un flux d’appareil.

{
  "streamingEndpoints": [
    "https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
  ]
}

Remarque

Assurez-vous d’avoir installé Azure CLI version 2.0.57 ou ultérieure. Vous pouvez télécharger la dernière version à partir de la page Installer l’interface de ligne de commande Azure.

Autoriser la connectivité sortante aux points de terminaison de flux d’appareils

Comme indiqué au début de cet article, votre appareil crée une connexion sortante vers le point de terminaison de streaming IoT Hub lors du processus d’initiation des flux d’appareils. Les pare-feu de l’appareil ou de son réseau doivent autoriser les connexions sortantes vers la passerelle de streaming sur le port 443 (notez que cette communication s’effectue via une connexion WebSocket chiffrée à l’aide de TLS).

Le nom d’hôte du point de terminaison de streaming de l’appareil se trouve dans l’onglet Vue d’ensemble du Portail Azure IoT Hub. « Points de terminaison des flux d’appareils »

Ces informations sont également disponibles en utilisant Azure CLI :

az iot hub devicestream show --name <YourIoTHubName>

Notes

Assurez-vous d’avoir installé Azure CLI version 2.0.57 ou ultérieure. Vous pouvez télécharger la dernière version à partir de la page Installer l’interface de ligne de commande Azure.

Détecter un problème via les journaux de ressources des flux d’appareils

Vous pouvez configurer Azure Monitor de manière à collecter les journaux de ressources des flux d’appareils émis par votre hub IoT. Cette approche peut être utile dans les scénarios de résolution des problèmes.

Procédez comme suit pour créer un paramètre de diagnostic pour envoyer des journaux de flux d’appareil pour votre hub IoT aux journaux Azure Monitor :

  1. Dans le portail Azure, accédez à votre hub IoT. Dans le volet de gauche, sous Supervision, sélectionnez Paramètres de diagnostic. Sélectionnez ensuite Ajouter un paramètre de diagnostic.

  2. Donnez un nom à votre paramètre de diagnostic et sélectionnez DeviceStreams dans la liste des journaux. Sélectionnez ensuite Envoyer à Log Analytics. Vous serez invité à sélectionner un espace de travail Log Analytics existant ou à en créer un.

    Activer les journaux d’activité des flux d’appareils

  3. Après avoir créé un paramètre de diagnostic pour envoyer les journaux de flux d’appareils à un espace de travail Log Analytics, vous pouvez accéder aux journaux en sélectionnant Journaux sous Supervision dans le volet de gauche de votre hub IoT sur le portail Azure. Les journaux des flux d’appareil apparaissent dans la table AzureDiagnostics et ont Category=DeviceStreams. Il peut s’écouler plusieurs minutes après une opération avant que les journaux n’apparaissent dans la table.

    Comme illustré ici, l’identité de l’appareil cible ainsi que le résultat de l’opération sont également disponibles dans les journaux.

    « Accéder aux journaux d’activité des flux d’appareils »

Pour en savoir plus sur d’Azure Monitor avec IoT Hub, consultez Superviser avec IoT Hub. Pour plus d’informations sur les journaux de ressources, métriques et tables disponibles pour IoT Hub, consultez Informations de référence sur l’analyse des données Azure IoT Hub.

Disponibilité régionale

Pendant la phase de préversion publique, les flux d’appareils IoT Hub sont disponibles dans les régions USA Centre, EUAP USA Est, Europe Nord et Asie Sud-Est. Veillez à créer votre hub dans une de ces régions.

Disponibilité du kit de développement logiciel (SDK)

Deux côtés de chaque flux (côté appareil et côté service) utilisent le SDK IoT Hub pour établir le tunnel. Dans le cadre de la préversion publique, les clients peuvent sélectionner les langages de SDK suivants :

  • Les SDK C et C# prennent en charge les flux d'appareils côté appareil.

  • Les SDK NodeJS et C# prennent en charge les flux d'appareils côté service.

Étapes suivantes