Unterstützung von Azure IoT Hub Device Provisioning Service (DPS) für virtuelle Netzwerke

In diesem Artikel wird das Verbindungsmuster für virtuelle Netzwerke (VNET) für die Bereitstellung von IoT-Geräten mit IoT-Hubs mithilfe von DPS vorgestellt. Dieses Muster bietet private Konnektivität zwischen den Geräten, DPS und dem IoT-Hub in einem kundeneigenen Azure-VNET.

In den meisten Szenarien, in denen DPS mit einem VNET konfiguriert ist, wird Ihr IoT Hub auch im selben VNET konfiguriert. Genauere Informationen zur VNET-Unterstützung und -Konfiguration für IoT-Hubs finden Sie unter Unterstützung von virtuellen IoT-Hub-Netzwerken.

Einführung

Standardmäßig werden DPS-Hostnamen einem öffentlichen Endpunkt mit einer öffentlich routingfähigen IP-Adresse über das Internet zugeordnet. Dieser öffentliche Endpunkt ist für alle Kunden sichtbar. IoT-Geräte über breit angelegte Netzwerke und lokale Netzwerke können versuchen, auf den öffentlichen Endpunkt zuzugreifen.

Aus verschiedenen Gründen möchten Kunden möglicherweise die Verbindung mit Azure-Ressourcen wie DPS einschränken. Zu den Gründen gehören die folgenden:

  • Verhindern, dass die Verbindung über das öffentliche Internet offengelegt wird. Die Offenlegung kann reduziert werden, indem durch Isolation auf Netzwerkebene weitere Sicherheitsschichten für Ihren IoT-Hub und Ihre DPS-Ressourcen eingeführt werden.

  • Aktivieren einer privaten Konnektivitätsumgebung von Ihren lokalen Netzwerkressourcen, um sicherzustellen, dass Ihre Daten und der Datenverkehr direkt an das Azure-Backbone-Netzwerk übertragen wird

  • Verhindern der Exfiltration von Angriffen von vertraulichen, lokalen Netzwerken

  • Befolgen bewährter Azure-Konnektivitätsmuster mithilfe privater Endpunkte

Zu den gängigen Ansätzen zum Einschränken der Konnektivität gehören DPS-IP-Filterregeln und virtuelle Netzwerke (VNET) mit privaten Endpunkten. In diesem Artikel wird der VNET-Ansatz für DPS mit privaten Endpunkten beschrieben.

Geräte, die in lokalen Netzwerken betrieben werden, können privates Peering mit virtuellen privaten Netzwerken (VPN) oder ExpressRoute verwenden, um eine Verbindung mit einem VNET in Azure herzustellen und über private Endpunkte auf DPS-Ressourcen zuzugreifen.

Ein privater Endpunkt ist eine private IP-Adresse, die in einem kundeneigenen VNET zugeordnet ist, über das eine Azure-Ressource zugänglich ist. Wenn Sie über einen privaten Endpunkt für Ihre DPS-Ressource verfügen, können Sie geräten, die innerhalb Ihres VNET arbeiten, die Bereitstellung durch Ihre DPS-Ressource anfordern, ohne datenverkehrsfrei für den öffentlichen Endpunkt zuzulassen. Jede DPS-Ressource kann mehrere private Endpunkte unterstützen, die sich jeweils in einem VNet in einer anderen Region befinden können.

Voraussetzungen

Vergewissern Sie sich, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie fortfahren:

Einschränkungen privater Endpunkte

Beachten Sie die folgenden aktuellen Einschränkungen für DPS bei der Verwendung privater Endpunkte:

  • Private Endpunkte funktionieren nicht, wenn sich die DPS-Ressource und der verknüpfte IoT-Hub in verschiedenen Clouds befinden. z. B. Azure Government und globales Azure.

  • Private Endpunkte in DPS verwenden Azure Private Link, die nur in öffentlichen Regionen unterstützt werden. Weitere Informationen finden Sie unter Verfügbarkeit.

  • Derzeit funktionieren benutzerdefinierte Zuordnungsrichtlinien mit Azure Functions für DPS nicht, wenn die Azure-Funktion für ein VNET und private Endpunkte gesperrt ist.

  • Die aktuelle VNET-Unterstützung von DPS betrifft nur eingehenden Datenverkehr in DPS. Ausgehender Datenverkehr, also von DPS zu IoT Hub, verwendet einen internen Dienst-zu-Dienst-Mechanismus anstelle eines dedizierten VNET. Unterstützung für die vollständige VNET-basierte Ausgangssperre zwischen DPS und IoT Hub ist derzeit nicht verfügbar.

  • Über die Richtlinie mit der niedrigsten Latenzzuordnung wird dem IoT-Hub mit der niedrigsten Latenz ein Gerät zugewiesen. Diese Zuordnungsrichtlinie ist in einer virtuellen Netzwerkumgebung nicht zuverlässig.

  • Das Aktivieren von einem oder mehreren privaten Endpunkten umfasst normalerweise das Deaktivieren des öffentlichen Zugriffs auf Ihre DPS-Instanz. Sobald der öffentliche Zugriff deaktiviert ist, können Sie die Azure-Portal nicht mehr zum Verwalten von Registrierungen verwenden. Stattdessen können Sie Registrierungen mithilfe der Azure CLI, mit PowerShell oder über Dienst-APIs von Computern innerhalb der VNETs/privaten Endpunkte verwalten, die auf der DPS-Instanz konfiguriert sind.

  • Bei Verwendung privater Endpunkte empfehlen wir, den DPM in einer der Regionen bereitzustellen, die Verfügbarkeitszonen unterstützen. Andernfalls ist die Verfügbarkeit von DPM-Instanzen mit aktivierten privaten Endpunkten möglicherweise eingeschränkt, wenn es zu Ausfällen kommt.

