Prise en charge des réseaux virtuels dans le service Azure IoT Hub Device Provisioning (DPS)

Cet article présente le modèle de connectivité de réseau virtuel pour le provisionnement des appareils IoT avec des hubs IoT à l’aide de DPS. Ce modèle fournit une connectivité privée entre les appareils, DPS et le hub IoT au sein d’un réseau virtuel Azure appartenant à un client.

Dans la plupart des scénarios où DPS est configuré avec un réseau virtuel, votre IoT Hub est également configuré dans le même réseau virtuel. Pour plus d’informations spécifiques sur la prise en charge et la configuration du réseau virtuel pour des hubs IoT, consultez Prise en charge des réseaux virtuels par IoT Hub.

Présentation

Par défaut, les noms d'hôtes DPS sont mappés à un point de terminaison public avec une adresse IP routable publiquement via Internet. Ce point de terminaison public est visible par tous les clients. Les appareils IoT sur des réseaux étendus et des réseaux locaux peuvent essayer d’accéder au point de terminaison public.

Pour plusieurs raisons, les clients peuvent souhaiter limiter la connectivité aux ressources Azure, telles que DPS. Les raisons sont les suivantes :

  • Empêchez l’exposition de la connexion sur l’Internet public. Vous pouvez réduire l’exposition en introduisant des couches supplémentaires de sécurité via l’isolement réseau pour votre IoT Hub et vos ressources DPS

  • Permettre une expérience de connectivité privée à partir de vos ressources réseau sur site en garantissant que vos données et votre trafic sont transmis directement au réseau principal Azure.

  • Empêcher les attaques par exfiltration à partir de réseaux locaux sensibles.

  • Suivre des modèles de connectivité établis à l'échelle d’Azure en utilisant des points de terminaison privés.

Les approches courantes de limitation de la connectivité incluent les règles de filtre IP DPS et le réseau virtuel (VNET) avec des points de terminaison privés. L’objectif de cet article est de décrire l’approche de réseau virtuel pour DPS à l’aide de points de terminaison privés.

Les appareils qui fonctionnent sur des réseaux locaux peuvent utiliser un réseau privé virtuel (VPN) ou l’homologation privée ExpressRoute pour se connecter à un réseau virtuel dans Azure et accéder aux ressources DPS via des points de terminaison privés.

Un point de terminaison privé est une adresse IP privée attribuée à l'intérieur d'un réseau virtuel appartenant au client, qui permet l’accès à une ressource Azure. En ayant un point de terminaison privé pour votre ressource DPS, vous pouvez autoriser les appareils qui fonctionnent à l’intérieur de votre réseau virtuel à demander l’approvisionnement par votre ressource DPS sans autoriser le trafic vers le point de terminaison public. Chaque ressource DPS peut prendre en charge plusieurs points de terminaison privés, chacun d’entre eux pouvant se trouver dans un réseau virtuel d’une autre région.

Prérequis

Avant de commencer, assurez-vous que les conditions préalables suivantes sont remplies :

Limitations de point de terminaison privé

Notez les limitations actuelles suivantes pour DPS lors de l’utilisation de points de terminaison privés :

  • Les points de terminaison privés ne fonctionnent pas lorsque la ressource DPS et le hub IoT lié se trouvent dans différents clouds. Par exemple, Azure Government et Azure international.

  • Les points de terminaison privés dans DPS utilisent Azure Private Link, qui sont uniquement pris en charge dans les régions publiques. Pour plus d’informations, consultez Disponibilité d’Azure Private Link.

  • Actuellement, les stratégies d’allocation personnalisées avec Azure Functions pour DPS ne fonctionnent pas lorsque la fonction Azure est verrouillée sur un réseau virtuel et des points de terminaison privés.

  • La prise en charge actuelle du réseau virtuel DPS concerne l’entrée de données dans DPS uniquement. La sortie de données, qui est le trafic de DPS vers IoT Hub, utilise un mécanisme de service à service interne plutôt qu’un réseau virtuel dédié. La prise en charge du verrouillage complet de la sortie basée sur un réseau virtuel entre DPS et IoT Hub n’est actuellement pas disponible.

  • La stratégie d’allocation de latence la plus faible est utilisée pour affecter un appareil à IoT Hub avec la latence la plus faible. Cette stratégie d’allocation n’est pas fiable dans un environnement de réseau virtuel.

  • L’activation d’un ou de plusieurs points de terminaison privés implique généralement la désactivation de l’accès public à votre instance DPS. Une fois l’accès public désactivé, vous ne pouvez plus utiliser les Portail Azure pour gérer les inscriptions. Au lieu de cela, vous pouvez gérer les inscriptions à l’aide d’Azure CLI, de PowerShell ou d’API de service à partir de machines à l’intérieur du ou des points de terminaison virtuels/privés configurés sur l’instance DPS.

  • Lorsque vous utilisez des points de terminaison privés, nous vous recommandons de déployer DPS dans l’une des régions qui prennent en charge les Zones de disponibilité. Dans le cas contraire, les instances DPS avec des points de terminaison privés activés peuvent présenter une disponibilité réduite en cas de panne.

Remarque

Considération relative à la résidence des données :

DPS fournit un point de terminaison d’appareil global (global.azure-devices-provisioning.net). Cependant, lorsque vous utilisez le point de terminaison global, vos données peuvent être redirigées en dehors de la région où l’instance DPS a été initialement créée. Pour garantir la résidence des données dans la région DPS initiale, utilisez des points de terminaison privés.

Créer un point de terminaison privé

Pour configurer un point de terminaison privé, procédez comme suit :

  1. Dans le Portail Azure, ouvrez votre ressource DPS et sélectionnez l’onglet Mise en réseau. Sélectionnez connexions de point de terminaison privé et + point de terminaison privé.

    Screenshot that shows adding a new private endpoint for DPS.

  2. Dans la page Créer un point de terminaison privé De base, entrez les informations mentionnées dans le tableau suivant.

    Screenshot that shows the private endpoints basics page.

    Champ Valeur
    Abonnement Choisissez l’abonnement Azure de votre choix pour contenir le point de terminaison privé.
    Groupe de ressources Choisissez ou créez un groupe de ressources pour contenir le point de terminaison privé
    Nom Entrez un nom pour votre point de terminaison privé
    Région La région choisie doit être la même que la région qui contient le réseau virtuel, mais elle n’a pas besoin d’être identique à la ressource DPS.

    Sélectionnez Suivant : Ressource pour configurer la ressource vers laquelle pointe le point de terminaison privé.

  3. Dans la page Créer une ressource de point de terminaison privé, entrez les informations mentionnées dans le tableau suivant.

    Screenshot that shows the private endpoint resource page.

    Champ Valeur
    Abonnement Choisissez l’abonnement Azure qui contient la ressource DPS vers laquelle pointe votre point de terminaison privé.
    Type de ressource Choisissez Microsoft.Devices/ProvisioningServices.
    Ressource Sélectionnez la ressource DPS à laquelle le point de terminaison privé est mappé.
    Sous-ressource cible Sélectionnez iotDps.

    Conseil

    Les informations sur le paramètre Se connecter à une ressource Azure par ID de ressource ou alias sont fournies dans la section Demander un point de terminaison privé de cet article.

    Sélectionnez Suivant : Configuration pour configurer le réseau virtuel pour le point de terminaison privé.

  4. Sur la page Créer un point de terminaison privé - Configuration, choisissez votre réseau virtuel et votre sous-réseau où le point de terminaison privé sera créé.

    Sélectionnez Suivant : Balises et éventuellement fournir les balises pour votre ressource.

    Screenshot that shows the private endpoint configuration page.

  5. Sélectionnez Vérifier + créer , puis Créer pour créer votre ressource de point de terminaison privé.

Utiliser des points de terminaison privés avec des appareils

Pour utiliser des points de terminaison privés avec du code de provisionnement des appareils, votre code de provisionnement doit utiliser le point de terminaison de service spécifique de votre instance DPS, comme indiqué dans la page de vue d’ensemble de votre instance DPS dans le portail Azure. Le point de terminaison de service se présente sous la forme suivante.

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

La plupart des exemples de code présentés dans notre documentation et nos SDK utilisent le point de terminaison d’appareil global (global.azure-devices-provisioning.net) et l’étendue de l’ID pour résoudre une instance DPS particulière. Utilisez le point de terminaison de service à la place du point de terminaison d’appareil global lors de la connexion à une instance DPS à l’aide de points de terminaison privés pour provisionner vos appareils.

Par exemple, l’exemple de client d’appareil d’approvisionnement (pro_dev_client_sample) dans le Kit de développement logiciel (SDK) Azure IOT C est conçu pour utiliser le point de terminaison d’appareil global en tant qu’URI d’approvisionnement global (global_prov_uri) dans 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");

Pour utiliser l’exemple avec un point de terminaison privé, le code en surbrillance ci-dessus est modifié afin d’utiliser le point de terminaison de service pour votre ressource DPS. Par exemple, si votre point de terminaison de service était mydps.azure-devices-provisioning.net, le code se présenterait comme suit.

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

Demander un point de terminaison privé

Vous pouvez demander un point de terminaison privé à une instance DPS par ID de ressource. Pour effectuer cette demande, le propriétaire de la ressource doit vous fournir l’ID de ressource.

  1. L’ID de ressource est fourni sous l’onglet Propriétés de la ressource DPS, comme indiqué ci-dessous.

    Screenshot that shows the DPS Properties tab.

    Attention

    N’oubliez pas que l’ID de ressource contient l’ID d’abonnement.

  2. Une fois que vous disposez de l’ID de ressource, suivez la procédure ci-dessus dans Configurer un point de terminaison privé jusqu’à l’étape 3 sur la page Créer un point de terminaison privé - Ressource. Sélectionnez Connecter à une ressource Azure par ID de ressource ou alias, puis entrez les informations dans le tableau suivant.

    Champ Value
    ID de ressource ou alias Entrez l’ID de ressource pour la ressource DPS.
    Sous-ressource cible Entrez iotDps
    Message de requête Entrez un message de demande pour le propriétaire de la ressource DPS.
    Par exemple,
    Please approve this new private endpoint
    for IoT devices in site 23 to access this DPS instance

    Sélectionnez Suivant : Configuration pour configurer le réseau virtuel pour le point de terminaison privé.

  3. Sur la page Créer un point de terminaison privé - Configuration, choisissez le réseau virtuel et le sous-réseau où le point de terminaison privé sera créé.

    Sélectionnez Suivant : Balises et éventuellement fournir les balises pour votre ressource.

  4. Sélectionnez Vérifier + créer , puis Créer pour créer votre demande de point de terminaison privé.

  5. Le propriétaire DPS voit la demande de point de terminaison privé dans la liste des connexions de point de terminaison privé sous l’onglet Mise en réseau DPS. Sur cette page, le propriétaire peut approuver ou rejeter la demande de point de terminaison privé.

    Screenshot that shows the private endpoint request approval.

Tarification des points de terminaison privés

Pour plus d’informations sur les tarifs, consultez Tarification Liaison privée Azure.

Étapes suivantes

Utilisez les liens ci-dessous pour en savoir plus sur les fonctionnalités de sécurité DPS :