Prise en charge des identités managées par IoT Hub
Article
Les identités gérées fournissent aux services Azure une identité gérée automatiquement dans Microsoft Entra ID de manière sécurisée. Ainsi, les développeurs n’ont plus à gérer les informations d’identification en fournissant une identité. Il existe deux types d’identités managées : celles affectées par le système et celles affectées par l’utilisateur. IoT Hub prend en charge les deux.
Dans IoT Hub, les identités managées peuvent être utilisées pour connecter IoT Hub à d’autres services Azure pour des fonctionnalités telles que le routage des messages, le chargement de fichiers et l’importation/exportation d’appareils en bloc. Dans cet article, vous allez apprendre à utiliser des identités managées affectées par le système et affectées par l’utilisateur dans votre hub IoT pour différentes fonctionnalités.
Vous pouvez activer ou désactiver une identité managée affectée par le système sur le Portail Azure
Connectez-vous au portail Azure et accédez à votre IoT Hub.
Sélectionnez Identité dans la section Paramètres de sécurité du menu de navigation.
Sélectionnez l’onglet Affectée par le système.
Définissez l’État de l’identité managée affectée par le système sur Activé ou Désactivé, puis sélectionnez Enregistrer.
Notes
Vous ne pouvez pas désactiver une identité managée affectée par le système tant qu’elle est en cours d’utilisation. Assurez-vous qu’aucun point de terminaison personnalisé n’utilise une authentification par identité managée affectée par le système avant de désactiver la fonctionnalité.
Vous pouvez activer une identité managée affectée par le système au moment de la création du hub en utilisant un modèle ARM
Pour activer l’identité managée affectée par le système dans votre hub IoT au moment de l’approvisionnement des ressources, utilisez le modèle Azure Resource Manager (ARM) ci-dessous.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters":
{
"iotHubName": {
"type": "string",
"metadata": {
"description": "Name of iothub resource"
}
},
"skuName": {
"type": "string",
"defaultValue": "S1",
"metadata": {
"description": "SKU name of iothub resource, by default is Standard S1"
}
},
"skuTier": {
"type": "string",
"defaultValue": "Standard",
"metadata": {
"description": "SKU tier of iothub resource, by default is Standard"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location of iothub resource. Please provide any of supported-regions of iothub"
}
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createIotHub",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/IotHubs",
"apiVersion": "2021-03-31",
"name": "[parameters('iotHubName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"sku": {
"name": "[parameters('skuName')]",
"tier": "[parameters('skuTier')]",
"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 :
az deployment group create --name <deployment-name> --resource-group <resource-group-name> --template-file <template-file.json> --parameters iotHubName=<valid-iothub-name> skuName=<sku-name> skuTier=<sku-tier> location=<any-of-supported-regions>
Vous pouvez récupérer l’identité managée affectée par le système affectée à votre hub à l’aide d’Azure CLI :
az resource show --resource-type Microsoft.Devices/IotHubs --name <iot-hub-resource-name> --resource-group <resource-group-name>
Dans cette section, vous allez découvrir comment ajouter une identité managée affectée par l’utilisateur sur un hub IoT et comment l’en supprimer en utilisant le portail Azure.
Tout d’abord, vous devez créer une identité managée affectée par l’utilisateur en tant que ressource autonome. Pour ce faire, vous pouvez suivre les instructions fournies dans Gérer les identités managées affectées par l’utilisateur.
Accédez à votre hub IoT, puis à l’identité dans le portail IoT Hub.
Sous l’onglet Affectée par l’utilisateur, cliquez sur Associer une identité managée affectée par l’utilisateur. Choisissez l’identité managée affectée par l’utilisateur que vous souhaitez ajouter à votre hub, puis cliquez sur Sélectionner.
Vous pouvez supprimer une identité affectée par l’utilisateur d’un hub IoT. Choisissez l’identité affectée par l’utilisateur que vous souhaitez supprimer, puis cliquez sur le bouton Supprimer. Notez que vous le supprimez uniquement du hub IoT, et que cette suppression ne supprime pas l’identité affectée par l’utilisateur en tant que ressource. Pour supprimer l’identité affectée par l’utilisateur en tant que ressource, suivez les instructions fournies dans Gérer les identités managées affectées par l’utilisateur.
L’exemple de modèle suivant peut être utilisé pour créer un hub avec une identité managée affectée par l'utilisateur. Ce modèle crée une identité affectée par l’utilisateur portant le nom [iothub-name-provided]-identity et destinée au hub IoT créé. Si besoin, vous pouvez modifier ce modèle afin d’ajouter plusieurs identités affectées par l’utilisateur.
az deployment group create --name <deployment-name> --resource-group <resource-group-name> --template-file <template-file.json> --parameters iotHubName=<valid-iothub-name> skuName=<sku-name> skuTier=<sku-tier> location=<any-of-supported-regions>
Une fois la ressource créée, vous pouvez récupérer l'identité managée affectée par l'utilisateur dans votre hub en utilisant l’interface de ligne de commande Azure :
az resource show --resource-type Microsoft.Devices/IotHubs --name <iot-hub-resource-name> --resource-group <resource-group-name>
Connectivité entrante d’IoT Hub vers d'autres ressources Azure
Les identités managées peuvent être utilisées pour la connectivité de sortie d’IoT Hub à d’autres services Azure. Vous pouvez choisir l’identité managée à utiliser pour chaque connectivité de sortie d’IoT Hub aux points de terminaison appartenant au client, y compris les comptes de stockage, les Event Hubs et les points de terminaison Service Bus.
Notes
Seule l’identité gérée affectée par le système permet IoT Hub l’accès aux ressources privées. Si vous souhaitez utiliser une identité gérée affectée par l’utilisateur, l’accès public à ces ressources privées doit être activé pour permettre la connectivité.
Configurer le routage des messages avec des identités managées
Dans cette section, nous utilisons le routage des messages vers un point de terminaison personnalisé des Event Hubs en guise d’exemple. L’exemple s’applique également à d’autres points de terminaison personnalisés de routage.
Accédez à votre Event Hub dans le Portail Azure pour attribuer l’accès approprié à l’identité managée.
Sélectionnez Contrôle d’accès (IAM) .
Sélectionner Ajouter> Ajouter une attribution de rôle.
Sous l’onglet Rôle, sélectionnez Expéditeur de données Azure Event Hubs.
Notes
Pour un compte de stockage, sélectionnez Contributeur aux données Blob du stockage (et non Contributeur ou Contributeur de compte de stockage) en tant que rôle. Pour un Service Bus, sélectionnez Expéditeur de données Service Bus.
Sous l’onglet Membres, sélectionnez Identité managée, puis Sélectionner des membres.
Sélectionnez votre abonnement, sélectionnez Identité managée affectée par l’utilisateur, puis votre identité managée affectée par l’utilisateur.
Pour les identités managées affectées par le système, sélectionnez votre abonnement, sélectionnez Toutes les identités managées affectées par le système, puis sélectionnez le nom de la ressource de votre IoT Hub.
Dans l’onglet Passer en revue + affecter, sélectionnez Passer en revue + affecter pour affecter le rôle.
Si vous devez restreindre la connectivité à votre point de terminaison personnalisé par le biais d’un réseau virtuel, vous devez activer l’exception des premiers tiers Microsoft approuvés pour permettre à votre hub IoT d’accéder au point de terminaison spécifique. Par exemple, si vous ajoutez un point de terminaison personnalisé d’Event Hub, accédez à l’onglet Pare-feux et réseaux virtuels dans votre Event Hub et activez l’option Autoriser l’accès à partir des réseaux sélectionnés. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder aux hubs d’événements. Cliquez sur le bouton Enregistrer . Cela s’applique également au compte de stockage et à Service Bus. En savoir plus sur la prise en charge des réseaux virtuels par IoT Hub.
Notes
Vous devez effectuer les étapes ci-dessus pour attribuer le bon accès à l’identité managée avant d’ajouter l’Event Hub comme point de terminaison personnalisé dans IoT Hub. Patientez quelques minutes pour que l’attribution de rôle se propage.
Ensuite, accédez à votre hub IoT. Dans votre hub, accédez à Routage des messages, puis sélectionnez Ajouter.
Sous l’onglet Point de terminaison, créez un point de terminaison pour votre hub d’événements en fournissant les informations suivantes :
Paramètre
Valeur
Type de point de terminaison
Sélectionnez Event Hubs.
Nom du point de terminaison
Fournissez un nom unique pour un nouveau point de terminaison ou sélectionnez Sélectionner un élément existant pour choisir un point de terminaison Event Hubs existant.
Espace de noms Event Hubs
Utilisez le menu déroulant pour sélectionner un espace de noms Event Hubs existant dans votre abonnement.
Instance Event Hub
Utilisez le menu déroulant pour sélectionner un hub d’événements existant dans votre espace de noms.
Type d’authentification
Sélectionnez Attribué par l’utilisateur, puis utilisez le menu déroulant pour sélectionner Identité attribuée par l’utilisateur que vous avez créé dans votre hub d’événements.
Sélectionnez Créer + suivant. Vous pouvez continuer via l’Assistant pour créer un itinéraire qui pointe vers ce point de terminaison, ou vous pouvez fermer l’Assistant.
Vous pouvez modifier le type d’authentification d’un point de terminaison personnalisé existant. Pour modifier un point de terminaison, procédez comme suit :
Dans votre hub IoT, sélectionnez Routage des messages dans le volet de navigation gauche, puis Points de terminaison personnalisés.
Cochez la case du point de terminaison personnalisé que vous souhaitez modifier, puis sélectionnez Modifier le type d’authentification.
Choisissez le nouveau type d’authentification pour ce point de terminaison, puis sélectionnez Enregistrer.
Configurer le chargement de fichiers avec des identités managées
La fonctionnalité de chargement de fichiers d’IoT Hub permet aux appareils de charger des fichiers sur un compte de stockage appartenant au client. Pour que le chargement de fichiers puisse fonctionner, IoT Hub doit être connecté au compte de stockage. À l’instar du routage des messages, vous pouvez choisir le type d’authentification et l’identité managée de votre choix pour la connectivité de sortie d’IoT Hub à votre compte de stockage Azure.
Dans le portail Azure, accédez à votre compte de stockage.
Sélectionnez Contrôle d’accès (IAM) .
Sélectionner Ajouter> Ajouter une attribution de rôle.
Dans l’onglet Rôle, sélectionnez Contributeur aux données Blob du stockage. (Ne sélectionnez pas Contributeur ou contributeur de compte Stockage.)
Sous l’onglet Membres, sélectionnez Identité managée, puis Sélectionner des membres.
Sélectionnez votre abonnement, sélectionnez Identité managée affectée par l’utilisateur, puis votre identité managée affectée par l’utilisateur.
Pour les identités managées affectées par le système, sélectionnez votre abonnement, sélectionnez Toutes les identités managées affectées par le système, puis sélectionnez le nom de la ressource de votre IoT Hub.
Dans l’onglet Passer en revue + affecter, sélectionnez Passer en revue + affecter pour affecter le rôle.
Si vous devez restreindre la connectivité à votre compte de stockage par le biais d’un réseau virtuel, vous devez activer l’exception des premiers tiers Microsoft approuvés pour permettre à votre hub IoT d’accéder au compte de stockage. Sur la page des ressources de votre compte de stockage, accédez à l’onglet Pare-feux et réseaux virtuels et activez l’option Autoriser l’accès à partir des réseaux sélectionnés. Sous la liste Exceptions, cochez la case Autoriser les services Microsoft approuvés à accéder à ce compte de stockage. Cliquez sur le bouton Enregistrer . En savoir plus sur la prise en charge des réseaux virtuels par IoT Hub.
Notes
Vous devez effectuer les étapes ci-dessus pour attribuer à l’identité managée le bon accès avant d’enregistrer le compte de stockage dans IoT Hub pour le chargement de fichiers à l’aide de l’identité managée. Patientez quelques minutes pour que l’attribution de rôle se propage.
Sur la page des ressources de votre hub IoT, accédez à l’onglet Chargement de fichiers.
Sur la page qui s’affiche, sélectionnez le conteneur que vous comptez utiliser dans votre stockage blob, puis configurez les paramètres de notification de fichier, la durée de vie SAP, la durée de vie par défaut et le nombre maximal de distributions comme vous le souhaitez. Choisissez le type d’authentification de votre choix, puis cliquez sur Enregistrer. 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. Vous pouvez configurer le pare-feu sur le compte de stockage une fois la configuration du chargement de fichiers terminée.
Notes
Dans le scénario de chargement de fichiers, le hub et votre appareil doivent tous deux se connecter à votre compte de stockage. Les étapes ci-dessus permettent de connecter votre hub IoT à votre compte de stockage avec le type d’authentification souhaité. Vous devez toujours connecter votre appareil au stockage à l’aide de l’URI SAS. Actuellement, l’URI SAS est généré à l’aide d’une chaîne de connexion. Prochainement, l’URI SAS pourra également être généré à l’aide d’une identité managée. Suivez la procédure décrite dans Chargement de fichiers.
Configurer l’importation/exportation d’appareils en bloc avec des identités managées
IoT Hub prend en charge la fonctionnalité permettant d’importer/exporter les informations des appareils en bloc depuis et vers un stockage de blobs fourni par le client. Cette fonctionnalité nécessite une connectivité entre IoT Hub et le compte de stockage.
Dans le portail Azure, accédez à votre compte de stockage.
Sélectionnez Contrôle d’accès (IAM) .
Sélectionner Ajouter> Ajouter une attribution de rôle.
Dans l’onglet Rôle, sélectionnez Contributeur aux données Blob du stockage. (Ne sélectionnez pas Contributeur ou contributeur de compte Stockage.)
Sous l’onglet Membres, sélectionnez Identité managée, puis Sélectionner des membres.
Sélectionnez votre abonnement, sélectionnez Identité managée affectée par l’utilisateur, puis votre identité managée affectée par l’utilisateur.
Pour les identités managées affectées par le système, sélectionnez votre abonnement, sélectionnez Toutes les identités managées affectées par le système, puis sélectionnez le nom de la ressource de votre IoT Hub.
Dans l’onglet Passer en revue + affecter, sélectionnez Passer en revue + affecter pour affecter le rôle.
Utilisation de l’API REST ou du Kit de développement logiciel (SDK) pour les travaux d’importation et d’exportation
Vous pouvez désormais utiliser les API REST d’Azure IoT pour créer des travaux d’importation et d’exportation. Vous devrez fournir les propriétés suivantes dans le corps de la demande :
storageAuthenticationType : Définissez la valeur sur identityBased.
inputBlobContainerUri : Définissez cette propriété uniquement dans le travail d’importation.
outputBlobContainerUri : Définissez cette propriété pour les travaux d’importation et d’exportation.
identity : Définissez la valeur sur l’identité managée à utiliser.
Les kits SDK IoT Hub Azure prennent également en charge cette fonctionnalité dans le gestionnaire de registre du client du service. L’extrait de code suivant indique comment créer une tâche d’importation ou d’exportation en utilisant le SDK C#.
# see note below
iothub_job_manager = IoTHubJobManager("<IoT Hub connection information>")
# Create an import job
result = iothub_job_manager.create_import_export_job(JobProperties(
type="import",
input_blob_container_uri="<input container URI>",
output_blob_container_uri="<output container URI>",
storage_authentication_type="identityBased",
identity=ManagedIdentity(
user_assigned_identity="<resource ID of user assigned managed identity>"
)
))
# Create an export job
result = iothub_job_manager.create_import_export_job(JobProperties(
type="export",
output_blob_container_uri="<output container URI>",
storage_authentication_type="identityBased",
exclude_keys_in_export=True,
identity=ManagedIdentity(
user_assigned_identity="<resource ID of user assigned managed identity>"
)
))
Notes
Si storageAuthenticationType est défini sur identityBased et que la propriété userAssignedIdentity n’a pas la valeur Null, les travaux utilisent l’identité managée affectée par l’utilisateur spécifiée.
Si le hub IoT n’est pas configuré avec l’identité managée affectée par l’utilisateur spécifiée dans userAssignedIdentity, le travail échoue.
Si storageAuthenticationType est défini sur identityBased et que la propriété userAssignedIdentity a la valeur Null, les travaux utilisent l’identité affectée par le système.
Si le hub IoT n’est pas configuré avec l’identité managée affectée par l’utilisateur, le travail échoue.
Si storageAuthenticationType est défini sur identityBased et que ni les identités managées affectées par l’utilisateur ni celles affectées par le système ne sont configurées sur le hub, le travail échoue.
Expliquez les fonctionnalités de Microsoft Entra ID pour moderniser des solutions d’identité, implémenter des solutions hybrides et une gouvernance des identités.
Découvrez comment créer et supprimer des routes et des points de terminaison dans Azure IoT Hub en utilisant les commandes Azure CLI message-endpoints et message-routes.
Cet article décrit comment utiliser le routage des messages pour envoyer des messages appareil-à-cloud. Inclut des informations sur l’envoi de données de télémétrie et d’autres données.
Découvrez comment créer et supprimer des itinéraires et des points de terminaison dans Azure IoT Hub en utilisant le portail Azure pour le routage des messages.
Apprenez comment Azure IoT Hub utilise les signatures d’accès partagé (SAP) pour authentifier des identités et autoriser l’accès aux hubs IoT et aux appareils.