Udostępnij za pośrednictwem


Obsługa usługi Azure IoT Hub Device Provisioning Service (DPS) dla sieci wirtualnych

W tym artykule przedstawiono wzorzec łączności sieci wirtualnej (VNET) dla aprowizacji urządzeń IoT za pomocą centrów IoT, wykorzystując usługę DPS. Ten wzorzec zapewnia prywatną łączność między urządzeniami, usługą DPS i centrum IoT w sieci wirtualnej platformy Azure należącej do klienta.

W większości scenariuszy, w których usługa DPS jest skonfigurowana przy użyciu sieci wirtualnej, usługa IoT Hub jest również skonfigurowana w tej samej sieci wirtualnej. Aby uzyskać bardziej szczegółowe informacje na temat obsługi i konfiguracji sieci wirtualnej dla usługi IoT Hubs, zobacz Obsługa sieci wirtualnej usługi IoT Hub.

Wprowadzenie

Domyślnie nazwy hostów usługi DPS są mapowane na publiczny punkt końcowy z publicznie trasowalnym adresem IP w Internecie. Ten publiczny punkt końcowy jest widoczny dla wszystkich klientów. Urządzenia IoT za pośrednictwem sieci rozległych i sieci lokalnych mogą próbować uzyskać dostęp do publicznego punktu końcowego.

Z kilku powodów klienci mogą chcieć ograniczyć łączność z zasobami platformy Azure, takimi jak DPS. Oto następujące przyczyny:

  • Zapobiegaj narażeniu połączenia przez publiczny Internet. Narażenie można zmniejszyć przez wprowadzenie większej liczby warstw zabezpieczeń za pośrednictwem izolacji na poziomie sieci dla zasobów centrum IoT i usługi DPS

  • Umożliwienie prywatnego połączenia z zasobów sieci lokalnej zapewnia, że dane i ruch są przesyłane bezpośrednio do sieci szkieletowej Azure.

  • Zapobieganie atakom eksfiltracji z poufnych sieci lokalnych.

  • Korzystanie ze sprawdzonych wzorców łączności platformy Azure przy użyciu prywatnych punktów końcowych.

Typowe podejścia do ograniczania łączności obejmują reguły filtrowania adresów IP usługi DPS i sieć wirtualną (VNET) z prywatnymi punktami końcowymi. Celem tego artykułu jest opisanie podejścia do sieci wirtualnej dla usługi DPS przy użyciu prywatnych punktów końcowych.

Urządzenia działające w sieciach lokalnych mogą używać wirtualnej sieci prywatnej (VPN) lub prywatnego peeringu usługi ExpressRoute, aby połączyć się z siecią wirtualną na platformie Azure i uzyskiwać dostęp do zasobów usługi DPS za pośrednictwem prywatnych punktów końcowych.

Prywatny punkt końcowy to prywatny adres IP przydzielony w sieci wirtualnej należącej do klienta, za pomocą której jest dostępny zasób platformy Azure. Mając prywatny punkt końcowy dla zasobu DPS, można umożliwić urządzeniom działającym w sieci wirtualnej zażądać aprowizacji przez zasób DPS bez zezwalania na ruch do publicznego punktu końcowego. Każdy zasób usługi DPS może obsługiwać wiele prywatnych punktów końcowych, z których każdy może znajdować się w sieci wirtualnej w innym regionie.

Wymagania wstępne

Przed kontynuowaniem upewnij się, że spełnione są następujące wymagania wstępne:

Ograniczenia prywatnych punktów końcowych

