Exercice : déprovisionner un seul appareil de l’inscription de groupe

Effectué

Il existe de nombreuses raisons pour lesquelles vous devrez peut-être déprovisionner uniquement une partie des appareils inscrits dans le cadre d’une inscription de groupe. Par exemple, un appareil peut ne plus être nécessaire, une version plus récente de l’appareil peut être disponible, ou il peut être endommagé ou compromis.

Ces étapes désactivent explicitement un certificat d’appareil et annulent l’inscription des entrées Hub IoT pour un seul appareil, tout en permettant à d’autres appareils dont les certificats individuels ont été signés par l’autorité de certification de continuer à fonctionner.

Pour déprovisionner un seul appareil à partir d’un groupe d’inscription DPS, vous devez effectuer deux opérations :

  • Créez une inscription individuelle désactivée DPS pour son certificat feuille (appareil).

    Les deux capteurs que vous avez créés pour ce module s’authentifient via le groupe d’inscription enrollgroup-sensors DPS. Cette étape révoque explicitement l’accès au service d’approvisionnement DPS pour l’appareil désactivé, tout en autorisant l’accès DPS pour d’autres appareils qui ont le certificat de signature de l’autorité de certification du groupe d’inscription dans leur chaîne. Vous ne devez pas supprimer l’inscription individuelle DPS désactivée pour l’appareil, car cela permettrait à l’appareil de se réinscrire via le groupe d’inscription.

  • Désactiver ou supprimer l’appareil dans le registre des identités du hub IoT.

    sensor-thl-001 et sensor-thl-002 ont été inscrits auprès de votre hub IoT lorsque vous avez exécuté les deux programmes C#. Cette étape désactive ou supprime une entrée d’inscription d’identité de votre hub IoT.

    Conseil

    Si votre solution inclut plusieurs hubs IoT, vous devez utiliser la liste des appareils approvisionnés pour le groupe d’inscription pour rechercher le hub IoT auquel l’appareil a été approvisionné. Cela permet de désactiver ou de supprimer l’appareil. Dans cet exercice, vous utilisez un seul hub IoT. Vous n’avez donc pas besoin de rechercher le hub IoT utilisé.

Dans cet exercice, vous déprovisionnez un seul appareil d’un groupe d’inscription.

Tâche 1 : Création d’une inscription individuelle désactivée pour l’appareil

Dans cette tâche, vous configurez une inscription individuelle pour l’appareil sensor-thl-002.

  1. Dans le bac à sable Azure, créez une inscription individuelle désactivée pour sensor-thl-002.

    az iot dps enrollment create --dps-name dps-$suffix --enrollment-id sensor-thl-002 --attestation-type x509 --certificate-path ~/certificates/certs/sensor-thl-002-device.cert.pem --provisioning-status disabled
    

    Remarque

    Le paramètre --enrollment-id doit correspondre à l’ID d’appareil contenu dans le certificat d’appareil en cours de chargement. Rappelez-vous que l’ID d’appareil a été défini comme nom commun, ou CN=, valeur du certificat d’appareil à l’aide de la commande certGen.sh create_device_certificate sensor-thl-002 dans l’unité 4 de ce module. Si l’ID d’appareil ne correspond pas au CN de certificat d’appareil, l’enregistrement d’inscription désactivée n’est pas reconnu et le programme de test peut toujours se connecter à votre hub IoT et envoyer des messages de télémétrie.

Tâche 2 : Annuler l’inscription de l’appareil au hub IoT

  1. Dans le bac à sable Azure, supprimez l’appareil de votre registre d’appareils Hub IoT.

    az iot hub device-identity delete --hub-name hub-$suffix --device-id sensor-thl-002
    

Tâche 3 : Vérifier que l’appareil est déprovisionné

  1. Basculez vers la fenêtre Visual Studio Code contenant votre projet de code sensor-thl-002-device.

  2. Vérifiez que l’invite de commandes se trouve à l’emplacement du dossier sensor-thl-002-device.

  3. Exécutez l’application d’appareil simulé.

    dotnet run
    
  4. Notez les exceptions répertoriées lorsque l’appareil tente d’approvisionner.

    Lorsqu’un appareil tente de se connecter et de s’authentifier auprès de DPS (Device Provisioning Service), le service recherche d’abord une inscription individuelle qui correspond aux informations d’identification de l’ID d’appareil avant de vérifier si les groupes d’inscription peuvent déterminer si l’appareil peut être approvisionné. Si le service trouve une inscription d’ID d’appareil individuel désactivée pour l’appareil, il empêche l’appareil de se connecter. Le service empêche la connexion même s’il existe un groupe d’inscription activé pour une autorité de certification racine ou intermédiaire dans la chaîne de certificats de l’appareil.

    Lorsque l’application tente d’utiliser le certificat X.509 configuré pour se connecter à DPS, DPS signale que l’état d’inscription de l’appareil est PAS « Affecté ».

    Found certificate: 13F32448E03F451E897B681758BAC593A60BFBFA CN=sensor-thl-002; PrivateKey: True
    Using certificate 13F32448E03F451E897B681758BAC593A60BFBFA CN=sensor-thl-002
    ProvisioningClient AssignedHub: ; DeviceID:
    Unhandled exception. System.Exception: DeviceRegistrationResult.Status is NOT 'Assigned'
    at ContainerDevice.Program.ProvisionDevice(ProvisioningDeviceClient provisioningDeviceClient, SecurityProviderX509Certificate security) in C:\Users\howdc\Allfiles\Labs\06-Automatic Enrollment of Devices
    in DPS\Final\ContainerDevice2004\Program.cs:line 107
    at ContainerDevice.Program.Main(String[] args) in C:\Users\howdc\Allfiles\Labs\06-Automatic Enrollment of Devices in DPS\Final\ContainerDevice2004\Program.cs:line 49
    at ContainerDevice.Program.<Main>(String[] args)
    

    Si vous reveniez à DPS et que vous définissiez l’inscription d’appareil individuelle sur activé ou supprimer l’inscription individuelle, l’appareil sera à nouveau en mesure de s’authentifier auprès de DPS et de se connecter au hub IoT. Si l’inscription individuelle est supprimée, l’appareil est automatiquement ajouté à l’inscription de groupe.

Vérifier votre travail

  1. Vérifiez qu’il existe une inscription individuelle désactivée avec DPS pour le capteur sensor-thl-002 d’appareil.

    az iot dps enrollment show --dps-name dps-$suffix --enrollment-id sensor-thl-002
    

    Vérifiez les informations du statut de retour. Le provisioningStatus doit être disabled.

    "provisioningStatus": "disabled"
    
  2. Vérifiez que l’appareil a été désinscrit du hub IoT.

    az iot hub device-identity show --hub-name hub-$suffix --device-id sensor-thl-002
    

    Vous devez voir un message d’erreur DeviceNotFound similaire au suivant.

     {'Message': 'ErrorCode:DeviceNotFound;sensor-thl-002', 'ExceptionMessage': 'Tracking ID:06e0221675514160850421f0b3b787a9-G:0-TimeStamp:10/24/2023 16:53:16'}