Hinweis

Überlegungen zur Datenresidenz:

DPS stellt einen globalen Geräteendpunkt (global.azure-devices-provisioning.net) bereit. Wenn Sie jedoch den globalen Endpunkt verwenden, werden Ihre Daten möglicherweise an Orte außerhalb der Region umgeleitet, in der die DPS-Instanz ursprünglich erstellt wurde. Verwenden Sie private Endpunkte, um die Datenresidenz innerhalb der anfänglichen DPS-Region sicherzustellen.

Einrichten eines privaten Endpunkts

Führen Sie die folgenden Schritte aus, um einen privaten Endpunkt einzurichten:

  1. Öffnen Sie in der Azure-Portal Ihre DPS-Ressource, und wählen Sie die Registerkarte "Netzwerk" aus. Wählen Sie "Private Endpunktverbindungen" und "+ Privater Endpunkt" aus.

    Screenshot that shows adding a new private endpoint for DPS.

  2. Geben Sie auf der Seite "Einfache Endpunkte erstellen" die Informationen ein, die in der folgenden Tabelle Erwähnung.

    Screenshot that shows the private endpoints basics page.

    Feld Wert
    Abonnement Wählen Sie das gewünschte Azure-Abonnement aus, das den privaten Endpunkt enthalten soll.
    Ressourcengruppe Wählen Sie eine Ressourcengruppe für den privaten Endpunkt aus, oder erstellen Sie eine.
    Name Geben Sie einen Namen für den privaten Endpunkt ein.
    Region Die ausgewählte Region muss mit der Region identisch sein, die das VNET enthält, aber nicht mit der DPS-Ressource identisch sein muss.

    Wählen Sie "Weiter" aus: Ressource zum Konfigurieren der Ressource, auf die der private Endpunkt verweist.

  3. Geben Sie auf der Seite "Ressource eines privaten Endpunkts erstellen" die Informationen ein, die in der folgenden Tabelle Erwähnung.

    Screenshot that shows the private endpoint resource page.

    Feld Wert
    Abonnement Wählen Sie das Azure-Abonnement aus, das die DPS-Ressource enthält, auf die Ihr privater Endpunkt verweist.
    Ressourcentyp Wählen Sie Microsoft.Devices/ProvisioningServices aus.
    Ressource Wählen Sie die DPS-Ressource aus, der der private Endpunkt zugeordnet ist.
    Zielunterressource Wählen Sie iotDps aus.

    Tipp

    Informationen zur Einstellung Stellen Sie über eine Ressourcen-ID oder einen Alias eine Verbindung mit einer Azure-Ressource her finden Sie im Abschnitt Anfordern eines privaten Endpunkts in diesem Artikel.

    Wählen Sie "Weiter" aus: Konfiguration zum Konfigurieren des VNET für den privaten Endpunkt.

  4. Wählen Sie auf der Seite „Konfiguration“ von Privaten Endpunkt erstellen Ihr virtuelles Netzwerk und das Subnetz aus, in dem der private Endpunkt erstellt werden soll.

    Wählen Sie "Weiter: Kategorien" aus, und geben Sie optional beliebige Tags für Ihre Ressource an.

    Screenshot that shows the private endpoint configuration page.

  5. Wählen Sie "Überprüfen" und dann " Erstellen" aus, um Ihre private Endpunktressource zu erstellen.

Verwenden privater Endpunkte mit Geräten

Um private Endpunkte mit Gerätebereitstellungscode zu verwenden, muss Ihr Bereitstellungscode den bestimmten Dienstendpunkt für Ihre DPM-Instanz verwenden, wie auf der Übersichtsseite Ihrer DPM-Instanz im Azure-Portal angezeigt. Der Dienstendpunkt hat die folgende Form.

