Compatibilidad de Azure IoT Hub Device Provisioning Service (DPS) con redes virtuales

En este artículo se presenta el patrón de conectividad de red virtual (VNET) para el aprovisionamiento de dispositivos IoT con centros de IoT mediante DPS. Este patrón proporciona conectividad privada entre los dispositivos, DPS y el centro de IoT dentro de una red virtual de Azure propiedad del cliente.

En la mayoría de los escenarios en los que DPS está configurado con una red virtual, ioT Hub también está configurado en la misma red virtual. Para información más específica sobre la compatibilidad y la configuración de una red virtual para instancias de IoT Hub, consulte Compatibilidad de IoT Hub con redes virtuales mediante Private Link e identidad administrada.

Introducción

De forma predeterminada, los nombres de host de DPS se asignan a un punto de conexión público con una dirección IP enrutable públicamente a través de Internet. Este punto de conexión público es visible para todos los clientes. Los dispositivos IoT a través de redes de área extensa y redes locales pueden intentar acceder al punto de conexión público.

Por varios motivos, es posible que los clientes deseen restringir la conectividad a los recursos de Azure, como DPS. Estas razones incluyen las siguientes:

  • Impedir la exposición de la conexión a través de Internet pública. La exposición puede reducirse introduciendo más capas de seguridad a través del aislamiento de nivel de red para los recursos de IoT Hub y DPS

  • Habilitación de una experiencia de conectividad privada desde los recursos de la red local, lo que garantiza que sus datos y tráfico se transmiten directamente a la red troncal de Azure.

  • Prevención de ataques de exfiltración de redes locales confidenciales.

  • Seguimiento de los patrones de conectividad generales de Azure establecidos mediante puntos de conexión privados.

Entre los enfoques comunes para restringir la conectividad se incluyen las reglas de filtro de direcciones IP de DPS y la red virtual (VNET) con puntos de conexión privados. El objetivo de este artículo es describir el enfoque de la red virtual para DPS con puntos de conexión privados.

Los dispositivos que operan en redes locales pueden usar el emparejamiento privado de red privada virtual (VPN) o ExpressRoute para conectarse a una red virtual en Azure y acceder a los recursos de DPS a través de puntos de conexión privados.

Un punto de conexión privado es una dirección IP privada asignada en una red virtual propiedad de un cliente a través de la cual se puede acceder a un recurso de Azure. Al tener un punto de conexión privado para el recurso de DPS, puede permitir que los dispositivos que operan dentro de la red virtual soliciten el aprovisionamiento por el recurso de DPS sin permitir el tráfico al punto de conexión público. Cada recurso de DPS puede admitir varios puntos de conexión privados, cada uno de los cuales puede encontrarse en una red virtual en una región diferente.

Requisitos previos

Antes de continuar, asegúrese de que se cumplen los requisitos previos siguientes:

Limitaciones del punto de conexión privado

Tenga en cuenta las siguientes limitaciones actuales de DPS cuando use puntos de conexión privados:

  • Los puntos de conexión privados no funcionan cuando el recurso de DPS y el centro de IoT vinculado se encuentran en nubes diferentes. Por ejemplo, Azure Government y Azure global.

  • Los puntos de conexión privados de DPS usan Azure Private Link, que solo se admiten en regiones públicas. Para más información, consulte Disponibilidad de Azure Private Link.

  • Actualmente, las directivas de asignación personalizadas con Azure Functions para DPS no funcionan cuando la función de Azure está bloqueada en una red virtual y puntos de conexión privados.

  • La compatibilidad actual de la red virtual de DPS es solo para la entrada de datos en DPS. La salida de datos, que es el tráfico desde DPS hasta IoT Hub, usa un mecanismo de servicio a servicio interno en lugar de una red virtual dedicada. La compatibilidad con el bloqueo de salida basado en red virtual completa entre DPS e IoT Hub no está disponible actualmente.

  • La directiva de asignación de latencia más baja se usa para asignar un dispositivo al centro de IoT con la latencia más baja. Esta directiva de asignación no es fiable en un entorno de red virtual.

  • Normalmente, la habilitación de uno o varios puntos de conexión privados implica deshabilitar el acceso público a la instancia de DPS. Una vez deshabilitado el acceso público, ya no puede usar Azure Portal para administrar las inscripciones. En su lugar, puede administrar las inscripciones con la CLI de Azure, PowerShell o las API de servicio desde máquinas que estén dentro de las redes virtuales o puntos de conexión privados configurados en la instancia de DPS.

  • Al usar puntos de conexión privados, se recomienda implementar DPS en una de las regiones que sean compatibles con Availability Zones. De lo contrario, las instancias de DPS con puntos de conexión privados habilitados pueden ver una disponibilidad reducida en caso de interrupciones.

Nota:

Consideración sobre la residencia de datos:

DPS proporciona un punto de conexión global del dispositivo (global.azure-devices-provisioning.net). Sin embargo, cuando se usa el punto de conexión global, los datos se pueden redirigir fuera de la región en la que se creó inicialmente la instancia de DPS. Para garantizar la residencia de datos dentro de la región de DPS inicial, use puntos de conexión privados.

Configuración de un punto de conexión privado

