Freigeben über


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

In diesem Artikel wird das Verbindungsmuster für virtuelle Netzwerke 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 virtuellen Azure-Netzwerk im Besitz eines Kunden.

In den meisten Szenarien, in denen DPS mit einem virtuellen Netzwerk konfiguriert ist, wird Ihr IoT-Hub auch im selben virtuellen Netzwerk konfiguriert. Weitere Informationen zur Unterstützung und Konfiguration virtueller Netzwerke für IoT-Hubs finden Sie unter IoT Hub-Unterstützung für virtuelle Netzwerke mit Azure Private Link.

Einleitung

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 mehreren Gründen möchten Kunden möglicherweise die Konnektivität mit Azure-Ressourcen wie DPS einschränken. Zu diesen Gründen gehören:

  • Verhindern Sie die Verbindungsoffenlegung über das öffentliche Internet. Die Exposition kann reduziert werden, indem mehr Sicherheitsebenen über die Netzwerkebenenisolation für Ihre IoT-Hub- und DPS-Ressourcen eingeführt werden.

  • Aktivierung einer privaten Verbindungserfahrung von Ihren netzwerkinternen Ressourcen, um sicherzustellen, dass Ihre Daten und Ihr Datenverkehr direkt ins Azure-Backbone-Netzwerk übertragen werden.

  • Verhindern von Exfiltrationsangriffen von sensiblen lokalen Netzwerken.

  • Folgen sie etablierten azureweiten Konnektivitätsmustern mithilfe privater Endpunkte.

Häufige Ansätze zum Einschränken der Konnektivität sind DPS-IP-Filterregeln und virtuelle Netzwerke mit privaten Endpunkten. Ziel dieses Artikels ist es, den Virtuellen Netzwerkansatz für DPS mithilfe privater Endpunkte zu beschreiben.

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

Ein privater Endpunkt ist eine private IP-Adresse, die innerhalb eines vom Kunden besessenen virtuellen Netzwerks zugewiesen wird, über die 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 virtuellen Netzwerks arbeiten, die Bereitstellung durch Ihre DPS-Ressource anfordern lassen, ohne den Datenverkehr an den öffentlichen Endpunkt zuzulassen. Jede DPS-Ressource kann mehrere private Endpunkte unterstützen, die sich in einem virtuellen Netzwerk in einer anderen Region befinden können.

Voraussetzungen

Bevor Sie fortfahren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

Einschränkungen für private Endpunkte

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

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

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

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

  • Die aktuelle Unterstützung des virtuellen DPS-Netzwerks unterstützt nur den Eingang von Daten in das DPS. Der Daten-Ausgangsverkehr von DPS zum IoT Hub nutzt einen internen Dienst-zu-Dienst-Mechanismus statt eines dedizierten virtuellen Netzwerks. Die Unterstützung für den vollständigen virtuellen netzwerkbasierten Ausgangssperrmodus zwischen DPS und IoT Hub ist derzeit nicht verfügbar.

  • Die niedrigste Latenzzuordnungsrichtlinie wird verwendet, um dem IoT-Hub ein Gerät mit der niedrigsten Latenz zuzuweisen. Diese Zuordnungsrichtlinie ist in einer virtuellen Netzwerkumgebung nicht zuverlässig.

  • Das Aktivieren eines oder mehrerer privater Endpunkte umfasst in der Regel das Deaktivieren des öffentlichen Zugriffs auf Ihre DPS-Instanz. Sobald der öffentliche Zugriff deaktiviert ist, können Sie das Azure-Portal nicht mehr zum Verwalten von Registrierungen verwenden. Stattdessen können Sie Registrierungen mithilfe der Azure CLI, PowerShell oder Dienst-APIs von Computern innerhalb eines oder mehrerer virtueller Netzwerke/privater Endpunkte verwalten, die auf der DPS-Instanz konfiguriert sind.

  • Bei verwendung privater Endpunkte wird empfohlen, DPS in einer der Regionen bereitzustellen, die Verfügbarkeitszonen unterstützen. Andernfalls sehen DPS-Instanzen mit aktivierten privaten Endpunkten möglicherweise eine reduzierte Verfügbarkeit während Ausfällen.

Hinweis

