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 urządzeń IoT aprowizowania za pomocą centrów IoT przy użyciu usługi 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 publicznym routingiem adresu IP za pośrednictwem Internetu. 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

  • Włączenie środowiska łączności prywatnej z zasobów sieci lokalnej zapewnia, że dane i ruch są przesyłane bezpośrednio do sieci szkieletowej platformy Azure.

  • Zapobieganie atakom eksfiltracji z poufnych sieci lokalnych.

  • Po ustanowieniu wzorców łączności dla całej 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 prywatnej komunikacji równorzędnej usługi ExpressRoute w celu nawiązania połączenia z siecią wirtualną na platformie Azure i uzyskać 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 usługi DPS, można zezwolić urządzeniom działającym w sieci wirtualnej na żądanie aprowizacji przez zasób usługi 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 sieci wirtualnej usługi DPS dotyczy tylko danych przychodzących 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 sieci wirtualnej 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łączenie co najmniej jednego prywatnego punktu końcowego zwykle polega na wyłączeniu publicznego dostępu do wystąpienia 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 interfejsu wiersza polecenia platformy Azure, programu PowerShell lub interfejsów API usługi z maszyn w sieciach wirtualnych/prywatnych punktach 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 przeciwnym razie wystąpienia usługi DPS z włączonymi prywatnymi punktami końcowymi mogą spowodować zmniejszenie dostępności w przypadku awarii.

Uwaga

Zagadnienia dotyczące rezydencji 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 witrynie Azure Portal otwórz zasób usługi DPS i wybierz kartę Sieć. Wybierz pozycję Połączenia prywatnego punktu końcowego i + Prywatny punkt końcowy.

    Screenshot that shows adding a new private endpoint for DPS.

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

    Screenshot that shows the private endpoints basics page.

    Pole 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/nazwisko Wprowadź nazwę prywatnego punktu końcowego
    Region Wybrany region musi być taki sam jak region zawierający sieć wirtualną, ale nie musi być taki sam jak zasób usługi DPS.

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

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

    Screenshot that shows the private endpoint resource page.

    Pole 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 usługi DPS, do którego jest mapowy prywatny punkt końcowy.
    Docelowy zasób podrzędny Wybierz pozycję iotDps.

    Napiwek

    Informacje na temat Połączenie zasobu platformy Azure według identyfikatora zasobu lub ustawienia aliasu są dostępne w sekcji Żądanie prywatnego punktu końcowego w tym 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.

    Screenshot that shows the private endpoint configuration page.

  5. Wybierz pozycję Przejrzyj i utwórz , a następnie pozycję 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 usługi DPS, jak pokazano na stronie przeglądu wystąpienia usługi DPS w witrynie Azure Portal. 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ład aprowizacji urządzenia klienckiego (pro_dev_client_sample) w zestawie SDK języka C usługi Azure IoT jest przeznaczony do używania globalnego punktu końcowego urządzenia jako identyfikatora URI globalnej 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 użyć przykładu z prywatnym punktem końcowym, wyróżniony kod powyżej zostanie zmieniony, aby użyć punktu końcowego usługi dla zasobu 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

Prywatny punkt końcowy można zażądać do wystąpienia usługi DPS według identyfikatora zasobu. Aby wysłać to żądanie, potrzebny jest właściciel zasobu, aby podać Ci identyfikator zasobu.

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

    Screenshot that shows the DPS Properties tab.

    Uwaga

    Należy pamiętać, że identyfikator zasobu zawiera identyfikator subskrypcji.

  2. Po utworzeniu identyfikatora zasobu wykonaj powyższe kroki opisane w temacie Konfigurowanie prywatnego punktu końcowego , aby wykonać krok 3 na stronie Tworzenie zasobu prywatnego punktu końcowego . Wybierz Połączenie do zasobu platformy Azure według identyfikatora zasobu lub aliasu, a następnie wprowadź informacje w poniższej tabeli.

    Pole Wartość
    Identyfikator zasobu lub alias Wprowadź identyfikator zasobu dla zasobu usługi DPS.
    Docelowy zasób podrzędny Wprowadź wartość 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.

    Screenshot that shows the private endpoint request approval.

Cennik prywatnych punktów końcowych

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

Następne kroki

Skorzystaj z poniższych linków, aby dowiedzieć się więcej o funkcjach zabezpieczeń usługi DPS: