Prise en charge par IoT Hub des réseaux virtuels avec Private Link et Managed IdentityIoT Hub support for virtual networks with Private Link and Managed Identity

Par défaut, les noms d'hôtes d’IoT Hub sont mappés à un point de terminaison public avec une adresse IP de routage public sur Internet.By default, IoT Hub's hostnames map to a public endpoint with a publicly routable IP address over the internet. Différents clients partagent ce point de terminaison public IoT Hub, et tous les appareils IoT qui se trouvent sur des réseaux étendus et sur des réseaux locaux peuvent y accéder.Different customers share this IoT Hub public endpoint, and IoT devices in over wide-area networks and on-premises networks can all access it.

Point de terminaison public IoT Hub

Les fonctionnalités IoT Hub, notamment le routage de messages, le chargement de fichiers et l'importation/exportation d’appareils en bloc ont également besoin d’une connectivité IoT Hub vers une ressource Azure appartenant au client via son point de terminaison public.IoT Hub features including message routing, file upload, and bulk device import/export also require connectivity from IoT Hub to a customer-owned Azure resource over its public endpoint. L’ensemble de ces chemins de connectivité constitue le trafic de sortie entre IoT Hub et les ressources du client.These connectivity paths collectively make up the egress traffic from IoT Hub to customer resources.

Plusieurs raisons peuvent vous pousser à restreindre la connectivité aux ressources Azure (y compris IoT Hub) via votre propre réseau virtuel.You might want to restrict connectivity to your Azure resources (including IoT Hub) through a VNet that you own and operate. Les raisons sont les suivantes :These reasons include:

  • Introduire un isolement réseau pour votre hub IoT en empêchant l’exposition de la connectivité à l’Internet public.Introducing network isolation for your IoT hub by preventing connectivity exposure to the public internet.

  • 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.Enabling a private connectivity experience from your on-premises network assets ensuring that your data and traffic is transmitted directly to Azure backbone network.

  • Empêcher les attaques par exfiltration à partir de réseaux locaux sensibles.Preventing exfiltration attacks from sensitive on-premises networks.

  • Suivre des modèles de connectivité établis à l'échelle d’Azure en utilisant des points de terminaison privés.Following established Azure-wide connectivity patterns using private endpoints.

Cet article explique comment atteindre ces objectifs en utilisant Azure Private Link pour la connectivité d'entrée vers IoT Hub et l'exception des services Microsoft approuvés pour la connectivité de sortie d’IoT Hub vers d'autres ressources Azure.This article describes how to achieve these goals using Azure Private Link for ingress connectivity to IoT Hub and using trusted Microsoft services exception for egress connectivity from IoT Hub to other Azure resources.

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.A private endpoint is a private IP address allocated inside a customer-owned VNet via which an Azure resource is reachable. Avec Azure Private Link, vous avez la possibilité de configurer un point de terminaison privé grâce auquel votre hub IoT pourra autoriser les services situés à l'intérieur de votre réseau virtuel à atteindre IoT Hub sans avoir besoin d'envoyer du trafic au point de terminaison public d’IoT Hub.Through Azure Private Link, you can set up a private endpoint for your IoT hub to allow services inside your VNet to reach IoT Hub without requiring traffic to be sent to IoT Hub's public endpoint. De même, vos appareils locaux peuvent utiliser un réseau privé virtuel (VPN) ou un peering ExpressRoute pour obtenir une connectivité à votre réseau virtuel et à votre hub IoT (via son point de terminaison privé).Similarly, your on-premises devices can use Virtual Private Network (VPN) or ExpressRoute peering to gain connectivity to your VNet and your IoT Hub (via its private endpoint). Il vous est ainsi possible de restreindre ou de bloquer entièrement la connectivité aux points de terminaison publics de votre hub IoT à l’aide du filtre IP IoT Hub ou du bouton bascule d’accès au réseau public.As a result, you can restrict or completely block off connectivity to your IoT hub's public endpoints by using IoT Hub IP filter or the public network access toggle. Cette approche permet de maintenir la connectivité des appareils à votre hub à l’aide du point de terminaison privé.This approach keeps connectivity to your Hub using the private endpoint for devices. Cette configuration s’adresse principalement aux appareils situés à l'intérieur d'un réseau local.The main focus of this setup is for devices inside an on-premises network. Cette configuration n'est pas conseillée pour les appareils déployés sur un réseau étendu.This setup isn't advised for devices deployed in a wide-area network.

Entrée du réseau virtuel IoT Hub

Avant de commencer, assurez-vous que les conditions préalables suivantes sont remplies :Before proceeding ensure that the following prerequisites are met:

Configurer un point de terminaison privé pour l'entrée IoT HubSet up a private endpoint for IoT Hub ingress

Un point de terminaison privé fonctionne pour des API d’appareil IoT Hub (comme des messages appareil-à-cloud), ainsi que des API de service (comme la création et la mise à jour d’appareils).Private endpoint works for IoT Hub device APIs (like device-to-cloud messages) as well as service APIs (like creating and updating devices).

  1. Sur le Portail Azure, sélectionnez Mise en réseau, Connexion des points de terminaison privés, puis cliquez sur + Point de terminaison privé.In Azure portal, select Networking, Private endpoint connections, and click the + Private endpoint.

    Capture d’écran montrant où ajouter un point de terminaison privé pour IoT Hub

  2. Indiquez l’abonnement, le groupe de ressources, le nom et la région dans laquelle sera créé le nouveau point de terminaison privé.Provide the subscription, resource group, name, and region to create the new private endpoint in. Idéalement, il doit s’agir de la même région que celle de votre hub.Ideally, private endpoint should be created in the same region as your hub.

  3. Cliquez sur Suivant : Ressource, précisez l’abonnement de votre ressource IoT Hub, puis sélectionnez le type de ressource Microsoft.Devices/IotHubs, le nom de votre hub IoT comme ressource et la sous-ressource cible iotHub.Click Next: Resource, and provide the subscription for your IoT Hub resource, and select "Microsoft.Devices/IotHubs" as resource type, your IoT Hub name as resource, and iotHub as target subresource.

  4. Cliquez sur Suivant : Configuration et indiquez le réseau virtuel et le sous-réseau où le point de terminaison privé sera créé.Click Next: Configuration and provide your virtual network and subnet to create the private endpoint in. Sélectionnez l'option d'intégration dans zone DNS privée Azure, si vous le souhaitez.Select the option to integrate with Azure private DNS zone, if desired.

  5. Cliquez sur Suivant : Balises, et spécifiez si nécessaire les balises de votre ressource.Click Next: Tags, and optionally provide any tags for your resource.

  6. Cliquez sur Vérifier + Créer pour créer votre ressource de liaison privée.Click Review + create to create your private link resource.

Point de terminaison intégré compatible avec Event HubsBuilt-in Event Hub compatible endpoint

Le point de terminaison intégré compatible avec Event Hubs est également accessible via un point de terminaison privé.The built-in Event Hub compatible endpoint can also be accessed over private endpoint. Lorsque la liaison privée est configurée, vous devez voir une connexion de point de terminaison privé supplémentaire pour le point de terminaison intégré.When private link is configured, you should see an additional private endpoint connection for the built-in endpoint. C’est celle qui inclut servicebus.windows.net dans le nom de domaine complet.It's the one with servicebus.windows.net in the FQDN.

Image présentant deux points de terminaison privés en fonction de chaque liaison privée IoT Hub

Le filtre IP d’IoT Hub peut contrôler l’accès public au point de terminaison intégré.IoT Hub's IP filter can optionally control public access to the built-in endpoint.

Pour bloquer complètement l’accès réseau public à votre IoT Hub, désactivez l’accès au réseau public ou utilisez le filtre IP pour bloquer toutes les adresses IP, puis sélectionnez l’option permettant d’appliquer des règles au point de terminaison intégré.To completely block public network access to your IoT hub, turn off public network access or use IP filter to block all IP and select the option to apply rules to the built-in endpoint.

Pour plus d’informations sur les tarifs, consultez Tarification Liaison privée Azure.For pricing details, see Azure Private Link pricing.

Connectivité entrante d’IoT Hub vers d'autres ressources AzureEgress connectivity from IoT Hub to other Azure resources

IoT Hub peut se connecter à vos ressources Stockage Blob Azure, Event Hubs et Service Bus pour le routage des messages, le chargement des fichiers et l'importation/exportation d’appareils en bloc, via le point de terminaison public des ressources.IoT Hub can connect to your Azure blob storage, event hub, service bus resources for message routing, file upload, and bulk device import/export over the resources' public endpoint. Le fait de lier une ressource à un réseau virtuel bloque par défaut la connectivité à la ressource.Binding your resource to a VNet blocks connectivity to the resource by default. Par conséquent, cette configuration empêche IoT Hub d’envoyer des données à vos ressources.As a result, this configuration prevents IoT Hub's from working sending data to your resources. Pour corriger ce problème, activez la connectivité entre votre ressource IoT Hub et vos ressources de compte de stockage, Event Hubs ou Service Bus avec l'option du service Microsoft approuvé.To fix this issue, enable connectivity from your IoT Hub resource to your storage account, event hub, or service bus resources via the trusted Microsoft service option.

Activation de l’identité managée pour IoT HubTurn on managed identity for IoT Hub

Votre hub IoT doit disposer d’une identité managée affectée par le système pour que d’autres services puissent le trouver en tant que service Microsoft approuvé.To allow other services to find your IoT hub as a trusted Microsoft service, it must have a system-assigned managed identity.

  1. Accédez à Identité sur votre portail IoT Hub.Navigate to Identity in your IoT Hub portal

  2. Sous État, sélectionnez Activé, puis cliquez sur Enregistrer.Under Status, select On, then click Save.

    Capture d’écran montrant comment activer l’identité managée pour IoT Hub

Pour utiliser Azure CLI afin d’activer l’identité managée :To use Azure CLI to turn on managed identity:

az iot hub update --name <iot-hub-resource-name> --set identity.type="SystemAssigned"

Affecter une identité gérée à votre IoT Hub au moment de la création à l’aide du modèle ARMAssign managed identity to your IoT Hub at creation time using ARM template

Pour affecter une identité managée à votre hub IoT au moment du provisionnement des ressources, utilisez le modèle ARM ci-dessous.To assign managed identity to your IoT hub at resource provisioning time, use the ARM template below. Ce modèle ARM a deux ressources requises, qui doivent être déployées avant que ne soient créées d’autres ressources comme Microsoft.Devices/IotHubs/eventHubEndpoints/ConsumerGroups.This ARM template has two required resources, and they both need to be deployed before creating other resources like Microsoft.Devices/IotHubs/eventHubEndpoints/ConsumerGroups.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Devices/IotHubs",
      "apiVersion": "2020-03-01",
      "name": "<provide-a-valid-resource-name>",
      "location": "<any-of-supported-regions>",
      "identity": {
        "type": "SystemAssigned"
      },
      "sku": {
        "name": "<your-hubs-SKU-name>",
        "tier": "<your-hubs-SKU-tier>",
        "capacity": 1
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2018-02-01",
      "name": "createIotHub",
      "dependsOn": [
        "[resourceId('Microsoft.Devices/IotHubs', '<provide-a-valid-resource-name>')]"
      ],
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "0.9.0.0",
          "resources": [
            {
              "type": "Microsoft.Devices/IotHubs",
              "apiVersion": "2020-03-01",
              "name": "<provide-a-valid-resource-name>",
              "location": "<any-of-supported-regions>",
              "identity": {
                "type": "SystemAssigned"
              },
              "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
              }
            }
          ]
        }
      }
    }
  ]
}

Après avoir substitué les valeurs de votre ressource name, location, SKU.name et SKU.tier, vous pouvez utiliser l’interface de ligne de commande Azure pour déployer la ressource dans un groupe de ressources existant en utilisant :After substituting the values for your resource name, location, SKU.name and SKU.tier, you can use Azure CLI to deploy the resource in an existing resource group using:

az deployment group create --name <deployment-name> --resource-group <resource-group-name> --template-file <template-file.json>

Une fois la ressource créée, vous pouvez récupérer l'identité de service géré attribuée à votre hub en utilisant l’interface de ligne de commande Azure :After the resource is created, you can retrieve the managed service identity assigned to your hub using Azure CLI:

az resource show --resource-type Microsoft.Devices/IotHubs --name <iot-hub-resource-name> --resource-group <resource-group-name>

Tarifs de l’identité managéePricing for managed identity

La fonctionnalité d'exception des services internes Microsoft approuvés est gratuite.Trusted Microsoft first party services exception feature is free of charge. Les frais pour les comptes de stockage provisionnés, les hubs d'événements ou les ressources Service Bus s'appliquent séparément.Charges for the provisioned storage accounts, event hubs, or service bus resources apply separately.

Connectivité sortante vers les points de terminaison de stockage pour le routageEgress connectivity to storage account endpoints for routing

IoT Hub peut router les messages vers un compte de stockage détenu par le client.IoT Hub can route messages to a customer-owned storage account. Pour permettre à la fonctionnalité de routage d'accéder à un compte de stockage alors que des restrictions de pare-feu sont en place, votre hub IoT doit disposer d’une identité managée.To allow the routing functionality to access a storage account while firewall restrictions are in place, your IoT Hub needs to have a managed identity. Une fois qu’une identité managée est configurée, suivez la procédure ci-dessous pour donner à l’identité de ressource de votre hub l’autorisation Azure RBAC d’accéder à votre compte de stockage.Once a managed identity is provisioned, follow the steps below to give Azure RBAC permission to your hub's resource identity to access your storage account.

  1. Dans le portail Azure, accédez à l'onglet Contrôle d'accès (IAM) de votre compte de stockage, puis cliquez sur Ajouter dans la section Ajouter une attribution de rôle.In the Azure portal, navigate to your storage account's Access control (IAM) tab and click Add under the Add a role assignment section.

  2. Sélectionnez Contributeur aux données Blob du stockage (et non Contributeur ou Contributeur de compte de stockage) comme rôle, Utilisateur, groupe ou principal du service Azure AD comme Attribution de l’accès à, puis sélectionnez le nom de la ressource de votre hub IoT dans la liste déroulante.Select Storage Blob Data Contributor (not Contributor or Storage Account Contributor) as role, Azure AD user, group, or service principal as Assigning access to and select your IoT Hub's resource name in the drop-down list. Cliquez sur le bouton Enregistrer .Click the Save button.

  3. Accédez à l'onglet Pare-feux et réseaux virtuels de votre compte de stockage, puis activez l'option Autoriser l'accès à partir des réseaux sélectionnés.Navigate to the Firewalls and virtual networks tab in your storage account and enable Allow access from selected networks option. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder à ce compte de stockage.Under the Exceptions list, check the box for Allow trusted Microsoft services to access this storage account. Cliquez sur le bouton Enregistrer .Click the Save button.

  4. Sur la page des ressources de votre hub IoT, accédez à l'onglet Routage de messages.On your IoT Hub's resource page, navigate to Message routing tab.

  5. Accédez à la section Points de terminaison personnalisés et cliquez sur Ajouter.Navigate to Custom endpoints section and click Add. Sélectionnez Stockage comme type de point de terminaison.Select Storage as the endpoint type.

  6. Sur la page qui s'affiche, nommez votre point de terminaison, sélectionnez le conteneur que vous souhaitez utiliser dans votre stockage d’objets blob, indiquez l'encodage et le format du nom de fichier.On the page that shows up, provide a name for your endpoint, select the container that you intend to use in your blob storage, provide encoding, and file name format. Sélectionnez Basée sur l'identité comme type d'authentification de votre point de terminaison de stockage.Select Identity-based as the Authentication type to your storage endpoint. Cliquez sur le bouton Créer.Click the Create button.

Votre point de terminaison de stockage personnalisé est maintenant configuré pour utiliser l'identité attribuée par le système à votre hub, et il est autorisé à accéder à votre ressource de stockage malgré les restrictions de son pare-feu.Now your custom storage endpoint is set up to use your hub's system assigned identity, and it has permission to access your storage resource despite its firewall restrictions. Vous pouvez maintenant utiliser ce point de terminaison pour définir une règle de routage.You can now use this endpoint to set up a routing rule.

Connectivité sortante vers les points de terminaison de hubs d’événements pour le routageEgress connectivity to event hubs endpoints for routing

