Identità gestita per Azure Synapse
Questo articolo fornisce informazioni sull'identità gestita (precedentemente nota come Identità del servizio gestita/MSI) e su come funziona in Azure Synapse.
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à. Azure Synapse Analytics richiede la creazione di un'identità gestita assegnata dal sistema insieme all'area di lavoro di Synapse.
- 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'area di lavoro di Synapse. 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 è anche detta 'identità gestita' altrove nella documentazione e nell'interfaccia utente di Synapse 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 un'area di lavoro di Synapse tramite il portale di Azure o PowerShell, l'identità gestita verrà sempre creata automaticamente.
- Quando si crea un'area di lavoro tramite SDK, l'identità gestita verrà creata solo se si specifica Identity = new ManagedIdentity nell'oggetto area di lavoro di Synapse per la creazione. Vedere l'esempio nella guida di Avvio rapido di .NET - Creare una data factory.
- Quando si crea un'area di lavoro 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:
- Generare un'identità gestita tramite PowerShell
- Generare un'identità gestita tramite API REST
- Generare un'identità gestita tramite un modello di Azure Resource Manager
- Generare un'identità gestita tramite SDK
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 o area di lavoro 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 New-AzSynapseWorkspace, quindi verranno generati i campi "Identity":
PS C:\> $creds = New-Object System.Management.Automation.PSCredential ("ContosoUser", $password)
PS C:\> New-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName> -Location <region> -DefaultDataLakeStorageAccountName <storageAccountName> -DefaultDataLakeStorageFileSystem <fileSystemName> -SqlAdministratorLoginCredential $creds
DefaultDataLakeStorage : Microsoft.Azure.Commands.Synapse.Models.PSDataLakeStorageAccountDetails
ProvisioningState : Succeeded
SqlAdministratorLogin : ContosoUser
VirtualNetworkProfile :
Identity : Microsoft.Azure.Commands.Synapse.Models.PSManagedIdentity
ManagedVirtualNetwork :
PrivateEndpointConnections : {}
WorkspaceUID : <workspaceUid>
ExtraProperties : {[WorkspaceType, Normal], [IsScopeEnabled, False]}
ManagedVirtualNetworkSettings :
Encryption : Microsoft.Azure.Commands.Synapse.Models.PSEncryptionDetails
WorkspaceRepositoryConfiguration :
Tags :
TagsTable :
Location : <region>
Id : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/
Microsoft.Synapse/workspaces/<workspaceName>
Name : <workspaceName>
Type : Microsoft.Synapse/workspaces
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 area di lavoro 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/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01
Corpo della richiesta: aggiungere "identity": { "type": "SystemAssigned" }.
{
"name": "<workspaceName>",
"location": "<region>",
"properties": {},
"identity": {
"type": "SystemAssigned"
}
}
Risposta: l'identità gestita viene creata automaticamente e la sezione "identity" viene popolata di conseguenza.
{
"name": "<workspaceName>",
"tags": {},
"properties": {
"provisioningState": "Succeeded",
"loggingStorageAccountKey": "**********",
"createTime": "2021-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.Synapse/workspaces/<workspaceName>",
"type": "Microsoft.Synapse/workspaces",
"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": "<workspaceName>",
"apiVersion": "2018-06-01",
"type": "Microsoft.Synapse/workspaces",
"location": "<region>",
"identity": {
"type": "SystemAssigned"
}
}]
}
Generare un'identità gestita assegnata dal sistema tramite SDK
Workspace workspace = new Workspace
{
Identity = new ManagedIdentity
{
Type = ResourceIdentityType.SystemAssigned
},
DefaultDataLakeStorage = new DataLakeStorageAccountDetails
{
AccountUrl = <defaultDataLakeStorageAccountUrl>,
Filesystem = <DefaultDataLakeStorageFilesystem>
},
SqlAdministratorLogin = <SqlAdministratorLoginCredentialUserName>
SqlAdministratorLoginPassword = <SqlAdministratorLoginCredentialPassword>,
Location = <region>
};
client.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workspace);
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 nel portale di Azure -> area di lavoro di Synapse -> Proprietà.
- ID oggetto dell'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.
Seleziona Controllo di accesso (IAM).
Seleziona Aggiungi>Aggiungi assegnazione ruolo.
Nella scheda Membri selezionare Identità gestita e quindi Seleziona membri.
Seleziona la tua sottoscrizione di Azure.
In Identità gestita assegnata dal sistemaselezionare Area di lavoro di Synapse e quindi selezionare un'area di lavoro. È 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.
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-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity
IdentityType PrincipalId TenantId
------------ ----------- --------
SystemAssigned aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee
È 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 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 : <workspaceName>
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
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.Synapse/workspaces/{workspaceName}?api-version=2018-06-01
Response: si otterrà la risposta indicata nell'esempio seguente. La sezione "identity" viene popolata di conseguenza.
{
"properties": {
"defaultDataLakeStorage": {
"accountUrl": "https://exampledatalakeaccount.dfs.core.windows.net",
"filesystem": "examplefilesystem"
},
"encryption": {
"doubleEncryptionEnabled": false
},
"provisioningState": "Succeeded",
"connectivityEndpoints": {
"web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2{subscriptionId}%2fresourceGroups%2f{resourceGroupName}%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2f{workspaceName}",
"dev": "https://{workspaceName}.dev.azuresynapse.net",
"sqlOnDemand": "{workspaceName}-ondemand.sql.azuresynapse.net",
"sql": "{workspaceName}.sql.azuresynapse.net"
},
"managedResourceGroupName": "synapseworkspace-managedrg-f77f7cf2-XXXX-XXXX-XXXX-c4cb7ac3cf4f",
"sqlAdministratorLogin": "sqladminuser",
"privateEndpointConnections": [],
"workspaceUID": "e56f5773-XXXX-XXXX-XXXX-a0dc107af9ea",
"extraProperties": {
"WorkspaceType": "Normal",
"IsScopeEnabled": false
},
"publicNetworkAccess": "Enabled",
"cspWorkspaceAdminProperties": {
"initialWorkspaceAdminObjectId": "3746a407-XXXX-XXXX-XXXX-842b6cf1fbcc"
},
"trustedServiceBypassEnabled": false
},
"type": "Microsoft.Synapse/workspaces",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}",
"location": "eastus",
"name": "{workspaceName}",
"identity": {
"type": "SystemAssigned",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
},
"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.Synapse/workspaces', parameters('<workspaceName>')), '2018-06-01', 'Full').identity.principalId]"
}
}
}
Eseguire notebook Spark di Azure Synapse con l'identità gestita assegnata dal sistema
È possibile eseguire facilmente i notebook Spark di Synapse con l'identità gestita assegnata dal sistema (o l'identità gestita dell'area di lavoro) abilitando Esegui come identità gestita nel menu Configura sessione. Per eseguire notebook Spark con l'identità gestita dell'area di lavoro, gli utenti devono avere i ruoli Controllo degli accessi in base al ruolo seguenti:
- Operatore ambiente id calcolo di Synapse per l'area di lavoro o il pool di Spark selezionato
- Utente credenziali di Synapse per l'identità gestita dell'area di lavoro
Nota
I notebook Synapse e le definizioni dei processi Spark supportano l'uso dell'identità gestita assegnata dal sistema solo tramite servizi collegati e le API mssparkutils. MSAL e altre librerie di autenticazione non possono usare l'identità gestita assegnata dal sistema. È invece possibile generare un'entità servizio e archiviare le credenziali in Key Vault.
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.
Nota
L'identità gestita assegnata dall'utente non è attualmente supportata nei notebook Synapse e nelle definizioni dei processi Spark.
Passaggi successivi
Vedere gli argomenti seguenti che illustrano quando e come usare l'identità gestita:
- Archiviare le credenziali in Azure Key Vault.
- Copiare dati da e verso Azure Data Lake Store usando identità gestite per l'autenticazione di risorse di Azure.
Per altre informazioni generali sulle identità gestite per le risorse di Azure, su cui si basa l'identità gestita in Azure Synapse, vedere Panoramica delle identità gestite per le risorse di Azure.