Identidade Gerenciada para Azure Data Factory
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
Este artigo ajuda você a entender a identidade gerenciada (antes conhecida como Identidade de Serviço Gerenciada/MSI) e como ela funciona no Azure Data Factory.
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Visão geral
As identidades gerenciadas eliminam a necessidade de gerenciar credenciais. As identidades gerenciadas fornecem uma identidade para a instância de serviço ao se conectar a recursos que dão suporte à autenticação do Microsoft Entra. Por exemplo, o serviço pode usar uma identidade gerenciada para acessar recursos como o Azure Key Vault, em que administradores de dados podem armazenar credenciais de maneira segura ou acessar contas de armazenamento. O serviço usa a identidade gerenciada para obter tokens do Microsoft Entra.
Há dois tipos de identidades gerenciadas com suporte.
- Atribuído pelo sistema: você pode habilitar uma identidade gerenciada diretamente em uma instância de serviço. Quando você permite uma identidade gerenciada atribuída pelo sistema durante a criação do serviço, uma identidade é criada no Microsoft Entra associada ao ciclo de vida dessa instância de serviço. Por design, somente o recurso do Azure pode usar essa identidade para solicitar tokens do Microsoft Entra ID. Assim, quando o recurso é excluído, o Azure exclui automaticamente a identidade para você.
- Atribuídas pelo usuário: você também pode criar uma identidade gerenciada como um recurso autônomo do Azure. Você pode criar uma identidade gerenciada atribuída pelo usuário e atribuí-la a uma ou mais instâncias de um data factory. Em identidades gerenciadas atribuídas pelo usuário, a identidade é gerenciada separadamente dos recursos que a usam.
Observação
O bypass confiável não pode utilizar identidades gerenciadas atribuídas pelo usuário. Ele só pode empregar identidades gerenciadas atribuídas pelo sistema para se conectar ao Armazenamento do Microsoft Azure e ao Azure Key Vault.
A identidade gerenciada oferece os seguintes benefícios:
- Armazenar credenciais no Azure Key Vault, no qual a identidade gerenciada por caso é usada para autenticação do Azure Key Vault.
- Acessar armazenamentos de dados ou computações usando a autenticação de identidade gerenciada, incluindo o armazenamento de Blobs do Azure, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, REST, atividade do Databricks, atividade da Web e muito mais. Verifique os artigos do conector e da atividade para obter detalhes.
- A identidade gerenciada também é usada para criptografar e descriptografar dados e metadados usando a chave gerenciada pelo cliente armazenada no Azure Key Vault, proporcionando a criptografia dupla.
Funções Requeridas para Identidades Gerenciadas
Para usar efetivamente identidades gerenciadas no Azure Data Factory, funções específicas deverão ser atribuídas para garantir o acesso e a funcionalidade adequados. Abaixo estão as funções necessárias:
Identidade Gerenciada Atribuída pelo Sistema
- Função Leitor: Essa função é necessária para a leitura dos metadados dos recursos.
- Função Colaborador: Essa função é necessária para gerenciar os recursos aos quais a identidade gerenciada precisa acessar.
Identidade Gerenciada Atribuída pelo Usuário
- Função de Operador de Identidade Gerenciada: Essa função permite o gerenciamento da identidade gerenciada atribuída pelo usuário.
- Função Leitor: Essa função é necessária para a leitura dos metadados dos recursos.
- Função Colaborador: Essa função é necessária para gerenciar os recursos aos quais a identidade gerenciada precisa acessar.
Identidade gerenciada atribuída pelo sistema
Observação
A identidade gerenciada atribuída pelo sistema também é conhecida como "identidade gerenciada" em outro lugar da documentação e no Data Factory Studio para fins de compatibilidade com versões anteriores. Mencionaremos explicitamente a 'identidade gerenciada atribuída pelo usuário' ao nos referirmos a ela.
Gerar identidade gerenciada atribuída pelo sistema
A identidade gerenciada atribuída pelo sistema é gerada da seguinte maneira:
- Ao criar um data factory por meio do portal do Azure ou do PowerShell, a identidade gerenciada sempre será criada automaticamente.
- Ao criar um data factory por meio do SDK, a identidade gerenciada será criada somente se você especificar "Identity = new FactoryIdentity()" no objeto do alocador para a criação.Veja o exemplo em Início rápido do .NET – Criar um data factory.
- Ao criar um data factory por meio da API REST, a identidade gerenciada será criada somente se você especificar a seção "identidade" no corpo da solicitação. Consulte o exemplo do início rápido do REST - criar data factory.
Se você achar que a instância de serviço não tem uma identidade gerenciada associada seguindo a instrução recuperar a identidade gerenciada, você pode gerar uma atualizando o iniciador de identidade de forma programática:
- Gerar a identidade gerenciada usando o PowerShell
- Gerar a identidade gerenciada usando a API REST
- Gerar identidade gerenciada usando um modelo do Azure Resource Manager
- Gerar a identidade gerenciada usando o SDK
Observação
- A identidade gerenciada não pode ser modificada. Atualizar uma instância de serviço que já tem uma identidade gerenciada não terá nenhum impacto, e a identidade gerenciada permanecerá inalterada.
- Se você atualizar uma instância de serviço que já tenha uma identidade gerenciada sem especificar o parâmetro "identity" nos objetos do alocador, ou sem especificar a seção "identity" no corpo da solicitação REST, você receberá um erro.
- Ao excluir uma instância de serviço, a identidade gerenciada associada também será excluída.
Identidade gerenciada atribuída pelo sistema usando o PowerShell
Chame o comando Set-AzDataFactoryV2 e você verá os campos "Identity" sendo recentemente gerados:
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
Gerar identidade gerenciada atribuída pelo sistema usando a API REST
Observação
Se você tentar atualizar uma instância de serviço que já tem uma identidade gerenciada sem especificar o parâmetro identity no objeto de fábrica, ou sem fornecer uma seção identity no corpo da solicitação REST, você receberá um erro.
Chame a API abaixo com a seção "identity" no corpo da solicitação:
PATCH https://management.azure.com/subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01
Corpo da solicitação: adicionar "identity": {"type": "SystemAssigned"}.
{
"name": "<dataFactoryName>",
"location": "<region>",
"properties": {},
"identity": {
"type": "SystemAssigned"
}
}
Resposta: a identidade gerenciada é criada automaticamente e a seção "identity" é preenchida de acordo.
{
"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>"
}
Gerar identidade gerenciada usando um modelo do Azure Resource Manager
Modelo: adicionar "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"
}
}]
}
Gerar identidade gerenciada atribuída pelo sistema usando ao SDK
Chame a função create_or_update com Identity=new FactoryIdentity(). Exemplo de código usando .NET:
Factory dataFactory = new Factory
{
Location = <region>,
Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);
Recuperar a identidade gerenciada atribuída pelo sistema
Você pode recuperar a identidade gerenciada no portal do Azure ou de forma programática. As seções a seguir mostram alguns exemplos.
Dica
Se você não vir a identidade gerenciada, gere a identidade gerenciada atualizando sua instância de serviço.
Recuperar identidade gerenciada atribuída pelo sistema usando o portal do Azure
Você pode encontrar as informações sobre a identidade gerenciada no portal do Azure –> seu data factory –> Propriedades.
- ID de objeto da identidade gerenciada
- Locatário da identidade gerenciada
As informações da identidade gerenciada também aparecerão quando você criar um serviço vinculado, que dá suporte à autenticação de identidade gerenciada, como Blob do Azure, Azure Data Lake Storage, Azure Key Vault etc.
Para conceder permissões, siga estas etapas. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.
Selecione IAM (Controle de acesso) .
Selecione Adicionar>Adicionar atribuição de função.
Na guia Membros, selecione Identidade gerenciadae selecione Selecionar membros.
Selecione sua assinatura do Azure.
Em Identidade gerenciada atribuída pelo sistema, selecione Data Factory e escolha um data factory. Use também a ID do objeto ou o nome do data factory (como o nome da identidade gerenciada) para encontrar essa identidade. Para obter a ID do aplicativo da identidade gerenciada, use o PowerShell.
Na guia Examinar + atribuir, selecione Examinar + atribuir para atribuir a função.
Recuperar identidade gerenciada atribuída pelo sistema usando o PowerShell
A ID da entidade de segurança da identidade gerenciada e a ID de locatário serão retornadas ao obter uma instância de serviço específica conforme a seguir. Use o PrincipalId para conceder acesso:
PS C:\> (Get-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity
PrincipalId TenantId
----------- --------
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee
Você pode obter a ID do aplicativo copiando a ID da entidade de segurança acima e, em seguida, executando abaixo do comando da ID do Microsoft Entra com a ID da entidade de segurança 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 : ADFV2DemoFactory
Id : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type : ServicePrincipal
Recuperar a identidade gerenciada usando a API REST
A ID da entidade de segurança da identidade gerenciada e a ID de locatário serão retornadas ao obter uma instância de serviço específica conforme a seguir.
Chame a API abaixo na solicitação:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01
Resposta: você receberá uma resposta como mostrado no exemplo abaixo. A seção "identity" é populada de acordo.
{
"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":{
}
}
Dica
Para recuperar a identidade gerenciada de um modelo do ARM, adicione uma seção de saídas no JSON do ARM:
{
"outputs":{
"managedIdentityObjectId":{
"type":"string",
"value":"[reference(resourceId('Microsoft.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
}
}
}
Identidade gerenciada atribuída pelo usuário
Você pode criar, excluir, gerenciar identidades gerenciadas atribuídas pelo usuário na ID do Microsoft Entra. Para obter mais detalhes, confira 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 ao usuário, você deve primeiro criar credenciais em sua instância de serviço para a UAMI.
Conteúdo relacionado
Confira os seguintes tópicos que apresentam quando e como usar a identidade gerenciada:
- Armazenar credencial no Azure Key Vault
- Copiar dados de/para o Azure Data Lake Store usando identidades gerenciadas para autenticação de recursos do Azure.
Confira Visão geral de identidades gerenciadas para recursos do Azure para ver mais informações sobre identidades gerenciadas para recursos do Azure, na qual a identidade gerenciada no Azure Data Factory se baseia.
Confira Limitações das identidades gerenciadas, que também se aplicam às identidades gerenciadas do Azure Data Factory.