Utiliser des identités managées pour authentifier votre travail Azure Stream Analytics auprès de Stockage Blob Azure

L’authentification par identité managée pour la sortie du stockage Blob Azure donne aux travaux Stream Analytics un accès direct à un compte de stockage au lieu d’utiliser une chaîne de connexion. Outre la sécurité améliorée, cette fonctionnalité vous permet également d’écrire des données dans un compte de stockage dans un réseau virtuel (VNET) au sein d’Azure.

Cet article vous montre comment activer une identité managée pour une ou des sorties Blob d’un travail Azure Stream Analytics via le portail Azure et un déploiement d’Azure Resource Manager.

Créer le travail Stream Analytics à l’aide du portail Azure

Commencez par créer une identité managée pour votre tâche Azure Stream Analytics. 

  1. Dans le portail Azure, ouvrez votre tâche Azure Stream Analytics. 

  2. Dans le menu de navigation gauche, sélectionnez Identité managée sous Configurer. Activez ensuite la case à cocher située en regard de Utiliser l'identité managée affectée par le système, puis sélectionnez Enregistrer.

    System assigned managed identity

  3. Un principal de service est créé pour l’identité du travail Stream Analytics dans Microsoft Entra ID. Le cycle de vie de la nouvelle identité est géré par Azure. Quand le travail Stream Analytics est supprimé, l’identité associée (autrement dit, le principal de service) est également automatiquement supprimée par Azure. 

    Lorsque vous enregistrez la configuration, l’ID objet (l’OID) du principal de service s’affiche en tant qu’ID de principal, comme ci-dessous :

    Principal ID

    Le principal de service a le même nom que le travail Stream Analytics. Par exemple, si le nom de votre travail est MyASAJob, le nom du principal de service est également MyASAJob. 

Déploiement Azure Resource Manager

L’utilisation d’Azure Resource Manager vous permet d’automatiser entièrement le déploiement de votre travail Stream Analytics. Vous pouvez déployer des modèles Resource Manager à l’aide d’Azure PowerShell ou de l’interface de ligne de commande Azure. Les exemples suivants utilisent l’interface de ligne de commande Azure.

  1. Vous pouvez créer une ressource Microsoft.StreamAnalytics/streamingjobs avec une identité managée en incluant la propriété suivante dans la section ressources de votre modèle Resource Manager :

    "Identity": {
      "Type": "SystemAssigned",
    },
    

    Cette propriété indique à Azure Resource Manager de créer et manager l’identité de votre travail Stream Analytics. Voici un exemple de modèle Resource Manager qui déploie un travail Stream Analytics avec l’identité managée activée et un récepteur de sortie Blob qui utilise l’identité managée :

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
            {
                "apiVersion": "2017-04-01-preview",
                "name": "MyStreamingJob",
                "location": "[resourceGroup().location]",
                "type": "Microsoft.StreamAnalytics/StreamingJobs",
                "identity": {
                    "type": "systemAssigned"
                },
                "properties": {
                    "sku": {
                        "name": "standard"
                    },
                    "outputs":[
                        {
                            "name":"output",
                            "properties":{
                                "serialization": {
                                    "type": "JSON",
                                    "properties": {
                                        "encoding": "UTF8"
                                    }
                                },
                                "datasource":{
                                    "type":"Microsoft.Storage/Blob",
                                    "properties":{
                                        "storageAccounts": [
                                            { "accountName": "MyStorageAccount" }
                                        ],
                                        "container": "test",
                                        "pathPattern": "segment1/{date}/segment2/{time}",
                                        "dateFormat": "yyyy/MM/dd",
                                        "timeFormat": "HH",
                                        "authenticationMode": "Msi"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    Le travail ci-dessus doit être déployé sur le groupe de ressources ExampleGroup à l’aide de l’interface de ligne de commande Azure ci-dessous :

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Une fois le travail créé, vous pouvez utiliser Azure Resource Manager pour récupérer la définition complète du travail.

    az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
    

    La commande ci-dessus retourne une réponse similaire à ce qui suit :

    {
        "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/streamingjobs/{RESOURCE_NAME}",
        "identity": {
            "principalId": "{PRINCIPAL_ID}",
            "tenantId": "{TENANT_ID}",
            "type": "SystemAssigned",
            "userAssignedIdentities": null
        },
        "kind": null,
        "location": "West US",
        "managedBy": null,
        "name": "{RESOURCE_NAME}",
        "plan": null,
        "properties": {
            "compatibilityLevel": "1.0",
            "createdDate": "2019-07-12T03:11:30.39Z",
            "dataLocale": "en-US",
            "eventsLateArrivalMaxDelayInSeconds": 5,
            "jobId": "{JOB_ID}",
            "jobState": "Created",
            "jobStorageAccount": null,
            "jobType": "Cloud",
            "outputErrorPolicy": "Stop",
            "package": null,
            "provisioningState": "Succeeded",
            "sku": {
                "name": "Standard"
            }
        },
        "resourceGroup": "{RESOURCE_GROUP}",
        "sku": null,
        "tags": null,
        "type": "Microsoft.StreamAnalytics/streamingjobs"
    }
    

    Notez le principalId à partir de la définition du travail, qui identifie l’identité gérée de votre travail dans Microsoft Entra ID et sera utilisé à l’étape suivante pour autoriser le travail Stream Analytics à accéder au compte de stockage.

  3. Maintenant que le travail est créé, consultez la section Permettre au travail Stream Analytics d’accéder à votre compte de stockage de cet article.

Autorisez le travail Stream Analytics à accéder à votre compte de stockage

Il existe deux niveaux d’accès que vous pouvez choisir pour votre travail Stream Analytics :

  1. Accès au niveau du conteneur : cette option autorise le travail à accéder à un conteneur existant spécifique.
  2. Accès au niveau du compte : cette option donne au travail un accès général au compte de stockage, notamment la possibilité de créer des conteneurs.

À moins d’avoir besoin du travail pour créer des conteneurs en votre nom, vous devriez choisir l’accès au niveau du conteneur, car cette option donne au travail le niveau d’accès minimal requis. Les deux options sont expliquées plus bas pour le Portail Azure et la ligne de commande.

Notes

En raison de la latence de la réplication globale ou de la mise en cache, il peut y avoir un délai lors de la révocation ou de l’octroi des autorisations. Les changements devraient prendre effet en 8 minutes.

Autoriser l’accès via le portail azure

Accès au niveau du conteneur

  1. Accédez au volet de configuration du conteneur au sein de votre compte de stockage.

  2. Sélectionnez Contrôle d’accès (IAM) .

  3. Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.

  4. Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Role Contributeur aux données Blob du stockage
    Attribuer l’accès à Utilisateur, groupe ou principal de service
    Membres <Nom de votre travail Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Accès au niveau du compte

  1. Accédez à votre compte de stockage.

  2. Sélectionnez Contrôle d’accès (IAM) .

  3. Sélectionnez Ajouter>Ajouter une attribution de rôle pour ouvrir la page Ajouter une attribution de rôle.

  4. Attribuez le rôle suivant. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

    Paramètre Valeur
    Role Contributeur aux données Blob du stockage
    Attribuer l’accès à Utilisateur, groupe ou principal de service
    Membres <Nom de votre travail Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Autoriser l’accès via la ligne de commande

Accès au niveau du conteneur

Pour autoriser l’accès à un conteneur spécifique, exécutez la commande suivante à l’aide de l’interface de ligne de commande Azure :

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container-name>

Accès au niveau du compte

Pour autoriser l’accès à la totalité du compte, exécutez la commande suivante à l’aide de l’interface de ligne de commande Azure :

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

Créer une entrée ou une sortie d’objet blob

Maintenant que votre identité managée est configurée, vous pouvez ajouter la ressource blob comme entrée ou sortie de votre travail Stream Analytics.

  1. Dans la fenêtre de propriétés de sortie du récepteur de sortie de stockage Blob Azure, sélectionnez la liste déroulante Mode d’authentification, puis Identité managée. Pour plus d’informations sur les autres propriétés de sortie, consultez Comprendre les sorties d’Azure Stream Analytics. Quand vous avez terminé, cliquez sur Enregistrer.

    Configure Azure Blob storage output

Activer l’accès au réseau virtuel

Lorsque vous configurez les pare-feu et les réseaux virtuels de votre compte de stockage, vous pouvez éventuellement autoriser le trafic réseau à partir d’autres services Microsoft approuvés. Lorsque Stream Analytics s’authentifie à l’aide de l’identité managée, il fournit la preuve que la demande provient d’un service approuvé. Vous trouverez ci-dessous des instructions pour activer cette exception d’accès au réseau virtuel.

  1. Accédez au volet « Pare-feu et réseaux virtuels » dans le volet de configuration du compte de stockage.
  2. Vérifiez que l’option « Autoriser les services Microsoft approuvés à accéder à ce compte de stockage » est activée.
  3. Si vous l’avez activée, cliquez sur Enregistrer.

Enable VNET access

Supprimer l’identité managée

L’identité gérée créée pour une tâche Stream Analytics est supprimée uniquement lorsque la tâche est supprimée. Il n’existe aucun moyen de supprimer l’identité gérée sans supprimer la tâche. Si vous ne souhaitez plus utiliser l’identité gérée, vous pouvez modifier la méthode d’authentification pour la sortie. L’identité gérée continuera d’exister jusqu’à ce que la tâche soit supprimée, et sera réemployée si vous décidez à nouveau d’utiliser l’authentification d’identité gérée.

Limites

Vous trouverez plus bas les limitations actuelles de cette fonctionnalité :

  1. Comptes Stockage Azure classiques.

  2. Comptes Azure sans Microsoft Entra ID.

  3. L’accès multi-locataire n’est pas pris en charge. Le principal de service créé pour un travail Stream Analytics donné doit résider dans le même locataire Microsoft Entra dans lequel le travail a été créé et ne peut pas être utilisé avec une ressource qui réside dans un autre locataire Microsoft Entra.

Étapes suivantes