IoT Hub peut être configuré pour router les messages vers un espace de noms de hubs d’événements appartenant au client.IoT Hub can be configured to route messages to a customer-owned event hubs namespace. Pour permettre à la fonctionnalité de routage d'accéder à une ressource Event Hubs alors que des restrictions de pare-feu sont en place, votre hub IoT doit disposer d’une identité managée.To allow the routing functionality to access an event hubs resource while firewall restrictions are in place, your IoT Hub needs to have a managed identity. Une fois qu’une identité managée est créée, suivez la procédure ci-dessous pour donner à l’identité de ressource de votre hub l’autorisation Azure RBAC d’accéder à vos Event Hubs.Once a managed identity is created, follow the steps below to give Azure RBAC permission to your hub's resource identity to access your event hubs.

  1. Dans le portail Azure, accédez à l'onglet Contrôle d'accès (IAM) de vos hubs d’événements, puis cliquez sur Ajouter dans la section Ajouter une attribution de rôle.In the Azure portal, navigate to your event hubs Access control (IAM) tab and click Add under the Add a role assignment section.

  2. Sélectionnez Expéditeur de données Azure Event Hubs comme rôle, Utilisateur, groupe ou principal du service Azure AD comme option Attribution de l’accès aux applications, puis sélectionnez le nom de la ressource de votre hub IoT dans la liste déroulante.Select Event Hubs Data Sender as role, Azure AD user, group, or service principal as Assigning access to and select your IoT Hub's resource name in the drop-down list. Cliquez sur le bouton Enregistrer .Click the Save button.

  3. Accédez à l'onglet Pare-feux et réseaux virtuels de vos hubs d’événements, puis activez l'option Autoriser l'accès à partir des réseaux sélectionnés.Navigate to the Firewalls and virtual networks tab in your event hubs and enable Allow access from selected networks option. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder aux hubs d’événements.Under the Exceptions list, check the box for Allow trusted Microsoft services to access event hubs. Cliquez sur le bouton Enregistrer .Click the Save button.

  4. Sur la page des ressources de votre hub IoT, accédez à l'onglet Routage de messages.On your IoT Hub's resource page, navigate to Message routing tab.

  5. Accédez à la section Points de terminaison personnalisés et cliquez sur Ajouter.Navigate to Custom endpoints section and click Add. Sélectionnez Hubs d’événements comme type de point de terminaison.Select Event hubs as the endpoint type.

  6. Sur la page qui s’affiche, entrez un nom pour votre point de terminaison, et sélectionnez l’espace de noms et l’instance de vos hubs d’événements.On the page that shows up, provide a name for your endpoint, select your event hubs namespace and instance. Sélectionnez Basée sur l’identité comme Type d’authentification, puis cliquez sur le bouton Créer.Select Identity-based as the Authentication type, and click the Create button.

Votre point de terminaison de hubs d’événements personnalisé est maintenant configuré pour utiliser l'identité attribuée par le système à votre hub, et il est autorisé à accéder à votre ressource de hubs d’événements malgré les restrictions de son pare-feu.Now your custom event hubs endpoint is set up to use your hub's system assigned identity, and it has permission to access your event hubs resource despite its firewall restrictions. Vous pouvez maintenant utiliser ce point de terminaison pour définir une règle de routage.You can now use this endpoint to set up a routing rule.

Connectivité sortante vers les points de terminaison Service Bus pour le routageEgress connectivity to service bus endpoints for routing

IoT Hub peut être configuré pour router les messages vers un espace de noms Service Bus appartenant au client.IoT Hub can be configured to route messages to a customer-owned service bus namespace. Pour permettre à la fonctionnalité de routage d'accéder à une ressource Service Bus alors que des restrictions de pare-feu sont en place, votre hub IoT doit disposer d’une identité managée.To allow the routing functionality to access a service bus resource while firewall restrictions are in place, your IoT Hub needs to have a managed identity. Une fois qu’une identité managée est configurée, suivez la procédure ci-dessous pour donner à l’identité de ressource de votre hub l’autorisation Azure RBAC d’accéder à votre bus de services.Once a managed identity is provisioned, follow the steps below to give Azure RBAC permission to your hub's resource identity to access your service bus.

  1. Dans le portail Azure, accédez à l'onglet Contrôle d'accès (IAM) de Service Bus, puis cliquez sur Ajouter dans la section Ajouter une attribution de rôle.In the Azure portal, navigate to your service bus' Access control (IAM) tab and click Add under the Add a role assignment section.

  2. Sélectionnez Expéditeur de données Azure Service Bus comme rôle, Utilisateur, groupe ou principal du service Azure AD comme option Attribution de l’accès aux applications, puis sélectionnez le nom de la ressource de votre hub IoT dans la liste déroulante.Select Service bus Data Sender as role, Azure AD user, group, or service principal as Assigning access to and select your IoT Hub's resource name in the drop-down list. Cliquez sur le bouton Enregistrer .Click the Save button.

  3. Accédez à l'onglet Pare-feux et réseaux virtuels de Service Bus, puis activez l'option Autoriser l'accès à partir des réseaux sélectionnés.Navigate to the Firewalls and virtual networks tab in your service bus and enable Allow access from selected networks option. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder à Service Bus.Under the Exceptions list, check the box for Allow trusted Microsoft services to access this service bus. Cliquez sur le bouton Enregistrer .Click the Save button.

  4. Sur la page des ressources de votre hub IoT, accédez à l'onglet Routage de messages.On your IoT Hub's resource page, navigate to Message routing tab.

  5. Accédez à la section Points de terminaison personnalisés et cliquez sur Ajouter.Navigate to Custom endpoints section and click Add. Sélectionnez File d'attente Service Bus ou Rubrique Service Bus (selon le cas) comme type de point de terminaison.Select Service bus queue or Service Bus topic (as applicable) as the endpoint type.

  6. Sur la page qui s'affiche, nommez votre point de terminaison, sélectionnez l'espace de noms ainsi que la file d'attente ou la rubrique Service Bus (selon le cas).On the page that shows up, provide a name for your endpoint, select your service bus' namespace and queue or topic (as applicable). Sélectionnez Basée sur l’identité comme Type d’authentification, puis cliquez sur le bouton Créer.Select Identity-based as the Authentication type, and click the Create button.