Betrachtungen 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 außerhalb der Region umgeleitet, in der die DPS-Instanz anfangs 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. Navigieren Sie im Azure-Portal zu Ihrer DPS-Ressource.

  2. Wählen Sie im Menü "Dienst" unter "Einstellungen" die Registerkarte " Netzwerk " aus.

  3. Wählen Sie im Arbeitsbereich die Registerkarte " Privater Zugriff " aus, und wählen Sie dann +Einen privaten Endpunkt erstellen.

    Screenshot, der das Hinzufügen eines neuen privaten Endpunkts für eine DPS-Instanz im Azure-Portal zeigt.

  4. Geben Sie auf der Registerkarte " Grundlagen " auf der Seite " Private Endpunkte erstellen " die in der folgenden Tabelle erwähnten Informationen ein.

    Screenshot der Registerkarte

    Feld Wert
    Subscription Wählen Sie das gewünschte Azure-Abonnement aus, um den privaten Endpunkt zu enthalten.
    Ressourcengruppe Wählen Oder erstellen Sie eine Ressourcengruppe, die den privaten Endpunkt enthalten soll.
    Name Geben Sie einen Namen für den privaten Endpunkt ein.
    Name der Netzwerkschnittstelle Geben Sie bei Bedarf einen Namen für die Netzwerkschnittstelle Ihres privaten Endpunkts ein.
    Region Wählen Sie die Region für den privaten Endpunkt aus. Die ausgewählte Region muss mit der Region identisch sein, die das virtuelle Netzwerk 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.

  5. Geben Sie auf der Registerkarte " Ressource " auf der Seite " Private Endpunkte erstellen " die in der folgenden Tabelle erwähnten Informationen ein.

    Screenshot der Registerkarte

    Feld Wert
    Subscription Wenn sie noch nicht ausgewählt ist, wählen Sie das Azure-Abonnement aus, das die DPS-Ressource enthält, auf die Ihr privater Endpunkt verweist.
    Ressourcentyp Wenn sie noch nicht ausgewählt ist, wählen Sie "Microsoft.Devices/ProvisioningServices" aus.
    Ressource Wenn sie noch nicht ausgewählt ist, wählen Sie die DPS-Ressource aus, der der private Endpunkt zugeordnet ist.
    Zielunterressource Wählen Sie "iotDps" aus.

    Tipp

    Informationen zur Verbindung mit einer Azure-Ressource durch Ressourcen-ID oder Aliaseinstellung finden Sie im Abschnitt "Anfordern eines privaten Endpunkts " in diesem Artikel.

    Wählen Sie "Weiter: Virtuelles Netzwerk " aus, um das virtuelle Netzwerk für den privaten Endpunkt zu konfigurieren.

  6. Wählen Sie auf der Registerkarte "Virtuelles Netzwerk " auf der Seite " Private Endpunkte erstellen" Ihr virtuelles Netzwerk und Ihr Subnetz aus, um den privaten Endpunkt zu erstellen.

    Screenshot der Registerkarte

    Wählen Sie "Weiter" aus: DNS , um alle privaten DNS-Integrationsoptionen auszuwählen, die für Ihren privaten Endpunkt erforderlich sind.

  7. Wählen Sie auf der Registerkarte "DNS " auf der Seite " Private Endpunkte erstellen " alle privaten DNS-Integrationsoptionen aus, die für Ihren privaten Endpunkt erforderlich sind.

    Screenshot: Registerkarte „DNS“ der Seite „Privaten Endpunkt erstellen“

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

  8. Wählen Sie "Weiter" aus: Überprüfen + erstellen 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 spezifischen Dienstendpunkt für Ihre DPS-Instanz verwenden, wie auf der Übersichtsseite Ihrer DPS-Instanz im Azure-Portal dargestellt. Der Dienstendpunkt hat das folgende Formular.

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

Der meiste Beispielcode, der in unserer Dokumentation und den SDKs dargestellt wird, verwendet den globalen Geräteendpunkt (global.azure-devices-provisioning.net) und den ID-Bereich, um eine bestimmte DPS-Instanz aufzulösen. Verwenden Sie den Dienstendpunkt anstelle des globalen Geräteendpunkts, wenn Sie eine Verbindung mit einer DPS-Instanz herstellen, indem Sie private Endpunkte verwenden, um Ihre Geräte bereitzustellen.

Das Beispiel für den Bereitstellungsgeräteclient (pro_dev_client_sample) im Azure IoT C SDK dient beispielsweise dazu, den globalen Geräteendpunkt als globalen Bereitstellungs-URI (global_prov_uri) in prov_dev_client_sample.c zu verwenden.

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, würde der hervorgehobene Code im vorherigen Beispiel so geändert, dass der Dienstendpunkt für Ihre DPS-Ressource verwendet wird. Wenn Ihr Dienstendpunkt beispielsweise lautet mydps.azure-devices-provisioning.net, würde der Code wie folgt aussehen.

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 über die Ressourcen-ID einen privaten Endpunkt für eine DPS-Instanz anfordern. Um diese Anforderung zu stellen, benötigen Sie den Ressourcenbesitzer, um Sie mit der Ressourcen-ID zu versorgen.

  1. Die Ressourcen-ID wird auf der Seite "Eigenschaften" für die DPS-Ressource im Azure-Portal bereitgestellt, wie im folgenden Screenshot dargestellt.

    Screenshot der Seite

    Vorsicht

    Die Ressourcen-ID enthält die Abonnement-ID.

  2. Nachdem Sie über die Ressourcen-ID verfügen, führen Sie die Schritte unter "Einrichten eines privaten Endpunkts " in Schritt 3 auf der Registerkarte " Ressource " auf der Seite " Private Endpunkte erstellen " aus. Wählen Sie "Mit einer Azure-Ressource verbinden" nach Ressourcen-ID oder Alias 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 IotDps eingeben
    Nachricht anfordern Geben Sie eine Anforderungsnachricht für den DPS-Ressourcenbesitzer ein.
    Beispiel:
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Wählen Sie "Weiter: Virtuelles Netzwerk " aus, um das virtuelle Netzwerk für den privaten Endpunkt zu konfigurieren.

  3. Wählen Sie auf der Registerkarte "Virtuelles Netzwerk " auf der Seite " Private Endpunkte erstellen" Ihr virtuelles Netzwerk und Ihr Subnetz aus, um den privaten Endpunkt zu erstellen.

    Screenshot der Registerkarte

    Wählen Sie "Weiter" aus: DNS , um alle privaten DNS-Integrationsoptionen auszuwählen, die für Ihre private Endpunktanforderung erforderlich sind.

  4. Wählen Sie auf der Registerkarte "DNS " auf der Seite " Private Endpunkte erstellen" alle privaten DNS-Integrationsoptionen aus, die für Ihre private Endpunktanforderung erforderlich sind.

    Screenshot: Registerkarte „DNS“ der Seite „Privaten Endpunkt erstellen“

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

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

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

    Screenshot der Seite

Preise privater Endpunkte

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

Nächste Schritte

Weitere Informationen zu DPS-Sicherheitsfeatures: