Übung: Aufheben der Bereitstellung eines einzelnen Geräts in einer Gruppenregistrierung

Abgeschlossen

Es gibt viele Gründe, warum Sie möglicherweise die Bereitstellung nur eines Teils der Geräte, die als Teil einer Gruppenregistrierung registriert sind, aufheben müssen. Beispielsweise könnte ein Gerät nicht mehr benötigt werden, es könnte eine neuere Version des Geräts verfügbar sein oder es könnte defekt oder kompromittiert sein.

Mit diesen Schritten wird explizit ein Gerätezertifikat deaktiviert und die Registrierung von IoT-Hubeinträgen für ein einzelnes Gerät aufgehoben, während andere Geräte, deren einzelne Zertifikate von der Zertifizierungsstelle signiert wurden, weiterhin funktionieren können.

Um die Bereitstellung eines einzelnen Geräts aus einer DPS-Registrierungsgruppe aufzuheben, müssen Sie zwei Schritte ausführen:

  • Erstellen Sie eine für DPS deaktivierte Einzelregistrierung für das untergeordnete (Geräte)-Zertifikat des Geräts.

    Die beiden Sensoren, die Sie für dieses Modul erstellt haben, authentifizieren sich über die Registrierungsgruppe der DPS-Registrierungsgruppensensoren. Mit diesem Schritt wird der Zugriff auf den Bereitstellungsdienst für das deaktivierte Gerät explizit widerrufen. Anderen Geräten, deren Zertifikatkette das ZS-Signaturzertifikat der Registrierungsgruppe enthält, wird dagegen weiterhin DPS-Zugriff gewährt. Sie sollten die deaktivierte DPS-Einzelregistrierung für das Gerät nicht löschen, da das Gerät sonst über die Registrierungsgruppe erneut registriert werden könnte.

  • Deaktivieren oder Löschen des Geräts aus der Identitätsregistrierung des IoT-Hubs.

    „sensor-thl-001“und „sensor-thl-002“bei Ihrem IoT-Hub registriert, als Sie die beiden C#-Programme ausgeführt haben. Dieser Schritt deaktiviert oder löscht einen Identitätsregistrierungseintrag aus Ihrem IoT-Hub.

    Tipp

    Wenn Ihre Lösung mehrere IoT-Hubs enthält, sollten Sie in der Liste der für die Registrierungsgruppe bereitgestellten Geräte den IoT-Hub suchen, für den das Gerät bereitgestellt wurde. Dann können Sie das Gerät deaktivieren und löschen. In dieser Übung verwenden Sie einen einzelnen IoT-Hub, sodass Sie nicht nachsehen müssen, welcher IoT-Hub verwendet wurde.

In dieser Übung heben Sie die Bereitstellung eines einzelnen Geräts in einer Registrierungsgruppe auf.

Aufgabe 1: Erstellen einer deaktivierten Einzelregistrierung für das Gerät

In dieser Aufgabe konfigurieren Sie eine Einzelregistrierung für das Gerät sensor-thl-002.

  1. Erstellen Sie in der Azure-Sandbox eine Einzelregistrierung, die für „sensor-thl-002“ deaktiviert ist.

    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
    

    Hinweis

    Der Parameter --enrollment-id muss mit der Geräte-ID übereinstimmen, die im hochgeladenen Gerätezertifikat enthalten ist. Denken Sie daran, dass die Geräte-ID als gemeinsamer Name oder „CN=“-Wert des Gerätezertifikats mit dem Befehl certGen.sh create_device_certificate sensor-thl-002 in Einheit 4 dieses Moduls festgelegt wurde. Wenn die Geräte-ID nicht mit dem Gerätezertifikat-CN übereinstimmt, wird der deaktivierte Registrierungsdatensatz nicht erkannt, und das Testprogramm kann weiterhin eine Verbindung mit Ihrem IoT-Hub herstellen und Telemetrienachrichten senden.

Aufgabe 2: Aufheben der Registrierung des Geräts im IoT-Hub

  1. Löschen Sie in der Azure-Sandbox das Gerät aus Ihrer IoT Hub-Geräteregistrierung.

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

Aufgabe 3: Bestätigen der Aufhebung der Gerätebereitstellung

  1. Wechseln Sie zum Visual Studio Code-Fenster, das Ihr Codeprojekt „sensor-thl-002-device“ enthält.

  2. Stellen Sie sicher, dass sich die Eingabeaufforderung im Ordner des Projekts sensor-thl-002-device befindet.

  3. Führen Sie die simulierte Geräte-App aus.

    dotnet run
    
  4. Beachten Sie die Ausnahmen, die beim Bereitstellen des Geräts aufgeführt werden.

    Wenn ein Gerät versucht, eine Verbindung mit dem Device Provisioning Service (DPS) herzustellen und sich bei diesem zu authentifizieren, sucht der Dienst vor der Suche nach Registrierungsgruppen zunächst nach einer Einzelregistrierung, die den Anmeldeinformationen des Geräts entspricht, um zu ermitteln, ob das Gerät bereitgestellt werden kann. Wenn der Dienst eine deaktivierte Einzelregistrierung für die Geräte-ID findet, wird das Gerät daran gehindert, eine Verbindung herzustellen. Der Dienst verhindert einen Verbindungsaufbau, selbst wenn eine Registrierungsgruppe für eine Zwischen- oder Stammzertifizierungsstelle in der Zertifikatkette des Geräts vorhanden ist.

    Wenn die Anwendung versucht, das konfigurierte X.509-Zertifikat zum Herstellen einer Verbindung mit DPS zu verwenden, meldet DPS, dass der Geräteregistrierungsstatus NICHT „Zugewiesen“ lautet.

    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)
    

    Wenn Sie zu DPS zurückkehren und die einzelne Geräteregistrierung entweder auf aktiviert festlegen oder löschen würden, könnte sich das Gerät erneut bei DPS authentifizieren und eine Verbindung mit dem IoT-Hub herstellen. Wenn die Einzelregistrierung gelöscht wird, wird das Gerät automatisch wieder zur Gruppenregistrierung hinzugefügt.

Überprüfen Ihrer Arbeit

  1. Vergewissern Sie sich, dass eine für DPS deaktivierte Einzelregistrierung für das Gerät „sensor-thl-002“ vorhanden ist.

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

    Überprüfen Sie die Informationen zum Rückgabestatus. Der Wert von provisioningStatus sollte disabled lauten.

    "provisioningStatus": "disabled"
    
  2. Stellen Sie sicher, dass die Registrierung des Geräts beim IoT-Hub aufgehoben wurde.

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

    Sie sollten eine DeviceNotFound-Fehlermeldung ähnlich der folgenden erhalten.

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