Podczas korzystania z prywatnych punktów końcowych należy pamiętać o następujących bieżących ograniczeniach usługi DPS:

  • Prywatne punkty końcowe nie działają, gdy zasób usługi DPS i połączone centrum IoT znajdują się w różnych chmurach. Na przykład platforma Azure Government i globalna platforma Azure.

  • Prywatne punkty końcowe w usłudze DPS używają usługi Azure Private Link, które są obsługiwane tylko w regionach publicznych. Aby uzyskać więcej informacji, zobacz Dostępność usługi Azure Private Link.

  • Obecnie niestandardowe zasady alokacji w usłudze Azure Functions dla usługi DPS nie działają, gdy funkcja platformy Azure jest zablokowana w sieci wirtualnej i prywatnych punktach końcowych.

  • Bieżąca obsługa VNET usługi DPS dotyczy tylko danych wejściowych do usługi DPS. Ruch wychodzący danych, który jest ruchem z usługi DPS do usługi IoT Hub, używa wewnętrznego mechanizmu między usługami, a nie dedykowanej sieci wirtualnej. Obsługa pełnej blokady ruchu wychodzącego opartego na VNET między usługami DPS i IoT Hub nie jest obecnie dostępna.

  • Do przypisania urządzenia do centrum IoT z najniższym opóźnieniem są używane zasady alokacji najmniejszego opóźnienia. Te zasady alokacji nie są niezawodne w środowisku sieci wirtualnej.

  • Włączanie jednego lub więcej prywatnych punktów końcowych zwykle polega na wyłączeniu publicznego dostępu do instancji usługi DPS. Po wyłączeniu dostępu publicznego nie można już zarządzać rejestracjami za pomocą witryny Azure Portal. Zamiast tego można zarządzać rejestracjami przy użyciu komendy Azure CLI, programu PowerShell lub interfejsów API usługi z maszyn znajdujących się wewnątrz jednej lub więcej sieci wirtualnych/prywatnych punktów końcowych skonfigurowanych w wystąpieniu usługi DPS.

  • W przypadku korzystania z prywatnych punktów końcowych zalecamy wdrożenie usługi DPS w jednym z regionów obsługujących strefy dostępności. W innym przypadku instancje DPS z włączonymi prywatnymi punktami końcowymi mogą mieć zmniejszoną dostępność w sytuacji awarii.

Uwaga

Kwestie dotyczące lokalizacji danych:

Usługa DPS udostępnia globalny punkt końcowy urządzenia (global.azure-devices-provisioning.net). Jednak w przypadku korzystania z globalnego punktu końcowego dane mogą być przekierowywane poza regionem, w którym początkowo utworzono wystąpienie usługi DPS. Aby zapewnić miejsce przechowywania danych w początkowym regionie usługi DPS, użyj prywatnych punktów końcowych.

Konfigurowanie prywatnego punktu końcowego

Aby skonfigurować prywatny punkt końcowy, wykonaj następujące kroki:

  1. W portalu Azure otwórz zasób usługi DPS i wybierz kartę Sieć. Wybierz połączenia prywatnego punktu końcowego i + Prywatny punkt końcowy.

    Zrzut ekranu przedstawiający dodawanie nowego prywatnego punktu końcowego dla usługi DPS.

  2. Na stronie Tworzenie prywatnego punktu końcowego Podstawowe informacje wprowadź informacje wymienione w poniższej tabeli.

    Zrzut ekranu przedstawiający stronę podstaw prywatnych punktów końcowych.

    (No changes needed) Wartość
    Subskrypcja Wybierz żądaną subskrypcję platformy Azure, która będzie zawierać prywatny punkt końcowy.
    grupa zasobów Wybieranie lub tworzenie grupy zasobów zawierającej prywatny punkt końcowy
    nazwa Wprowadź nazwę prywatnego punktu końcowego
    Region Wybrany region musi być taki sam jak region zawierający VNET, ale nie musi być taki sam jak region, w którym znajduje się zasób usługi DPS.

    Wybierz Dalej: zasób, aby skonfigurować zasób, do którego wskazuje prywatny punkt końcowy.

  3. Na stronie Tworzenie prywatnego punktu końcowego wprowadź informacje wymienione w poniższej tabeli.

    Zrzut ekranu przedstawiający stronę zasobu prywatnego punktu końcowego.

    (No changes needed) Wartość
    Subskrypcja Wybierz subskrypcję platformy Azure zawierającą zasób usługi DPS, do którego wskazuje prywatny punkt końcowy.
    Typ zasobu Wybierz pozycję Microsoft.Devices/ProvisioningServices.
    Zasób Wybierz zasób DPS, do którego jest mapowany prywatny punkt końcowy.
    Docelowy zasób podrzędny Wybierz iotDps.

    Wskazówka

    Informacje na temat ustawienia Łączenie z zasobem platformy Azure według identyfikatora zasobu lub aliasu można znaleźć w sekcji Żądanie prywatnego punktu końcowego w niniejszym artykule.

    Wybierz pozycję Dalej: Konfiguracja , aby skonfigurować sieć wirtualną dla prywatnego punktu końcowego.

  4. Na stronie Tworzenie konfiguracji prywatnego punktu końcowego wybierz sieć wirtualną i podsieć, aby utworzyć prywatny punkt końcowy.

    Wybierz pozycję Dalej: Tagi i opcjonalnie podaj tagi dla zasobu.

    Zrzut ekranu przedstawiający stronę konfiguracji prywatnego punktu końcowego.

  5. Wybierz Przejrzyj i utwórz, a następnie Utwórz, aby utworzyć zasób prywatnego punktu końcowego.

Używanie prywatnych punktów końcowych z urządzeniami

Aby używać prywatnych punktów końcowych z kodem aprowizacji urządzeń, kod aprowizacji musi używać określonego punktu końcowego usługi dla wystąpienia DPS, jak to zostało pokazane na stronie przeglądu wystąpienia DPS w portalu Azure. Punkt końcowy usługi ma następujący formularz.

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

Większość przykładowego kodu pokazanego w naszej dokumentacji i zestawach SDK używa globalnego punktu końcowego urządzenia (global.azure-devices-provisioning.net) i zakresu identyfikatorów , aby rozwiązać określone wystąpienie usługi DPS. Użyj punktu końcowego usługi zamiast globalnego punktu końcowego urządzenia podczas nawiązywania połączenia z wystąpieniem usługi DPS przy użyciu prywatnych punktów końcowych, aby aprowizować urządzenia.

Na przykład, przykładowy klient aprowizacji urządzeń (pro_dev_client_sample) w Azure IoT C SDK jest zaprojektowany do używania Global Device Endpoint jako globalny URI aprowizacji (global_prov_uri) w prov_dev_client_sample.c

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");

Aby skorzystać z przykładu z prywatnym punktem końcowym, konieczna będzie zmiana wyróżnionego kodu powyżej, aby użyć punktu końcowego usługi DPS. Jeśli na przykład punkt końcowy usługi to mydps.azure-devices-provisioning.net, kod będzie wyglądać następująco.

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");
    }

Żądanie prywatnego punktu końcowego

Można wystąpić o prywatny punkt końcowy do wystąpienia usługi DPS, korzystając z identyfikatora zasobu. Aby złożyć to żądanie, właściciel zasobu musi podać identyfikator zasobu.

  1. Identyfikator zasobu jest udostępniany na karcie właściwości zasobu usługi DPS, jak pokazano poniżej.

    Zrzut ekranu przedstawiający kartę Właściwości usługi DPS.

    Ostrożność

    Identyfikator zasobu zawiera identyfikator subskrypcji.

  2. Po uzyskaniu identyfikatora zasobu wykonaj kroki opisane w instrukcji Konfigurowanie prywatnego punktu końcowego aby wykonać krok 3 na stronie Tworzenie prywatnego punktu końcowego. Wybierz Połącz z zasobem Azure poprzez identyfikator lub alias zasobu, następnie wprowadź informacje w poniższej tabeli.

    (No changes needed) Wartość
    Identyfikator zasobu lub alias Wprowadź identyfikator dla zasobu usługi DPS.
    Docelowy zasób podrzędny Wprowadź iotDps
    Komunikat żądania Wprowadź komunikat żądania dla właściciela zasobu usługi DPS.
    Na przykład
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Wybierz pozycję Dalej: Konfiguracja , aby skonfigurować sieć wirtualną dla prywatnego punktu końcowego.

  3. Na stronie Tworzenie konfiguracji prywatnego punktu końcowego wybierz sieć wirtualną i podsieć, aby utworzyć prywatny punkt końcowy.

    Wybierz pozycję Dalej: Tagi i opcjonalnie podaj tagi dla zasobu.

  4. Wybierz pozycję Przejrzyj i utwórz, a następnie Utwórz, aby utworzyć żądanie prywatnego punktu końcowego.

  5. Właściciel usługi DPS widzi żądanie prywatnego punktu końcowego na liście Połączenia prywatnego punktu końcowego na karcie Sieci usługi DPS. Na tej stronie właściciel może zatwierdzić lub odrzucić żądanie prywatnego punktu końcowego.

    Zrzut ekranu przedstawiający zatwierdzenie żądania prywatnego punktu końcowego.

Cennik prywatnych punktów końcowych

Aby uzyskać szczegółowe informacje o cenach, zobacz Cennik usługi Azure Private Link.

Następne kroki

Dowiedz się więcej o funkcjach zabezpieczeń usługi DPS: