Condividi tramite


Identità gestita per Azure Data Factory

APPLICABILE A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Data Factory in Microsoft Fabric è la nuova generazione di Azure Data Factory, con un'architettura più semplice, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con l'integrazione dei dati, iniziare con Fabric Data Factory. I carichi di lavoro di Azure Data Factory esistenti possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.

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

Nota

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

Panoramica

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

Sono disponibili due tipi di identità gestite supportate:

  • Assegnata dal sistema: è possibile abilitare un'identità gestita direttamente in un'istanza del servizio. Quando si consente 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 tale risorsa Azure può usare questa identità per richiedere token da Microsoft Entra ID. Pertanto, quando la risorsa viene eliminata, Azure elimina automaticamente l'identità per te.
  • User-assigned: È anche possibile creare un'identità gestita come risorsa autonoma Azure. È 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 a Archiviazione di Azure e Azure Key Vault.

L'identità gestita offre i vantaggi seguenti:

  • Memorizza la credenziale in Azure Key Vault, nel qual caso viene usata l'identità gestita per l'autenticazione di Azure Key Vault.
  • Accedere ad archivi dati o calcoli usando l'autenticazione con identità gestita, tra cui Azure Blob Storage, 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 altro ancora. Consultare gli articoli relativi al connettore e all'attività per informazioni dettagliate.
  • L'identità gestita viene usata anche per crittografare/decrittografare i dati e i metadati usando la chiave gestita dal cliente archiviata in Azure Key Vault, fornendo la doppia crittografia.

Ruoli richiesti per le identità gestite

Per usare in modo efficace le identità gestite in Azure Data Factory, è necessario assegnare ruoli specifici per garantire l'accesso e la funzionalità appropriati. Di seguito sono riportati i ruoli richiesti:

  • Identità gestita assegnata dal sistema

    • Ruolo Lettore: questo ruolo è necessario per leggere i metadati delle risorse.
    • Ruolo Collaboratore: questo ruolo è necessario per gestire le risorse a cui deve accedere l'identità gestita.
  • Identità gestita assegnata dall'utente

    • Ruolo Operatore di identità gestita: questo ruolo consente di gestire l’identità gestita assegnata dall’utente.
    • Ruolo Lettore: questo ruolo è necessario per leggere i metadati delle risorse.
    • Ruolo Collaboratore: questo ruolo è necessario per gestire le risorse a cui deve accedere l'identità gestita.

Nota

  • Gli utenti con il ruolo Collaboratore Data Factory possono creare ed eseguire pipeline che usano sia l'identità gestita assegnata dal sistema (SAMI) che qualsiasi identità gestita assegnata dall'utente collegata alla data factory. Queste identità ereditano tutte le autorizzazioni già concesse alle risorse esterne, ad esempio account di archiviazione, database SQL, Key Vault Fabric Lakehouse.
  • Assegnare il ruolo Collaboratore solo alle entità attendibili e all'ambito più ristretto possibile. Esaminare e limitare le autorizzazioni concesse alle identità gestite della data factory, utilizzare RBAC con privilegio minimo sulle risorse downstream e controllare regolarmente le assegnazioni di ruolo e i log delle attività.

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 generata come segue:

  • Quando si crea una data factory tramite Azure portale 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 .NET Avvio rapido - Creare 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": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "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(). 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 l'identità gestita assegnata dal sistema usando Azure portale

È possibile trovare le informazioni sull'identità gestita nel portale di Azure -> la tua Data Factory -> Proprietà.

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

  • ID oggetto dell'identità gestita
  • Tenant di 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 Azure, Azure Data Lake Storage, Azure Key Vault e così via.

Per concedere le autorizzazioni per l'identità gestita di Data Factory alle origini dati di Azure, seguire la seguente procedura. Per i passaggi dettagliati, vedere Assegnare i ruoli di Azure usando il portale di Azure.

  1. Selezionare Control di accesso (IAM) nella pagina del portale di Azure per l'origine dati.

  2. Seleziona Aggiungi>Aggiungi assegnazione ruolo.

    Screenshot che mostra la pagina Controllo di accesso (IAM) con il menu Aggiungi assegnazione di ruolo aperto.

  3. Selezionare il ruolo necessario per concedere l'accesso necessario all'origine dati. Questo può variare a seconda dell'origine dei dati e delle autorizzazioni necessarie per la data factory. Ad esempio, se data factory deve leggere solo da un SQL Server di Azure, selezionare il ruolo Reader.

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

  5. Selezionare la sottoscrizione Azure.

  6. 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.

  7. 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à dell'identità gestita e l'ID tenant verranno restituiti quando si recupera un'istanza del servizio specifica, come illustrato di seguito. Usare PrincipalId per concedere l'accesso:

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

PrincipalId                          TenantId
-----------                          --------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee

È possibile ottenere l'ID applicazione copiando l'ID dell'entità precedente, quindi eseguendo il seguente comando di Microsoft Entra ID con l'ID entità come parametro.

PS C:\> Get-AzADServicePrincipal -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName           : ADFV2DemoFactory
Id                    : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type                  : ServicePrincipal

Recuperare un'identità gestita tramite API REST

L'ID entità dell'identità gestita e l'ID tenant verranno restituiti quando si recupera un'istanza del servizio specifica, come illustrato 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

Response: si otterrà la risposta indicata nell'esempio seguente. La sezione "identity" viene popolata di conseguenza.

{
    "name":"<dataFactoryName>",
    "identity":{
        "type":"SystemAssigned",
        "principalId":"bbbbbbbb-cccc-dddd-2222-333333333333",
        "tenantId":"aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "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 altri dettagli, vedere Creare, elencare, eliminare o assegnare un ruolo a un'identità gestita assegnata dall'utente usando il portale di Azure.

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

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

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

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