Identità gestita per Data FactoryManaged identity for Data Factory

Questo articolo consente di comprendere l'identità gestita per Data Factory (noto in precedenza come identità del servizio gestita/MSI) e il relativo funzionamento.This article helps you understand what is managed identity for Data Factory (formerly known as Managed Service Identity/MSI) and how it works.

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

OverviewOverview

Quando si crea una data factory, è possibile creare un'identità gestita insieme alla creazione della factory.When creating a data factory, a managed identity can be created along with factory creation. L'identità gestita è un'applicazione gestita registrata per Azure Active Directory e rappresenta questo data factory specifico.The managed identity is a managed application registered to Azure Active Directory, and represents this specific data factory.

L'identità gestita per Data Factory avvantaggia le funzionalità seguenti:Managed identity for Data Factory benefits the following features:

Genera identità gestitaGenerate managed identity

L'identità gestita per Data Factory viene generata come segue:Managed identity for Data Factory is generated as follows:

  • Quando si crea data factory tramite portale di Azure o PowerShell, l'identità gestita viene sempre creata automaticamente.When creating data factory through Azure portal or PowerShell, managed identity will always be created automatically.
  • Quando si crea data factory tramite SDK, l'identità gestita viene creata solo se si specifica "Identity = New FactoryIdentity ()" nell'oggetto factory per la creazione.When creating data factory through SDK, managed identity will be created only if you specify "Identity = new FactoryIdentity()" in the factory object for creation. Vedere l'esempio nella guida introduttiva di .NET per la creazione di una data factory.See example in .NET quickstart - create data factory.
  • Quando si crea data factory tramite l' API REST, l'identità gestita viene creata solo se si specifica la sezione "Identity" nel corpo della richiesta.When creating data factory through REST API, managed identity will be created only if you specify "identity" section in request body. Vedere l'esempio nella guida introduttiva di REST per la creazione di una data factory.See example in REST quickstart - create data factory.

Se la data factory non dispone di un'identità gestita associata al recupero dell'istruzione di identità gestita , è possibile generarne una in modo esplicito aggiornando il data factory con l'iniziatore di identità a livello di codice:If you find your data factory doesn't have a managed identity associated following retrieve managed identity instruction, you can explicitly generate one by updating the data factory with identity initiator programmatically:

Nota

  • Non è possibile modificare l'identità gestita.Managed identity cannot be modified. L'aggiornamento di un data factory che ha già un'identità gestita non avrà alcun effetto, l'identità gestita viene mantenuta invariata.Updating a data factory which already have a managed identity won't have any impact, the managed identity is kept unchanged.
  • Se si aggiorna un data factory che ha già un'identità gestita senza specificare il parametro "Identity" nell'oggetto factory o se non si specifica la sezione "Identity" nel corpo della richiesta REST, verrà ricevuto un errore.If you update a data factory which already have a managed identity without specifying "identity" parameter in the factory object or without specifying "identity" section in REST request body, you will get an error.
  • Quando si elimina una data factory, l'identità gestita associata verrà eliminata insieme a.When you delete a data factory, the associated managed identity will be deleted along.

Generare identità gestite con PowerShellGenerate managed identity using PowerShell

Chiamare di nuovo il comando set-AzDataFactoryV2 . vengono visualizzati i campi "Identity" appena generati:Call Set-AzDataFactoryV2 command again, then you see "Identity" fields being newly generated:

PS C:\WINDOWS\system32> 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

Generare identità gestite con l'API RESTGenerate managed identity using REST API

Chiamare l'API seguente con la sezione "identity" nel corpo della richiesta:Call below API with "identity" section in the request body:

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

Corpo della richiesta: aggiungere "identity": { "type": "SystemAssigned" }.Request body: add "identity": { "type": "SystemAssigned" }.

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

Risposta: l'identità gestita viene creata automaticamente e la sezione "Identity" viene popolata di conseguenza.Response: managed identity is created automatically, and "identity" section is populated accordingly.

{
    "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/ADFV2DemoFactory",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Generare un'identità gestita usando un modello di Azure Resource ManagerGenerate managed identity using an Azure Resource Manager template

Modello: aggiungere "identity": { "type": "SystemAssigned" }.Template: add "identity": { "type": "SystemAssigned" }.

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

Genera identità gestita con SDKGenerate managed identity using SDK

Chiamare la funzione di creazione o aggiornamento di data factory con Identity=new FactoryIdentity().Call the data factory create_or_update function with Identity=new FactoryIdentity(). Di seguito è riportato codice di esempio con .NET:Sample code using .NET:

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

Recupera identità gestitaRetrieve managed identity

È possibile recuperare l'identità gestita da portale di Azure o a livello di codice.You can retrieve the managed identity from Azure portal or programmatically. Le sezioni seguenti illustrano alcuni esempi.The following sections show some samples.

Suggerimento

Se l'identità gestita non è visibile, generare l'identità gestita aggiornando la factory.If you don't see the managed identity, generate managed identity by updating your factory.

Recuperare l'identità gestita usando portale di AzureRetrieve managed identity using Azure portal

È possibile trovare le informazioni sull'identità gestita da portale di Azure > le proprietà di data factory >.You can find the managed identity information from Azure portal -> your data factory -> Properties.

  • ID oggetto identità gestitaManaged Identity Object ID
  • Tenant di identità gestitaManaged Identity Tenant
  • ID applicazione identità gestitaManaged Identity Application ID

Le informazioni sull'identità gestita vengono visualizzate anche quando si crea un servizio collegato che supporta l'autenticazione dell'identità gestita, ad esempio BLOB di Azure, Azure Data Lake Storage, Azure Key Vault e così via.The managed identity information will also show up when you create linked service which supports managed identity authentication, like Azure Blob, Azure Data Lake Storage, Azure Key Vault, etc.

Quando si concede l'autorizzazione, usare l'ID oggetto o il nome del data factory (come nome identità gestita) per trovare questa identità.When granting permission, use object ID or data factory name (as managed identity name) to find this identity.

Recuperare l'identità gestita con PowerShellRetrieve managed identity using PowerShell

L'ID dell'entità di identità gestita e l'ID tenant verranno restituiti quando si ottiene uno specifico data factory come indicato di seguito.The managed identity principal ID and tenant ID will be returned when you get a specific data factory as follows. Usare PrincipalId per concedere l'accesso:Use the PrincipalId to grant access:

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

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

È possibile ottenere l'ID applicazione copiando sopra l'ID entità, quindi eseguire sotto Azure Active Directory comando con ID entità come parametro.You can get the application ID by copying above principal ID, then running below Azure Active Directory command with principal ID as parameter.

PS C:\WINDOWS\system32> 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

Passaggi successiviNext steps

Vedere gli argomenti seguenti che introducono quando e come usare data factory identità gestita:See the following topics which introduce when and how to use data factory managed identity:

Vedere Panoramica delle identità gestite per le risorse di Azure per altre informazioni di base sulle identità gestite per le risorse di Azure, che data factory identità gestita è basata su.See Managed Identities for Azure Resources Overview for more background on managed identities for Azure resources, which data factory managed identity is based upon.