Identité managée pour Azure Data Factory

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article vous aide à comprendre l’identité managée (anciennement Managed Service Identity/MSI) et son fonctionnement dans Azure Data Factory.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Vue d’ensemble

Les identités managées éliminent la nécessité de gérer les informations d’identification. Les identités managées fournissent une identité pour l’instance de service lors de la connexion à des ressources qui prennent en charge l’authentification Microsoft Entra. Par exemple, le service peut utiliser une identité managée pour accéder à des ressources comme Azure Key Vault, où les administrateurs de données peuvent stocker des informations d’identification ou accéder à des comptes de stockage de manière sécurisée. Le service utilise l’identité managée pour obtenir des jetons Microsoft Entra.

Il existe deux types d’identités managées prises en charge :

  • Affecté par le système : vous pouvez activer une identité managée directement sur une instance de service. Quand vous autorisez une identité managée affectée par le système durant la création du service, une identité est créée dans Microsoft Entra, et cette identité est liée au cycle de vie de l’instance de service. Par défaut, seule cette ressource Azure peut utiliser cette identité pour demander des jetons à Microsoft Entra ID. Ainsi, quand la ressource est supprimée, Azure supprime automatiquement l’identité.
  • Affectées par l’utilisateur : vous pouvez également créer une identité managée en tant que ressource Azure autonome. Vous pouvez créer une identité managée affectée par l’utilisateur et l’attribuer à une ou plusieurs instances d’une fabrique de données. Une identité managée affectée par l’utilisateur est gérée séparément des ressources qui l’utilisent.

L’identité managée offre les avantages suivants :

  • Stocker des informations d’identification dans Azure Key Vault, auquel cas l’identité managée est utilisée pour l’authentification auprès d’Azure Key Vault.
  • Accédez aux magasins de données ou aux calculs à l’aide de l’authentification d’identité managée, y compris le stockage Blob Azure, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, une activité Databricks, une activité web, etc. Pour plus d’informations, consultez les articles relatifs au connecteur et à l’activité.
  • L’identité managée est également utilisée pour chiffrer/déchiffrer les données et les métadonnées au moyen de la clé gérée par le client qui est stockée dans Azure Key Vault, offrant ainsi un chiffrement double.

Identité managée affectée par le système

Notes

L’identité managée affectée par le système est également appelée « identité managée » ailleurs dans la documentation et dans Data Factory Studio à des fins de compatibilité descendante. Nous indiquerons explicitement « identité managée affectée par l’utilisateur » lorsque nous ferons référence à cette notion.

Générer l'identité managée affectée par le système

L’identité managée affectée par le système est générée comme suit :

  • Lors de la création d’une fabrique de données via le portail Azure ou PowerShell, l’identité managée est toujours créée automatiquement.
  • Lors de la création d’une fabrique de données via le kit de développement logiciel (SDK), l’identité managée n’est créée que si vous spécifiez « Identity = new FactoryIdentity() » au moment de la création de l’objet fabrique. Veuillez consulter l’exemple disponible dans Démarre rapide de .NET - Créer une fabrique de données.
  • Lors de la création d’une fabrique de données via l’API REST, l’identité managée n’est créée que si vous le spécifiez la section « identity » dans le corps de la requête. Consultez l’exemple dans Démarrage rapide REST - Créer une fabrique de données.

Si vous constatez que votre instance de service n’est pas associée à une identité managée après l’instruction retrieve managed identity, vous pouvez en générer une explicitement par programmation, en la mettant à jour avec l’initiateur d’identité :

Notes

  • L’identité managée ne peut pas être modifiée. La mise à jour d’une instance de service qui possède déjà une identité managée n’aura aucun effet et l’identité managée restera inchangée.
  • Si vous mettez à jour une instance de service qui dispose déjà d’une identité managée, sans spécifier le paramètre « identity » dans l’objet fabrique, ou sans spécifier la section « identity » dans le corps de la requête REST, vous recevez un message d’erreur.
  • Lorsque vous supprimez une instance de service, l’identité managée associée est aussi supprimée.

Générer l’identité managée affectée par le système en utilisant PowerShell

Appelez la commande Set-AzDataFactoryV2, vous verrez alors les champs « identity » qui viennent d’être générés :

PS C:\> Set-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName> -Location <region>

DataFactoryName   : ADFV2DemoFactory
DataFactoryId     : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/ADFV2DemoFactory
ResourceGroupName : <resourceGroupName>
Location          : East US
Tags              : {}
Identity          : Microsoft.Azure.Management.DataFactory.Models.FactoryIdentity
ProvisioningState : Succeeded

Générer l’identité managée affectée par le système en utilisant l’API REST

Notes

Si vous tentez de mettre à jour une instance de service qui possède déjà une identité managée sans spécifier le paramètre Identity dans l’objet de fabrique ou fournir de section Identity dans le corps de la requête REST, vous obtiendrez une erreur.

Appelez l’API ci-dessous avec la section « identity » dans le corps de la demande :

PATCH https://management.azure.com/subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

Corps de la requête : add "identity": { "type": "SystemAssigned" }.

