Condividi tramite


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 all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo fornisce informazioni sull'identità gestita (precedentemente nota come Identità del servizio gestita/MSI) e su come funziona 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 un data factory. Le identità gestite assegnate dall'utente vengono gestite separatamente rispetto alle risorse che le usano.

Nota

Il bypass attendibile non può utilizzare identità gestite assegnate dall'utente. Può usare solo identità gestite assegnate dal sistema per la connessione ad Archiviazione di Azure e Azure Key Vault.

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 è anche detta 'identità gestita' altrove nella documentazione e nell'interfaccia utente di Data factory Studio per motivi 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 assegnata come segue:

  • Quando si crea una data factory tramite il portale di Azure o PowerShell, l'identità gestita verrà sempre creata automaticamente.
  • Quando si crea la 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 nella guida introduttiva di .NET per la creazione di 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 seguendo le istruzioni riportate in Recuperare l'identità gestita risulta che all'istanza del servizio non è associata un'identità gestita, è possibile generarne esplicitamente una aggiornandola con l'iniziatore di identità a livello di codice:

Nota

  • L'identità gestita non può essere modificata. L'aggiornamento di un'istanza del servizio che ha già un'identità gestita non avrà alcun impatto e l'identità gestita rimarrà inalterata.
  • Se si aggiorna un'istanza del servizio che ha già un'identità gestita senza specificare il parametro "identity" nell'oggetto factory oppure senza specificare la sezione "identity" nel corpo della richiesta REST, verrà generato un errore.
  • Quando si elimina un'istanza del servizio, viene eliminata anche l'identità gestita associata.

Generare un'identità gestita assegnata dal sistema tramite PowerShell

Chiamare il comando Set-AzDataFactoryV2. Verranno visualizzati i nuovi campi "Identity" 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 tramite API REST

Nota

Se si tenta di aggiornare un'istanza del servizio che ha già un'identità gestita senza specificare il parametro identity nell'oggetto factory oppure senza specificare la sezione identity nel corpo della richiesta REST, verrà generato 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 l'identità gestita assegnata dal sistema tramite 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 un'identità gestita assegnata dal sistema

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

Suggerimento

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

Recuperare un'identità gestita assegnata dal sistema tramite il portale di Azure

È possibile trovare le informazioni sull'identità gestita dal portale di Azure -> Data factory -> Proprietà.

Mostra il portale di Azure con l'ID oggetto identità gestita dal sistema e il tenant di identità per un'istanza di Azure Data Factory.

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

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.

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 che mostra la pagina Controllo di accesso (IAM) con il menu Aggiungi assegnazione di ruolo aperto.

  3. Nella scheda Membri selezionare Identità gestita e quindi 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 dell'area di lavoro (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 un'identità gestita assegnata dal sistema tramite PowerShell

L'ID entità e l'ID tenant dell'identità gestita verranno restituiti quando si recupera una specifica istanza del servizio come segue. 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 il comando di Microsoft Entra ID seguente con l'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 un'identità gestita tramite API REST

L'ID entità e l'ID tenant dell'identità gestita verranno restituiti quando si recupera una specifica istanza del servizio come segue.

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

Response: si otterrà la risposta indicata 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 ARM, aggiungere una sezione outputs in JSON ARM:

{
    "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 altre informazioni, vedere Creare, elencare, eliminare o assegnare un ruolo a un'identità gestita assegnata dall'utente mediante il portale di Azure.

Per usare un'identità gestita assegnata dall'utente, è necessario prima di tutto creare credenziali nell'istanza del servizio.

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

Per altre informazioni generali sulle identità gestite per le risorse di Azure, su cui si basa l'identità gestita in Azure Data Factory, vedere Panoramica delle identità gestite per le risorse di Azure.

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