Identità gestita per Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo illustra l'identità gestita (in precedenza nota come identità del servizio gestita/identità del servizio gestita) e il funzionamento in Azure Data Factory.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Panoramica

Le identità gestite eliminano la necessità di gestire le credenziali. Le identità gestite forniscono un'identità che verrà usata dall'istanza del servizio quando si connette a risorse che supportano l'autenticazione di Microsoft Entra. Ad esempio, il servizio può usare un'identità gestita per accedere a risorse come Azure Key Vault in cui gli sviluppatori dei dati possono archiviare le credenziali in modo sicuro o per accedere agli account di archiviazione. Il servizio usa l'identità gestita per ottenere i token di Microsoft Entra.

Sono disponibili due tipi di identità gestite supportate:

  • Assegnata dal sistema: è possibile abilitare un'identità gestita direttamente in un'istanza del servizio. Quando si abilita un'identità gestita assegnata dal sistema durante la creazione del servizio, viene creata un'identità in Microsoft Entra associata al ciclo di vita dell'istanza del servizio. Per impostazione predefinita, solo questa specifica risorsa di Azure può usare questa identità per richiedere token ad Microsoft Entra ID. Quindi quando la risorsa viene eliminata, Azure elimina automaticamente anche l'identità.
  • Assegnate dall'utente: è anche possibile creare un'identità gestita come risorsa di Azure autonoma. È possibile creare un'identità gestita assegnata dall'utente e assegnarla a una o più istanze di una data factory. Le identità gestite assegnate dall'utente vengono gestite separatamente rispetto alle risorse che le usano.

L'identità gestita offre i vantaggi seguenti:

  • Archiviazione delle credenziali in Azure Key Vault, in cui l'identità gestita dal caso viene usata per l'autenticazione ad Azure Key Vault.
  • Accesso ad archivi dati o ambienti di calcolo usando l'autenticazione dell'identità gestita, tra cui Archiviazione BLOB di Azure, Esplora dati di Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, database SQL di Azure, Istanza gestita di SQL di Azure, Azure Synapse Analytics, REST, attività Databricks, attività Web e così via. Vedere gli articoli sul connettore e sull'attività per informazioni dettagliate.
  • L'identità gestita viene usata anche per crittografare/decrittografare i dati e i metadati mediante la chiave gestita dal cliente archiviata in Azure Key Vault, fornendo una doppia crittografia.

Identità gestita assegnata dal sistema

Nota

L'identità gestita assegnata dal sistema viene anche definita "Identità gestita" altrove nella documentazione e in Data Factory Studio per scopi di compatibilità con le versioni precedenti. Quando si fa riferimento all'identità gestita assegnata dall'utente, verrà menzionata in modo esplicito.

Generare un'identità gestita assegnata dal sistema

L'identità gestita assegnata dal sistema viene generata come segue:

  • Quando si crea una data factory tramite portale di Azure o PowerShell, l'identità gestita verrà sempre creata automaticamente.
  • Quando si crea una data factory tramite SDK, l'identità gestita verrà creata solo se si specifica "Identity = new FactoryIdentity()" nell'oggetto factory per la creazione. Vedere l'esempio in Guida introduttiva a .NET - Creare una data factory.
  • Quando si crea una data factory tramite l'API REST, l'identità gestita verrà creata solo se si specifica la sezione "identity" nel corpo della richiesta. Vedere l'esempio nella guida introduttiva di REST per la creazione di una data factory.

Se l'istanza del servizio non dispone di un'identità gestita associata dopo aver recuperato l'istruzione relativa all'identità gestita, è possibile generarne una in modo esplicito aggiornandola con l'iniziatore di identità a livello di codice:

Nota

  • Non è possibile modificare l'identità gestita. L'aggiornamento di un'istanza del servizio che ha già un'identità gestita non avrà alcun impatto e l'identità gestita rimane invariata.
  • Se si aggiorna un'istanza del servizio che dispone già di un'identità gestita senza specificare il parametro "identity" negli oggetti factory o senza specificare la sezione "identity" nel corpo della richiesta REST, verrà visualizzato un errore.
  • Quando si elimina un'istanza del servizio, verrà eliminata anche l'identità gestita associata.

Generare un'identità gestita assegnata dal sistema con PowerShell

Chiamare il comando Set-AzDataFactoryV2 , quindi vengono visualizzati i campi "Identity" appena generati:

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

Generare un'identità gestita assegnata dal sistema usando l'API REST

Nota

Se si tenta di aggiornare un'istanza del servizio che dispone già di un'identità gestita senza specificare il parametro Identity nell'oggetto factory o specificando una sezione Identity nel corpo della richiesta REST, verrà visualizzato un errore.

Chiamare l'API seguente con la sezione "identity" nel corpo della richiesta:

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" }.

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

Risposta: l'identità gestita viene creata automaticamente e la sezione "identity" viene popolata di conseguenza.

{
    "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>"
}

Generare un'identità gestita assegnata dal sistema usando un modello di Azure Resource Manager

Modello: aggiungere "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"
        }
    }]
}

Generare un'identità gestita assegnata dal sistema tramite SDK

Chiamare la funzione create_or_update con Identity=new FactoryIdentity(). Di seguito è riportato codice di esempio con .NET:

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

Recuperare l'identità gestita assegnata dal sistema

È possibile recuperare l'identità gestita da portale di Azure o a livello di codice. Le sezioni seguenti illustrano alcuni esempi.

Suggerimento

Se l'identità gestita non viene visualizzata, generare un'identità gestita aggiornando l'istanza del servizio.

Recuperare l'identità gestita assegnata dal sistema usando portale di Azure

È possibile trovare le informazioni sull'identità gestita da portale di Azure,> ovvero la data factory -> Proprietà.

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

  • ID oggetto Identity gestito
  • Tenant dell'identità gestita

Le informazioni sull'identità gestita verranno visualizzate anche quando si crea un servizio collegato, che supporta l'autenticazione dell'identità gestita, ad esempio BLOB di Azure, Azure Data Lake Archiviazione, Azure Key Vault e così via.

Per concedere le autorizzazioni, seguire questa procedura. Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

  1. Seleziona Controllo di accesso (IAM).

  2. Seleziona Aggiungi>Aggiungi assegnazione ruolo.

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

  3. Nella scheda Membri selezionare Identità gestita e quindi selezionare Seleziona membri.

  4. Seleziona la tua sottoscrizione di Azure.

  5. In Identità gestita assegnata dal sistema selezionare Data Factory e quindi selezionare una data factory. È anche possibile usare l'ID oggetto o il nome della data factory (come nome dell'identità gestita) per trovare questa identità. Per ottenere l'ID applicazione dell'identità gestita, usare PowerShell.

  6. Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.

Recuperare l'identità gestita assegnata dal sistema tramite PowerShell

L'ID dell'entità di identità gestita e l'ID tenant verranno restituiti quando si ottiene un'istanza del servizio specifica come indicato di seguito. Usare PrincipalId per concedere l'accesso:

PS C:\> (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 l'ID entità precedente, quindi eseguendo sotto il comando Microsoft Entra ID con ID entità come parametro.

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

Recuperare l'identità gestita usando l'API REST

L'ID dell'entità di identità gestita e l'ID tenant verranno restituiti quando si ottiene un'istanza del servizio specifica come indicato di seguito.

Chiamare l'API seguente nella richiesta:

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

Risposta: si otterrà una risposta come illustrato nell'esempio seguente. La sezione "identity" viene popolata di conseguenza.

{
    "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":{

    }
}

Suggerimento

Per recuperare l'identità gestita da un modello di Resource Manager, aggiungere una sezione outputs in ARM JSON:

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

Identità gestita assegnata dall'utente

È possibile creare, eliminare, gestire le identità gestite assegnate dall'utente in Microsoft Entra ID. Per altri dettagli, vedere Creare, elencare, eliminare o assegnare un ruolo a un'identità gestita assegnata dall'utente usando il portale di Azure.

Per usare un'identità gestita assegnata dall'utente, è prima necessario creare le credenziali nell'istanza del servizio per l'UAMI.

Vedere gli argomenti seguenti che illustrano quando e come usare l'identità gestita:

Per altre informazioni sulle identità gestite per le risorse di Azure, vedere Managed Identityes for Azure Resources Overview (Panoramica delle identità gestite per le risorse di Azure) su cui si basa l'identità gestita in Azure Data Factory.

Vedere Limitazioni delle identità gestite, che si applicano anche alle identità gestite in Azure Data Factory.