Übung: Aufheben der Bereitstellung eines einzelnen Geräts in einer Gruppenregistrierung
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.
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 BefehlcertGen.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
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
Wechseln Sie zum Visual Studio Code-Fenster, das Ihr Codeprojekt „sensor-thl-002-device“ enthält.
Stellen Sie sicher, dass sich die Eingabeaufforderung im Ordner des Projekts sensor-thl-002-device befindet.
Führen Sie die simulierte Geräte-App aus.
dotnet run
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
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
solltedisabled
lauten."provisioningStatus": "disabled"
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'}