Identità gestita per Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Questo articolo consente di comprendere che cos'è un'identità gestita per Data Factory (in precedenza nota come identità del servizio gestito/MSI) e come funziona.

Nota

Questo articolo è stato aggiornato per usare il modulo Az di Azure PowerShell. Il modulo Az di PowerShell è ora il modulo di PowerShell consigliato per l'interazione con Azure. Per iniziare a usare il modulo Az PowerShell, 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

Quando si crea un data factory, è possibile creare un'identità gestita insieme alla creazione della factory. L'identità gestita è un'applicazione gestita registrata Azure Active Directory e rappresenta questa specifica data factory.

L'identità gestita Data Factory vantaggi delle funzionalità seguenti:

  • Archiviare le credenziali Azure Key Vault, nel qual caso viene usata data factory'identità gestita per l Azure Key Vault autenticazione.
  • Accedere agli archivi dati o alle risorse di calcolo usando l'autenticazione di 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 altro ancora. Per informazioni dettagliate, vedere gli articoli relativi al connettore e all'attività.

Generare un'identità gestita

L'identità gestita Data Factory viene generata come segue:

Se il data factory non ha un'identità gestita associata seguendo l'istruzione di recupero dell'identità gestita, è possibile generarne in modo esplicito aggiornando il data factory con l'iniziatore di identità a livello di codice:

Nota

  • L'identità gestita non può essere modificata. L'data factory di un'identità gestita che ha già un'identità gestita non ha alcun impatto, ma l'identità gestita rimane invariata.
  • Se si aggiorna un data factory che ha già un'identità gestita senza specificare il parametro "identity" nell'oggetto factory o senza specificare la sezione "identity" nel corpo della richiesta REST, verrà visualizzato un errore.
  • Quando si elimina un data factory, l'identità gestita associata verrà eliminata insieme.

Generare un'identità gestita con PowerShell

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

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 un'identità gestita con l'API REST

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

Generare un'identità gestita usando un Azure Resource Manager personalizzato

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

Generare un'identità gestita usando l'SDK

Chiamare la funzione di creazione o aggiornamento di data factory 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

È 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 l'identità gestita aggiornando la factory.

Recuperare l'identità gestita usando portale di Azure

È possibile trovare le informazioni sull'identità gestita portale di Azure -> il data factory -> proprietà.

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

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

Quando si concede l'autorizzazione, nella scheda Controllo di accesso (IAM) della risorsa di Azure -> Aggiungi assegnazione di ruolo -> Assegna accesso a -> selezionare Data Factory in Identità gestita assegnata dal sistema -> selezionare in base al nome della factory; o, in generale, è possibile usare l'ID oggetto o data factory (come nome dell'identità gestita) per trovare questa identità. Se è necessario ottenere l'ID applicazione dell'identità gestita, è possibile usare PowerShell.

Recuperare l'identità gestita con PowerShell

L'ID entità identità gestita e l'ID tenant verranno restituiti quando si ottiene un data factory come indicato di seguito. Usare PrincipalId per concedere l'accesso:

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 l'ID entità precedente, quindi eseguendo sotto Azure Active Directory comando con l'ID entità come parametro.

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

Recuperare l'identità gestita tramite l'API REST

L'ID entità identità gestita e l'ID tenant verranno restituiti quando si ottiene un data factory 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 arm, 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]"
        }
    }
}

Passaggi successivi

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

Vedere Panoramica delle identità gestite per le risorse di Azure per altre informazioni sulle identità gestite per le risorse di Azure, data factory su cui si basa l'identità gestita.