{
    "name": "<dataFactoryName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

Réponse : l’identité managée est créée automatiquement, et la section « identity » est remplie en conséquence.

{
    "name": "<dataFactoryName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2017-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Générer l’identité managée affectée par le système en utilisant un modèle Azure Resource Manager

Modèle : add "identity": { "type": "SystemAssigned" }.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Générer l’identité managée affectée par le système en utilisant le SDK

Appelez la fonction create_or_update avec Identity=new FactoryIdentity(). Exemple de code utilisant NET :

Factory dataFactory = new Factory
{
    Location = <region>,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);

Récupérer l’identité managée affectée par le système

Vous pouvez récupérer l’identité managée à partir du portail Azure ou par programmation. Les sections suivantes vous montrent quelques exemples.

Conseil

Si vous ne voyez pas l’identité managée, générez l’identité managée en mettant à jour votre instance de service.

Récupérer l’identité managée affectée par le système en utilisant le portail Azure

Les informations relatives à l’identité managée sont disponibles sur le portail Azure ->votre fabrique de données -> Propriétés.

Shows the Azure portal with the system-managed identity object ID and Identity Tenant for an Azure Data Factory.

  • ID d’objet de l’identité managée
  • Locataire de l’identité managée

Les informations relatives à l'identité managée apparaissent également lorsque vous créez un service lié qui prend en charge l'authentification de l'identité managée, comme Azure Blob, Azure Data Lake Storage, Azure Key Vault, etc.

Pour accorder des autorisations, suivez ces étapes. Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.

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

  2. Sélectionnez Ajouter>Ajouter une attribution de rôle.

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  3. Sous l’onglet Membres, sélectionnez Identité managée, puis Sélectionner des membres.

  4. Sélectionnez votre abonnement Azure.

  5. Sous Identité managée affectée par le système, sélectionnez Fabrique de données, puis sélectionnez une fabrique de données. Vous pouvez aussi utiliser l’ID d’objet ou le nom de la fabrique de données (comme nom d’identité managée) pour trouver cette identité. Pour récupérer l’ID d’application de l’identité managée, utilisez PowerShell.

  6. Dans l’onglet Passer en revue + affecter, sélectionnez Passer en revue + affecter pour affecter le rôle.

Récupérer l’identité managée affectée par le système en utilisant PowerShell

L’ID de principal et l’ID de locataire de l’identité managée seront renvoyés lorsque vous aurez obtenu une instance de service spécifique, comme illustré ci-dessous. Utilisez le paramètre PrincipalId pour octroyer l'accès :

PS C:\> (Get-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity

PrincipalId                          TenantId
-----------                          --------
765ad4ab-XXXX-XXXX-XXXX-51ed985819dc 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Pour obtenir l'identifiant de l'application, copiez l'identifiant du principal, puis exécutez la commande Microsoft Entra ID ci-dessous avec l'identifiant du principal comme paramètre.

PS C:\> Get-AzADServicePrincipal -ObjectId 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc

ServicePrincipalNames : {76f668b3-XXXX-XXXX-XXXX-1b3348c75e02, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 76f668b3-XXXX-XXXX-XXXX-1b3348c75e02
DisplayName           : ADFV2DemoFactory
Id                    : 765ad4ab-XXXX-XXXX-XXXX-51ed985819dc
Type                  : ServicePrincipal

Récupérer l’identité managée à l’aide d’API REST

L’ID de principal et l’ID de locataire de l’identité managée seront renvoyés lorsque vous aurez obtenu une instance de service spécifique, comme illustré ci-dessous.

Appeler l’API ci-dessous dans la requête :

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01

Réponse : Vous obtiendrez une réponse comme indiqué dans l’exemple ci-dessous. La section « identité » est remplie en conséquence.

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"554cff9e-XXXX-XXXX-XXXX-90c7d9ff2ead",
        "tenantId":"72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "id":"/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<dataFactoryName>",
    "type":"Microsoft.DataFactory/factories",
    "properties":{
        "provisioningState":"Succeeded",
        "createTime":"2020-02-12T02:22:50.2384387Z",
        "version":"2018-06-01",
        "factoryStatistics":{
            "totalResourceCount":0,
            "maxAllowedResourceCount":0,
            "factorySizeInGbUnits":0,
            "maxAllowedFactorySizeInGbUnits":0
        }
    },
    "eTag":"\"03006b40-XXXX-XXXX-XXXX-5e43617a0000\"",
    "location":"<region>",
    "tags":{

    }
}

Conseil

Pour récupérer l’identité managée à partir d’un modèle ARM, ajoutez une section sorties dans le JSON ARM :

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

Identité managée affectée par l’utilisateur

Vous pouvez créer, supprimer et gérer les identités managées affectées par l’utilisateur dans Microsoft Entra ID. Pour plus d’informations, consultez Créer, lister, supprimer et attribuer un rôle à une identité managée affectée par l’utilisateur à l’aide du portail Azure.

Pour pouvoir utiliser une identité managée affectée par l’utilisateur, vous devez d’abord créer des informations d’identification dans votre instance de service pour l’identité managée affectée par l’utilisateur.

Consultez les rubriques suivantes, qui expliquent quand et comment utiliser l’identité managée :

Pour plus d’informations sur les identités managées pour les ressources Azure, sur lesquelles repose l’identité managée dans Azure Data Factory, consultez Présentation des identités managées pour les ressources Azure.

Consultez Limitations des identités managées, qui s’appliquent également aux identités managées dans Azure Data Factory.