Votre point de terminaison Service Bus personnalisé est maintenant configuré pour utiliser l'identité attribuée par le système à votre hub, et il est autorisé à accéder à votre ressource Service Bus malgré les restrictions de son pare-feu.Now your custom service bus endpoint is set up to use your hub's system assigned identity, and it has permission to access your service bus resource despite its firewall restrictions. Vous pouvez maintenant utiliser ce point de terminaison pour définir une règle de routage.You can now use this endpoint to set up a routing rule.

Connectivité sortante vers les comptes de stockage pour le chargement de fichiersEgress connectivity to storage accounts for file upload

La fonction de chargement de fichiers d’IoT Hub permet aux appareils de charger des fichiers sur un compte de stockage appartenant au client.IoT Hub's file upload feature allows devices to upload files to a customer-owned storage account. Pour que le chargement de fichiers puisse fonctionner, les deux appareils et IoT Hub doivent être connectés au compte de stockage.To allow the file upload to function, both devices and IoT Hub need to have connectivity to the storage account. Si des restrictions de pare-feu sont en place sur le compte de stockage, vos appareils doivent utiliser l'un des mécanismes du compte de stockage pris en charge (notamment les points de terminaison privés, les points de terminaison de service ou la configuration directe du pare-feu) pour obtenir une connectivité.If firewall restrictions are in place on the storage account, your devices need to use any of the supported storage account's mechanism (including private endpoints, service endpoints, or direct firewall configuration) to gain connectivity. De même, si des restrictions de pare-feu sont en place sur le compte de stockage, IoT Hub doit être configuré pour accéder à la ressource de stockage via l'exception des services Microsoft approuvés.Similarly, if firewall restrictions are in place on the storage account, IoT Hub needs to be configured to access the storage resource via the trusted Microsoft services exception. À cet effet, votre hub IoT doit disposer d’une identité managée.For this purpose, your IoT Hub must have a managed identity. Une fois qu’une identité managée est configurée, suivez la procédure ci-dessous pour donner à l’identité de ressource de votre hub l’autorisation Azure RBAC d’accéder à votre compte de stockage.Once a managed identity is provisioned, follow the steps below to give Azure RBAC permission to your hub's resource identity to access your storage account.

Important

La fonctionnalité de chargement de fichiers sur les appareils qui utilisent l’authentification par l’autorité de certification X.509 est en préversion publique, et le mode aperçu doit être activé.File upload functionality on devices that use X.509 certificate authority (CA) authentication is in public preview, and preview mode must be enabled. Elle est généralement disponible sur les appareils qui utilisent l’authentification par empreinte X.509.It is generally available on devices that use X.509 thumbprint authentication. Pour en savoir plus sur l’authentification X.509 avec IoT Hub, consultez les certificats X.509 pris en charge.To learn more about X.509 authentication with IoT Hub, see Supported X.509 certificates.

  1. Dans le portail Azure, accédez à l'onglet Contrôle d'accès (IAM) de votre compte de stockage, puis cliquez sur Ajouter dans la section Ajouter une attribution de rôle.In the Azure portal, navigate to your storage account's Access control (IAM) tab and click Add under the Add a role assignment section.

  2. Sélectionnez Contributeur aux données Blob du stockage (et non Contributeur ou Contributeur de compte de stockage) comme rôle, Utilisateur, groupe ou principal du service Azure AD comme Attribution de l’accès à, puis sélectionnez le nom de la ressource de votre hub IoT dans la liste déroulante.Select Storage Blob Data Contributor (not Contributor or Storage Account Contributor) as role, Azure AD user, group, or service principal as Assigning access to and select your IoT Hub's resource name in the drop-down list. Cliquez sur le bouton Enregistrer .Click the Save button.

  3. Accédez à l'onglet Pare-feux et réseaux virtuels de votre compte de stockage, puis activez l'option Autoriser l'accès à partir des réseaux sélectionnés.Navigate to the Firewalls and virtual networks tab in your storage account and enable Allow access from selected networks option. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder à ce compte de stockage.Under the Exceptions list, check the box for Allow trusted Microsoft services to access this storage account. Cliquez sur le bouton Enregistrer .Click the Save button.

  4. Sur la page des ressources de votre hub IoT, accédez à l'onglet Chargement de fichiers.On your IoT Hub's resource page, navigate to File upload tab.

  5. Sur la page qui s'affiche, sélectionnez le conteneur que vous comptez utiliser dans votre Stockage Blob, puis configurez les options Paramètres de notification de fichier, Durée de vie SAS, Durée de vie par défaut et Nombre maximal de distributions comme vous le souhaitez.On the page that shows up, select the container that you intend to use in your blob storage, configure the File notification settings, SAS TTL, Default TTL, and Maximum delivery count as desired. Sélectionnez Basée sur l'identité comme type d'authentification de votre point de terminaison de stockage.Select Identity-based as the Authentication type to your storage endpoint. Cliquez sur le bouton Créer.Click the Create button. Si vous recevez une erreur à cette étape, configurez temporairement votre compte de stockage afin d’autoriser l’accès à partir de tous les réseaux, puis réessayez.If you get an error at this step, temporarily set your storage account to allow access from All networks, then try again. Vous pouvez configurer le pare-feu sur le compte de stockage une fois la configuration du chargement de fichiers terminée.You can configure firewall on the storage account once the File upload configuration is complete.

Votre point de terminaison de stockage pour chargement de fichiers est maintenant configuré pour utiliser l'identité attribuée par le système à votre hub, et il est autorisé à accéder à votre ressource de stockage malgré les restrictions de son pare-feu.Now your storage endpoint for file upload is set up to use your hub's system assigned identity, and it has permission to access your storage resource despite its firewall restrictions.

Connectivité sortante vers les comptes de stockage pour l’importation/exportation d’appareils en blocEgress connectivity to storage accounts for bulk device import/export

IoT Hub prend en charge la fonctionnalité permettant d'importer/exporter en bloc les informations des appareils depuis/vers un stockage d’objets blob fourni par le client.IoT Hub supports the functionality to import/export devices' information in bulk from/to a customer-provided storage blob. Pour que la fonctionnalité d’importation/exportation en bloc puisse fonctionner, les deux appareils et IoT Hub doivent être connectés au compte de stockage.To allow bulk import/export feature to function, both devices and IoT Hub need to have connectivity to the storage account.

Cette fonctionnalité nécessite une connectivité entre IoT Hub et le compte de stockage.This functionality requires connectivity from IoT Hub to the storage account. Pour accéder à une ressource Service Bus alors que des restrictions de pare-feu sont en place, votre hub IoT doit disposer d’une identité managée.To access a service bus resource while firewall restrictions are in place, your IoT Hub needs to have a managed identity. Une fois qu’une identité managée est configurée, suivez la procédure ci-dessous pour donner à l’identité de ressource de votre hub l’autorisation Azure RBAC d’accéder à votre bus de services.Once a managed identity is provisioned, follow the steps below to give Azure RBAC permission to your hub's resource identity to access your service bus.

  1. Dans le portail Azure, accédez à l'onglet Contrôle d'accès (IAM) de votre compte de stockage, puis cliquez sur Ajouter dans la section Ajouter une attribution de rôle.In the Azure portal, navigate to your storage account's Access control (IAM) tab and click Add under the Add a role assignment section.

  2. Sélectionnez Contributeur aux données Blob du stockage (et non Contributeur ou Contributeur de compte de stockage) comme rôle, Utilisateur, groupe ou principal du service Azure AD comme Attribution de l’accès à, puis sélectionnez le nom de la ressource de votre hub IoT dans la liste déroulante.Select Storage Blob Data Contributor (not Contributor or Storage Account Contributor) as role, Azure AD user, group, or service principal as Assigning access to and select your IoT Hub's resource name in the drop-down list. Cliquez sur le bouton Enregistrer .Click the Save button.

  3. Accédez à l'onglet Pare-feux et réseaux virtuels de votre compte de stockage, puis activez l'option Autoriser l'accès à partir des réseaux sélectionnés.Navigate to the Firewalls and virtual networks tab in your storage account and enable Allow access from selected networks option. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder à ce compte de stockage.Under the Exceptions list, check the box for Allow trusted Microsoft services to access this storage account. Cliquez sur le bouton Enregistrer .Click the Save button.

Il est maintenant possible d’utiliser les API REST Azure IoT pour créer des travaux d'importation/exportation et obtenir des informations sur l’utilisation de la fonctionnalité d'importation/exportation en bloc.You can now use the Azure IoT REST APIs for creating import export jobs for information on how to use the bulk import/export functionality. Vous devrez indiquer storageAuthenticationType="identityBased" dans le corps de votre demande et utiliser respectivement inputBlobContainerUri="https://..." et outputBlobContainerUri="https://..." comme URL d'entrée et de sortie de votre compte de stockage.You will need to provide the storageAuthenticationType="identityBased" in your request body and use inputBlobContainerUri="https://..." and outputBlobContainerUri="https://..." as the input and output URLs of your storage account, respectively.

Les kits SDK IoT Hub Azure prennent également en charge cette fonctionnalité dans le gestionnaire de registre du client du service.Azure IoT Hub SDKs also support this functionality in the service client's registry manager. L’extrait de code suivant indique comment créer une tâche d’importation ou d’exportation en utilisant le SDK C#.The following code snippet shows how to initiate an import job or export job in using the C# SDK.

// Call an import job on the IoT Hub
JobProperties importJob = 
await registryManager.ImportDevicesAsync(
  JobProperties.CreateForImportJob(inputBlobContainerUri, outputBlobContainerUri, null, StorageAuthenticationType.IdentityBased), 
  cancellationToken);

// Call an export job on the IoT Hub to retrieve all devices
JobProperties exportJob = 
await registryManager.ExportDevicesAsync(
    JobProperties.CreateForExportJob(outputBlobContainerUri, true, null, StorageAuthenticationType.IdentityBased),
    cancellationToken);

Pour utiliser cette version des kits SDK Azure IoT avec prise en charge des réseaux virtuels pour C#, Java et Node.js :To use this version of the Azure IoT SDKs with virtual network support for C#, Java, and Node.js:

  1. Créez une variable d'environnement nommée EnableStorageIdentity et définissez sa valeur sur 1.Create an environment variable named EnableStorageIdentity and set its value to 1.

  2. Téléchargez le SDK : Java | C# | Node.jsDownload the SDK: Java | C# | Node.js

Pour Python, téléchargez notre version limitée à partir de GitHub.For Python, download our limited version from GitHub.

  1. Accédez à la page de mise en production GitHub.Navigate to the GitHub release page.

  2. Téléchargez le fichier suivant, que vous trouverez au bas de la page de mise en production sous l'en-tête assets.Download the following file, which you'll find at the bottom of the release page under the header named assets.

    azure_iot_hub-2.2.0_limited-py2.py3-none-any.whlazure_iot_hub-2.2.0_limited-py2.py3-none-any.whl

  3. Ouvrez un terminal et accédez au dossier contenant le fichier téléchargé.Open a terminal and navigate to the folder with the downloaded file.

  4. Exécutez la commande suivante pour installer le SDK du service Python avec prise en charge des réseaux virtuels :Run the following command to install the Python Service SDK with support for virtual networks:

    pip install ./azure_iot_hub-2.2.0_limited-py2.py3-none-any.whlpip install ./azure_iot_hub-2.2.0_limited-py2.py3-none-any.whl

Étapes suivantesNext steps

Utilisez les liens ci-dessous pour en savoir plus sur les fonctionnalités IoT Hub :Use the links below to learn more about IoT Hub features: