Créer et provisionner des appareils IoT Edge à grande échelle sur Linux à l’aide de clés symétriques

S’applique à :Coche IoT Edge 1.5 IoT Edge 1.5 Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont versions prises en charge. IoT Edge 1.4 LTS est fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Cet article donne des instructions complètes pour le provisionnement automatique d’un ou plusieurs appareils IoT Edge Linux avec des clés symétriques. Les appareils Azure IoT Edge peuvent être approvisionnés automatiquement à l’aide du Service IoT Hub Device Provisioning (DPS). Si vous ne connaissez pas le processus de provisionnement automatique, consultez la vue d’ensemble du provisionnement avant de poursuivre.

Voici les tâches à effectuer :

  1. Créez une inscription individuelle pour un seul appareil ou une inscription de groupe pour un ensemble d’appareils.
  2. Installation du runtime IoT Edge et de la connexion à IoT Hub.

Conseil

Pour une expérience simplifiée, essayez loutil de configuration Azure IoT Edge. Cet outil en ligne de commande, actuellement disponible en préversion publique, installe IoT Edge sur votre appareil et le provisionne à l’aide du service IoT Hub Device Provisioning et de l’attestation de clé symétrique.

L’attestation de clés symétriques est une approche simple pour authentifier un appareil avec une instance du service de provisionnement des appareils. Cette méthode d’attestation représente une expérience « Hello world » pour les développeurs qui découvrent le provisionnement d’appareils ou n’ont pas d’exigences de sécurité strictes. L’attestation d’appareil avec un Module de plateforme sécurisée (TPM) ou un certificat X.509 est plus sécurisée, et doit être utilisée lorsque les exigences de sécurité sont plus strictes.

Prérequis

Ressources cloud

  • Hub IoT actif
  • Instance du service de provisionnement des appareils IoT Hub dans Azure, liée à votre hub IoT
    • Si vous ne disposez pas d’une instance de service Device Provisioning, vous pouvez suivre les instructions fournies dans les sections Créer un service IoT Hub Device Provisioning et Lier le hub IoT et votre service Device Provisioning du guide de démarrage rapide du service IoT Hub Device Provisioning.
    • Après avoir démarré le service Device Provisioning, copiez la valeur de Étendue de l’ID à partir de la page de présentation. Vous utilisez cette valeur lorsque vous configurez le runtime IoT Edge.

Exigences relatives aux appareils

Un appareil Linux physique ou virtuel faisant office d’appareil IoT Edge.

Vous devrez définir un ID d’inscriptionunique pour identifier chaque appareil. Vous pouvez utiliser l’adresse MAC, le numéro de série ou toute information unique provenant de l’appareil. Dans cet exemple, vous pouvez utiliser une combinaison d’une adresse MAC et d’un numéro de série, forment la chaîne suivante pour un ID d’inscription : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6. Les caractères valides sont les caractères alphanumériques minuscules et les tirets (-).

Créer une inscription au service Device Provisioning

Créez une inscription pour provisionner un ou plusieurs appareils via le service Device Provisioning.

Si vous envisagez de provisionner un seul appareil IoT Edge, créez une inscription individuelle. Si vous avez besoin de provisionner plusieurs appareils, suivez les étapes de création d’une inscription de groupe DPS.

Lorsque vous créez une inscription dans le service Device Provisioning, vous avez la possibilité de déclarer un état initial du jumeau d’appareil. Dans le jumeau d’appareil, vous pouvez définir des balises pour regrouper les appareils en fonction des métriques dont vous avez besoin dans votre solution, comme la région, l’environnement, l’emplacement ou le type d’appareil. Ces balises sont utilisées pour créer des déploiements automatiques.

Pour plus d’informations sur les inscriptions dans le service Device Provisioning, consultez Guide pratique pour gérer les inscriptions d’appareils.

Créer une inscription individuelle dans le service Device Provisioning

Conseil

Bien que les étapes décrites dans cet article concernent le portail Azure, vous pouvez également créer des inscriptions individuelles à l’aide d’Azure CLI. Pour plus d’informations, consultez la section relative à az iot dps enrollment. Dans la commande CLI, utilisez l’indicateur edge-enabled pour spécifier que l’inscription concerne un appareil IoT Edge.

  1. Dans le Portail Azure, accédez à votre instance du service IoT Hub Device Provisioning.

  2. Sous Paramètres, sélectionnez Gérer les inscriptions.

  3. Sélectionnez Ajouter une inscription individuelle et suivez ces étapes pour configurer l’inscription :

    1. Pour Mécanisme, sélectionnez Clé symétrique.

    2. Indiquez un ID d’inscription unique pour votre appareil.

    3. Fournissez si vous le souhaitez un ID d’appareil loT Hub pour votre appareil. Vous pouvez utiliser l’ID d’appareil pour cibler un appareil individuel lors du déploiement de module. Si vous ne fournissez pas un ID d’appareil, l’ID d’inscription est utilisé.

    4. Sélectionnez Vrai pour déclarer que cette inscription est un appareil IoT Edge.

    5. Si vous le souhaitez, ajoutez une valeur de balise à l’état initial du jumeau d’appareil. Vous pouvez utiliser des balises pour cibler des groupes d’appareils lors du déploiement de module. Par exemple :

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Sélectionnez Enregistrer.

  4. Copiez la clé primaire de l’inscription spécifique à utiliser lors de l’installation du runtime IoT Edge.

Maintenant qu’une inscription existe pour cet appareil, le runtime IoT Edge peut provisionner automatiquement l’appareil lors de l’installation.

Installer IoT Edge

Dans cette section, vous allez préparer votre machine virtuelle ou votre appareil physique Linux à IoT Edge. Ensuite, vous installez IoT Edge.

Exécutez les commandes suivantes pour ajouter le dépôt de packages, puis ajoutez la clé de signature du package Microsoft à votre liste de clés approuvées.

Important

Le 30 juin 2022, Raspberry Pi OS Stretch a été retiré de la liste de prise en charge des systèmes d’exploitation de niveau 1. Pour éviter des vulnérabilités de sécurité potentielles, mettez à jour votre système d’exploitation hôte vers Bullseye.

L’installation peut se faire avec quelques commandes. Ouvrez un terminal et exécutez les commandes suivantes :

  • 22.04 :

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04 :

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Pour obtenir plus d’informations sur les versions des systèmes d’exploitation, voir Plateformes prises en charge par Azure IoT Edge.

Remarque

Les packages logiciels Azure IoT Edge sont soumis aux termes du contrat de licence situés dans chaque package (usr/share/doc/{package-name} ou dans le répertoire LICENSE). Lisez les termes du contrat de licence avant d’utiliser un package. Le fait d’installer et d’utiliser un package revient à accepter ces termes. Si vous n’acceptez pas les termes du contrat de licence, n’utilisez pas le package en question.

Installer un moteur de conteneur

Azure IoT Edge s’appuie sur un runtime de conteneur compatible avec OCI. Dans les scénarios de production, nous vous recommandons d’utiliser le moteur Moby. Le moteur Moby est le seul moteur de conteneur officiellement pris en charge avec IoT Edge. Les images conteneur Docker CE/EE sont compatibles avec le runtime Moby.

Installez le moteur Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Par défaut, le moteur de conteneur ne définit pas de limites de taille pour le journal de conteneur. Au fil du temps, cela peut amener l’appareil à se remplir de journaux et à manquer d’espace disque. Toutefois, vous pouvez configurer votre journal pour qu’il s’affiche localement, bien que ce soit facultatif. Pour en savoir plus sur la configuration de la journalisation, consultez Check-list du déploiement de production.

Les étapes suivantes vous indiquent comment configurer votre conteneur pour utiliser le pilote de journalisation local comme mécanisme de journalisation.

  1. Créez ou modifiez le fichier config existant du démon Docker

    sudo nano /etc/docker/daemon.json
    
  2. Définissez le pilote de journalisation par défaut sur le pilote de journalisation local, comme indiqué dans l’exemple.

       {
          "log-driver": "local"
       }
    
  3. Redémarrez le moteur de conteneur pour appliquer les changements.

    sudo systemctl restart docker
    

Installer le runtime IoT Edge

Le service IoT Edge fournit et gère les standards de sécurité sur l’appareil IoT Edge. Le service se lance à chaque démarrage et amorce l’appareil en démarrant le reste du runtime IoT Edge.

Remarque

À partir de la version 1.2, le service d’identité IoT gère l’approvisionnement et la gestion des identités pour IoT Edge et pour d’autres composants d’appareil qui doivent communiquer avec IoT Hub.

La procédure de cette section représente le processus classique d’installation de la dernière version IoT Edge sur un appareil disposant d’une connexion Internet. Si vous devez installer une version spécifique, comme une préversion, ou si vous devez installer en mode hors connexion, suivez les étapes d’installation d’une version hors connexion ou spécifique plus loin dans cet article.

Conseil

Si vous disposez déjà d’un appareil IoT Edge exécutant une version plus ancienne et que vous souhaitez effectuer une mise à niveau vers la dernière version, suivez les étapes décrites dans Mettre à jour le runtime et le démon de sécurité IoT Edge. Les versions ultérieures sont si différente des versions précédentes d’IoT Edge que des étapes spécifiques sont nécessaires pour la mise à niveau.

Installez la dernière version d’IoT Edge et le package du service d’identité IoT (si vous n’êtes pas encore à jour) :

  • 22.04 :

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04 :

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Le package defender-iot-micro-agent-edge facultatif inclut le micro-agent de sécurité Microsoft Defender pour IoT qui fournit une visibilité des points de terminaison sur la gestion de la posture de sécurité, les vulnérabilités, la détection des menaces, la gestion de la flotte et bien plus encore pour vous aider à sécuriser vos appareils IoT Edge. Il est recommandé d’installer le micro-agent avec l’agent Edge pour activer la supervision et le renforcement de la sécurité de vos appareils Edge. Pour en savoir plus sur Microsoft Defender pour IoT, consultez Présentation de Microsoft Defender pour IoT pour les générateurs d’appareils.

Provisionnement de l’appareil avec son identité cloud

Une fois le runtime installé sur votre appareil, configurez ce dernier avec les informations qu’il utilise pour se connecter au service DPS et à IoT Hub.

Préparez les informations suivantes :

  • Valeur Étendue de l’ID du service Device Provisioning
  • L’ID d’inscription de l’appareil que vous avez créé
  • Entrez la clé primaire d’une inscription spécifique ou une clé dérivée pour les appareils utilisant une inscription de groupe.

Créez un fichier de configuration pour votre appareil à partir d’un fichier de modèle fourni dans le cadre de l’installation d’IoT Edge.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Ouvrez le fichier de configuration sur l’appareil IoT Edge.

sudo nano /etc/aziot/config.toml
  1. Recherchez la section Provisioning du fichier. Supprimez les marques de commentaire des lignes pour l’approvisionnement par clé symétrique de DPS, et assurez-vous que les autres lignes d’approvisionnement sont commentées.

    # DPS provisioning with symmetric key
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "PASTE_YOUR_SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "symmetric_key"
    registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE"
    
    symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" }
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Mettez à jour les valeurs de id_scope, registration_id et symmetric_key avec vos informations sur l’appareil et le service Device Provisioning.

    Le paramètre de clé symétrique peut accepter la valeur d’une clé incluse, d’un URI de fichier ou d’un URI de PKCS#11. Supprimez les marques de commentaire d’une ligne de clé symétrique, en fonction du format que vous utilisez. Lorsque vous utilisez une clé inline, utilisez une clé codée en base64 comme dans l’exemple. Lorsque vous utilisez un URI de fichier, votre fichier doit contenir les octets bruts de la clé.

    Si vous utilisez des URI PKCS#11, recherchez la section PKCS#11 dans le fichier config et fournissez des informations sur votre configuration de PKCS#11.

    Pour plus d’informations sur le provisionnement des paramètres de configuration, consultez Configurer les paramètres d’appareil IoT Edge.

  3. Si vous le souhaitez, recherchez la section auto-reprovisioning mode du fichier. Utilisez le paramètre auto_reprovisioning_mode pour configurer le comportement de reprovisionnement de votre appareil. Dynamic : Le reprovisionnement a lieu quand l’appareil détecte qu’il a peut-être été déplacé d’un IoT Hub vers un autre IoT Hub. Il s’agit de la valeur par défaut. AlwaysOnStartup : reprovisionnez quand l’appareil est redémarré ou qu’un incident entraîne le redémarrage des démons. OnErrorOnly : Le reprovisionnement automatique de l’appareil n’est jamais déclenché. Chaque mode dispose d’une source de secours implicite de reprovisionnement d’appareil si l’appareil ne parvient pas à se connecter à IoT Hub lors du provisionnement d’identité en raison d’erreurs de connectivité. Pour plus d’informations, consultez Concepts du reprovisionnement d’appareils IoT Hub.

  4. Vous pouvez supprimer les marques de commentaire du paramètre payload afin de spécifier le chemin d’accès d’un fichier JSON local. Le contenu du fichier est envoyé à DPS sous forme de données supplémentaires pendant l’inscription de l’appareil. Cela est utile pour une allocation personnalisée. Par exemple, si vous souhaitez allouer vos appareils en fonction d’un ID de modèle IoT Plug-and-Play sans intervention humaine.

  5. Enregistrez le fichier et fermez-le.

  6. Appliquez les modifications de configuration que vous avez apportées à l’appareil.

    sudo iotedge config apply
    

Vérifier la réussite de l’installation

Si le runtime a démarré correctement, vous pouvez accéder à votre IoT Hub et commencer à déployer des modules IoT Edge sur votre appareil.

Vous pouvez vérifier que l’inscription individuelle que vous avez créée dans le service DPS a bien été utilisée. Accédez à l’instance DPS sur le Portail Azure. Ouvrez les détails de l’inscription pour l’inscription individuelle que vous avez créée. Notez que l’état de l’inscription est Affecté et que l’ID de l’appareil figure dans la liste.

Utilisez les commandes suivantes sur votre appareil pour vérifier que IoT Edge a été installé et démarré correctement.

Vérifiez l’état du service IoT Edge.

sudo iotedge system status

Consultez les journaux d’activité de service.

sudo iotedge system logs

Répertoriez les modules en cours d’exécution.

sudo iotedge list

Étapes suivantes

Le processus d’inscription DPS vous permet de définir l’ID d’appareil et les balises du jumeau d’appareil tandis que vous provisionnez le nouvel appareil. Vous pouvez utiliser ces valeurs pour cibler des appareils individuels ou des groupes d’appareils avec la gestion d’appareils automatique. En savoir plus sur Déployer et surveiller des modules IoT Edge à grande échelle à l’aide du portail Azure ou d’Azure CLI.