<Your DPS Tenant Name>.azure-devices-provisioning.net

Die meisten Beispiele, die in unserer Dokumentation und den SDKs gezeigt werden, verwenden den globalen Geräteendpunkt (global.azure-devices-provisioning.net) und den ID-Bereich, um eine bestimmte DPM-Instanz aufzulösen. Verwenden Sie den Dienstendpunkt anstelle des globalen Geräteendpunkts, wenn Sie zur Gerätebereitstellung eine Verbindung mit einer DPM-Instanz über private Endpunkte herstellen.

Das Beispiel für den Bereitstellungsgeräteclient (pro_dev_client_sample) im Azure IoT C SDK ist so konzipiert, dass der globale Geräteendpunkt als globaler Bereitstellungs-URI (global_prov_uri) in prov_dev_client_sample.c verwendet wird.

MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_RESULT, PROV_DEVICE_RESULT_VALUE);
MU_DEFINE_ENUM_STRINGS_WITHOUT_INVALID(PROV_DEVICE_REG_STATUS, PROV_DEVICE_REG_STATUS_VALUES);

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
}

PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
PROV_DEVICE_HANDLE prov_device_handle;
if ((prov_device_handle = Prov_Device_Create(global_prov_uri, id_scope, prov_transport)) == NULL)
{
    (void)printf("failed calling Prov_Device_Create\r\n");

Um das Beispiel mit einem privaten Endpunkt zu verwenden, wird der oben hervorgehobene Code so geändert, dass der Dienstendpunkt für Ihre DPS-Ressource verwendet wird. Wenn Ihr Dienstendpunkt beispielsweise mydps.azure-devices-provisioning.net wäre, sähe der Code wie folgt aus.

static const char* global_prov_uri = "global.azure-devices-provisioning.net";
static const char* service_uri = "mydps.azure-devices-provisioning.net";
static const char* id_scope = "[ID Scope]";
    PROV_DEVICE_RESULT prov_device_result = PROV_DEVICE_RESULT_ERROR;
    PROV_DEVICE_HANDLE prov_device_handle;
    if ((prov_device_handle = Prov_Device_Create(service_uri, id_scope, prov_transport)) == NULL)
    {
        (void)printf("failed calling Prov_Device_Create\r\n");
    }

Anfordern eines privaten Endpunkts

Sie können einen privaten Endpunkt für eine DPM-Instanz anhand der Ressourcen-ID anfordern. Um diese Anforderung zu erstellen, müssen Sie die Ressourcen-ID beim Ressourcenbesitzer anfordern.

  1. Die Ressourcen-ID wird auf der Registerkarte „Eigenschaften“ für die DPS-Ressource bereitgestellt, wie unten gezeigt.

    Screenshot that shows the DPS Properties tab.

    Achtung

    Beachten Sie, dass die Ressourcen-ID die Abonnement-ID enthält.

  2. Wenn Sie über die Ressourcen-ID verfügen, führen Sie die oben genannten Schritte unter Einrichten eines privaten Endpunkts bis Schritt 3 auf der Seite „Ressourcen“ von Privaten Endpunkt erstellen aus. Wählen Sie Verbinden nach Ressourcen-ID oder Alias zu einer Azure-Ressource aus, und geben Sie die Informationen in der folgenden Tabelle ein.

    Feld Wert
    Ressourcen-ID oder Alias Geben Sie die Ressourcen-ID für die DPS-Ressource ein.
    Zielunterressource Enter iotDps
    Anforderungsnachricht Geben Sie eine Anforderungsnachricht für den Besitzer der DPS-Ressource ein.
    Beispiel:
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Wählen Sie "Weiter" aus: Konfiguration zum Konfigurieren des VNET für den privaten Endpunkt.

  3. Wählen Sie auf der Seite „Konfiguration“ von Privaten Endpunkt erstellen das virtuelle Netzwerk und das Subnetz aus, in dem der private Endpunkt erstellt werden soll.

    Wählen Sie "Weiter: Kategorien" aus, und geben Sie optional beliebige Tags für Ihre Ressource an.

  4. Wählen Sie "Überprüfen" und dann " Erstellen" aus, um Ihre private Endpunktanforderung zu erstellen.

  5. Der DPS-Besitzer sieht die private Endpunktanforderung in der Liste "Private Endpunktverbindungen" auf der Registerkarte "DPS-Netzwerk". Auf dieser Seite kann der Besitzer die Anforderung des privaten Endpunkts genehmigen oder ablehnen.

    Screenshot that shows the private endpoint request approval.

Preise für private Endpunkte

Ausführliche Preisinformationen finden Sie unter Azure Private Link – Preise.

Nächste Schritte

Verwenden Sie die unten angegebenen Links, um weitere Informationen zu den Sicherheitsfeatures von DPS zu erhalten: