Identidades gerenciadas para o Azure Synapse Analytics
Este artigo ajuda a compreender a identidade gerida (anteriormente conhecida como Identidade de Serviço Gerida/MSI) e como funciona no Azure Synapse.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Descrição geral
As identidades geridas eliminam a necessidade de gerir credenciais. As identidades geridas fornecem uma identidade para a instância do serviço ao ligar a recursos que suportam a autenticação do Microsoft Entra. Por exemplo, o serviço pode utilizar uma identidade gerida para aceder a recursos como o Azure Key Vault, onde os administradores de dados podem armazenar credenciais de forma segura ou aceder a contas de armazenamento. O serviço utiliza a identidade gerida para obter os tokens do Microsoft Entra.
Existem dois tipos de identidades geridas suportadas:
- Atribuídas pelo sistema: pode ativar uma identidade gerida diretamente numa instância do serviço. Quando permite uma identidade gerida atribuída pelo sistema durante a criação do serviço, é criada uma identidade no Microsoft Entra associada ao ciclo de vida dessa instância do serviço. Por predefinição, apenas esse recurso do Azure pode utilizar essa identidade para pedir tokens ao Microsoft Entra ID. Assim, quando o recurso é eliminado, o Azure elimina automaticamente a identidade por si. O Azure Synapse Analytics requer a criação de uma identidade gerida atribuída pelo sistema juntamente com a área de trabalho do Synapse.
- Atribuído pelo usuário: você também pode criar uma identidade gerenciada como um recurso autônomo do Azure. Pode criar uma identidade gerida atribuída pelo utilizador e atribuí-la a uma ou mais instâncias de uma área de trabalho do Synapse. Nas identidades geridas atribuídas pelo utilizador, a identidade é gerida separadamente dos recursos que a utilizam.
A identidade gerida oferece as seguintes vantagens:
- Armazenar as credenciais no Azure Key Vault, na qual a identidade gerida por caso é utilizada para a autenticação no Azure Key Vault.
- Aceder a arquivos de dados ou cálculos através da autenticação de identidade gerida, incluindo o armazenamento de Blobs do Azure, o Azure Data Explorer, o Azure Data Lake Storage Gen1, o Azure Data Lake Storage Gen2, a Base de Dados SQL do Azure, o Azure SQL Managed Instance, o Azure Synapse Analytics, REST, atividade do Databricks, atividade na Web e muito mais. Veja mais detalhes nos artigos relativos ao conector e à atividade.
- A identidade gerida também é utilizada para encriptar/desencriptar dados e metadados com a chave gerida pelo cliente armazenada no Azure Key Vault, fornecendo encriptação dupla.
Identidade gerida atribuída pelo sistema
Nota
A identidade gerenciada atribuída ao sistema também é chamada de "Identidade gerenciada" em outro lugar na documentação e na interface do usuário do Synapse Studio para fins de compatibilidade com versões anteriores. Mencionaremos explicitamente a "identidade gerenciada atribuída pelo usuário" ao nos referirmos a ela.
Recuperar identidade gerenciada atribuída ao sistema usando o portal do Azure
Você pode encontrar as informações de identidade gerenciada no portal do Azure -> seu espaço de trabalho Synapse -> Propriedades.
As informações de identidade gerenciada também aparecerão quando você criar um serviço vinculado, que dá suporte à autenticação de identidade gerenciada, como o Blob do Azure, o Armazenamento do Azure Data Lake, o Cofre da Chave do Azure, etc.
Para conceder permissões, siga estas etapas. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Selecione Controlo de acesso (IAM) .
Selecione Adicionar>Adicionar atribuição de função.
No separador Membros, selecione Identidade gerida e, em seguida, selecione Selecionar membros.
Selecione a subscrição do Azure.
Em Identidade gerenciada atribuída ao sistema, selecione Espaço de trabalho Sinapse e, em seguida, selecione um espaço de trabalho. Você também pode usar o ID do objeto ou o nome do espaço de trabalho (como o nome da identidade gerenciada) para localizar essa identidade. Para obter a ID do aplicativo da identidade gerenciada, use o PowerShell.
No separador Rever + atribuir, selecione Rever + atribuir para atribuir a função.
Recuperar identidade gerenciada atribuída ao sistema usando o PowerShell
A ID da entidade de identidade gerenciada e a ID do locatário serão retornadas quando você obtiver uma instância de serviço específica da seguinte maneira. Use o PrincipalId para conceder acesso:
PS C:\> (Get-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity
IdentityType PrincipalId TenantId
------------ ----------- --------
SystemAssigned aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee
Você pode obter a ID do aplicativo copiando acima da ID principal e, em seguida, executando abaixo do comando ID do Microsoft Entra com a ID principal como parâmetro.
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
Recuperar identidade gerenciada usando a API REST
A ID da entidade de identidade gerenciada e a ID do locatário serão retornadas quando você obtiver uma instância de serviço específica da seguinte maneira.
Chame abaixo a API na solicitação:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01
Resposta: Você receberá uma resposta como mostrado no exemplo abaixo. A secção "identidade" é preenchida em conformidade.
{
"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": {}
}
Gorjeta
Para recuperar a identidade gerenciada de um modelo ARM, adicione uma seção de saídas no JSON ARM:
{
"outputs":{
"managedIdentityObjectId":{
"type":"string",
"value":"[reference(resourceId('Microsoft.Synapse/workspaces', parameters('<workspaceName>')), '2018-06-01', 'Full').identity.principalId]"
}
}
}
Gerar identidade gerenciada atribuída ao sistema
A identidade gerenciada atribuída ao sistema é gerada da seguinte maneira:
- Ao criar um espaço de trabalho Synapse por meio do portal do Azure ou do PowerShell, a identidade gerenciada sempre será criada automaticamente.
- Ao criar um espaço de trabalho por meio do SDK, a identidade gerenciada será criada somente se você especificar Identity = new ManagedIdentity" no objeto de espaço de trabalho Synapse para criação." Veja o exemplo em .NET Quickstart - Create data factory.
- Ao criar o espaço de trabalho Synapse por meio da API REST, a identidade gerenciada será criada somente se você especificar a seção "identidade" no corpo da solicitação. Veja o exemplo em Guia de início rápido REST - criar data factory.
Se você achar que sua instância de serviço não tem uma identidade gerenciada associada após a instrução de recuperação de identidade gerenciada, poderá gerar explicitamente uma atualizando-a com o iniciador de identidade programaticamente:
- Gerar identidade gerenciada usando o PowerShell
- Gerar identidade gerenciada usando a API REST
- Gerar identidade gerenciada usando um modelo do Azure Resource Manager
- Gerar identidade gerenciada usando SDK
Nota
- A identidade gerenciada não pode ser modificada. A atualização de uma instância de serviço que já tenha uma identidade gerenciada não terá nenhum impacto e a identidade gerenciada será mantida inalterada.
- Se você atualizar uma instância de serviço que já tenha uma identidade gerenciada sem especificar o parâmetro "identity" nos objetos de fábrica ou espaço de trabalho ou sem especificar a seção "identity" no corpo da solicitação REST, você receberá um erro.
- Quando você exclui uma instância de serviço, a identidade gerenciada associada será excluída junto.
Gerar identidade gerenciada atribuída ao sistema usando o PowerShell
Chame o comando New-AzSynapseWorkspace e, em seguida, você verá os campos "Identidade" sendo gerados recentemente:
PS C:\> $password = ConvertTo-SecureString -String "****" -AsPlainText -Force
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
Gerar identidade gerenciada atribuída ao sistema usando a API REST
Nota
Se você tentar atualizar uma instância de serviço que já tenha uma identidade gerenciada sem especificar o parâmetro identity no objeto de espaço de trabalho ou fornecer uma seção de identidade no corpo da solicitação REST, receberá um erro.
Chame a API abaixo com a seção "identidade" no corpo da solicitação:
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01
Corpo da solicitação: adicione "identity": { "type": "SystemAssigned" }.
{
"name": "<workspaceName>",
"location": "<region>",
"properties": {},
"identity": {
"type": "SystemAssigned"
}
}
Resposta: a identidade gerenciada é criada automaticamente e a seção "identidade" é preenchida de acordo.
{
"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>"
}
Gerar identidade gerenciada atribuída ao sistema usando um modelo do Azure Resource Manager
Modelo: adicionar "identidade": { "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"
}
}]
}
Gerar identidade gerenciada atribuída ao sistema usando 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);
Recuperar identidade gerenciada atribuída ao sistema
Você pode recuperar a identidade gerenciada do portal do Azure ou programaticamente. As seções a seguir mostram alguns exemplos.
Gorjeta
Se você não vir a identidade gerenciada, gere a identidade gerenciada atualizando sua instância de serviço.
Executar Blocos de Anotações do Azure Synapse Spark com identidade gerenciada atribuída ao sistema
Você pode executar facilmente o Synapse Spark Notebooks com a identidade gerenciada atribuída ao sistema (ou identidade gerenciada pelo espaço de trabalho) habilitando Executar como identidade gerenciada no menu Configurar sessão . Para executar o Spark Notebooks com identidade gerenciada de espaço de trabalho, os usuários precisam ter as seguintes funções RBAC:
- Synapse Compute Operator no espaço de trabalho ou pool Spark selecionado
- Usuário de credenciais Synapse na identidade gerenciada do espaço de trabalho
Nota
Os blocos de anotações Synapse e as definições de trabalho do Spark suportam apenas o uso de identidade gerenciada atribuída pelo sistema por meio de serviços vinculados e das APIs mssparkutils. O MSAL e outras bibliotecas de autenticação não podem usar a identidade gerenciada atribuída ao sistema. Em vez disso, você pode gerar uma entidade de serviço e armazenar as credenciais no Cofre da Chave.
Identidade gerida atribuída pelo utilizador
Você pode criar, excluir e gerenciar identidades gerenciadas atribuídas pelo usuário no Microsoft Entra ID. Para obter mais informações, consulte Criar, listar, excluir ou atribuir uma função a uma identidade gerenciada atribuída pelo usuário usando o portal do Azure.
Para usar uma identidade gerenciada atribuída pelo usuário, você deve primeiro criar credenciais em sua instância de serviço para o UAMI.
Nota
Atualmente, a Identidade Gerenciada atribuída pelo usuário não é suportada em blocos de anotações Synapse e definições de trabalho do Spark.
Próximos passos
Consulte os seguintes artigos que apresentam quando e como usar a identidade gerenciada:
- Armazene a credencial no Cofre da Chave do Azure.
- Copie dados de/para o Repositório Azure Data Lake usando identidades gerenciadas para autenticação de recursos do Azure.
Consulte Visão geral de identidades gerenciadas para recursos do Azure para obter mais informações sobre identidades gerenciadas para recursos do Azure, nas quais a identidade gerenciada no Azure Synapse se baseia.