Para configurar un punto de conexión privado, siga estos pasos:

  1. En Azure Portal, abra el recurso de DPS y seleccione la pestaña Redes. Seleccione Conexiones de punto de conexión privado y + Punto de conexión privado.

    Screenshot that shows adding a new private endpoint for DPS.

  2. En la página Crear un punto de conexión privado Aspectos básicos, escriba la información mencionada en la tabla siguiente.

    Screenshot that shows the private endpoints basics page.

    Campo Value
    Suscripción Elija la suscripción de Azure que desea que contenga el punto de conexión privado.
    Grupo de recursos Elija o cree un grupo de recursos que contenga el punto de conexión privado.
    Nombre Escriba un nombre para el punto de conexión privado.
    Región La región elegida debe ser la misma que la región que contiene la red virtual, pero no tiene que ser la misma que el recurso de DPS.

    Seleccione Siguiente: recurso para configurar el recurso al que apunta el punto de conexión privado.

  3. En la página Crear un recurso de punto de conexión privado, escriba la información mencionada en la tabla siguiente.

    Screenshot that shows the private endpoint resource page.

    Campo Value
    Suscripción Elija la suscripción de Azure que contiene el recurso de DPS al que apunta el punto de conexión privado.
    Tipo de recurso Elija Microsoft.Devices/ProvisioningServices.
    Recurso Seleccione el recurso de DPS al que se asigna el punto de conexión privado.
    Recurso secundario de destino Seleccione iotDps.

    Sugerencia

    En la sección Solicitud de un punto de conexión privado de este artículo se proporciona información sobre la opción de configuración Conéctese a un recurso de Azure por identificador de recurso o alias.

    Seleccione Siguiente: Configuración para configurar la red virtual para el punto de conexión privado.

  4. En la página Crear un punto de conexión privado de la sección Configuración, elija la red virtual y la subred donde se creará el punto de conexión privado.

    Seleccione Siguiente: Etiquetas y, opcionalmente, proporcione las etiquetas para el recurso.

    Screenshot that shows the private endpoint configuration page.

  5. Seleccione Revisar y crear y, a continuación, Crear para crear el recurso de punto de conexión privado.

Uso de puntos de conexión privados con dispositivos

Para usar puntos de conexión privados con código de aprovisionamiento de dispositivos, el código de aprovisionamiento debe usar el punto de conexión de servicio específico para la instancia de DPS, como se muestra en la página de información general de la instancia de DPS en Azure Portal. El punto de conexión de servicio tiene el siguiente formulario.

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

La mayor parte del código de ejemplo que se muestra en nuestra documentación y SDK, usa el punto de conexión de dispositivo global (global.azure-devices-provisioning.net) y el ámbito de identificador para resolver una instancia de DPS determinado. Use el punto de conexión de servicio en lugar del punto de conexión global del dispositivo al conectarse a una instancia de DPS mediante puntos de conexión privados para aprovisionar los dispositivos.

Por ejemplo, la muestra de cliente del dispositivo de aprovisionamiento (pro_dev_client_sample) en SDK de Azure IoT está diseñado para usar el punto de conexión de dispositivo global como URI de aprovisionamiento global (global_prov_uri) en 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");

Para usar la muestra con un punto de conexión privado, el código resaltado anteriormente se cambiaría para usar el punto de conexión de servicio para el recurso de DPS. Por ejemplo, si el punto de conexión de servicio fuera mydps.azure-devices-provisioning.net, el código tendría el aspecto siguiente.

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

Solicitud de un punto de conexión privado

Puede solicitar un punto de conexión privado a una instancia de DPS por identificador de recurso. Para hacer esta solicitud, necesita que el propietario del recurso le proporcione el identificador de este.

  1. El identificador de recurso se proporciona en la pestaña Propiedades del recurso de DPS, como se muestra a continuación.

    Screenshot that shows the DPS Properties tab.

    Precaución

    Tenga en cuenta que el identificador de recurso contiene el identificador de suscripción.

  2. Una vez que tenga el identificador de recurso, siga los pasos descritos anteriormente en Configuración de un punto de conexión privado hasta el paso 3 en la página Crear un recurso de punto de conexión de la sección Recurso. Seleccione Conectar a un recurso de Azure por identificador de recurso o alias y escriba la información de la tabla siguiente.

    Campo Value
    Identificador de recurso o alias Escriba el identificador de recurso para el recurso de DPS.
    Recurso secundario de destino Escriba iotDps.
    Mensaje de solicitud Escriba un mensaje de solicitud para el propietario del recurso de DPS.
    Por ejemplo:
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Seleccione Siguiente: Configuración para configurar la red virtual para el punto de conexión privado.

  3. En la página Crear un punto de conexión privado de la sección Configuración, elija la red virtual y la subred donde se creará el punto de conexión privado.

    Seleccione Siguiente: Etiquetas y, opcionalmente, proporcione las etiquetas para el recurso.

  4. Seleccione Revisar y crear y, a continuación, Crear para crear la solicitud del punto de conexión privado.

  5. El propietario de DPS ve la solicitud de punto de conexión privado en la lista Conexiones de punto de conexión privado en la pestaña Redes de DPS. En esa página, el propietario puede aprobar o rechazar la solicitud del punto de conexión privado.

    Screenshot that shows the private endpoint request approval.

Precios de los puntos de conexión privados

Para más información sobre los precios, consulte Precios de Azure Private Link.

Pasos siguientes

Use los vínculos siguientes para obtener más información sobre las características de seguridad de DPS: