Partilhar via


Identidade gerenciada para o Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Este artigo ajuda você a entender a identidade gerenciada (anteriormente conhecida como Identidade de Serviço Gerenciado/MSI) e como ela funciona no Azure Data Factory.

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.
  • Atribuída pelo utilizador: também pode criar uma identidade gerida 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. Nas identidades geridas atribuídas pelo utilizador, a identidade é gerida separadamente dos recursos que a utilizam.

Nota

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 Azure e ao Cofre da Chave do Azure.

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.

Funções necessárias para identidades gerenciadas

Para usar efetivamente identidades gerenciadas no Azure Data Factory, funções específicas devem ser atribuídas para garantir acesso e funcionalidade adequados. Abaixo estão as funções necessárias:

  • Identidade gerenciada atribuída pelo sistema

    • Função do leitor: Esta função é necessária para ler os metadados dos recursos.
    • Função de Colaborador: essa função é necessária para gerenciar os recursos que 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 do leitor: Esta função é necessária para ler os metadados dos recursos.
    • Função de Colaborador: essa função é necessária para gerenciar os recursos que a identidade gerenciada precisa acessar.

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 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 ao sistema

A identidade gerenciada atribuída ao sistema é gerada da seguinte maneira:

  • Ao criar uma fábrica de dados por meio do portal do Azure ou do PowerShell, a identidade gerenciada sempre será criada automaticamente.
  • Ao criar data factory por meio do SDK, a identidade gerenciada será criada somente se você especificar "Identity = new FactoryIdentity()" no objeto de fábrica para criação." Veja o exemplo em .NET Quickstart - Create data factory.
  • Ao criar uma fábrica de dados 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:

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 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 também será excluída.

Gerar identidade gerenciada atribuída ao sistema usando o PowerShell

Chame o comando Set-AzDataFactoryV2 e, em seguida, você verá os campos "Identidade" sendo gerados recentemente:

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 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 fábrica 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/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

Corpo da solicitação: adicione "identity": { "type": "SystemAssigned" }.

{
    "name": "<dataFactoryName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

Resposta: a identidade gerenciada é criada automaticamente e a seção "identidade" é 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 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": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Gerar identidade gerenciada atribuída ao sistema usando SDK

Chame a função create_or_update com Identity=new FactoryIdentity(). Código de exemplo usando .NET:

Factory dataFactory = new Factory
{
    Location = <region>,
    Identity = new FactoryIdentity()
};
client.Factories.CreateOrUpdate(resourceGroup, dataFactoryName, dataFactory);

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.

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 -> sua fábrica de dados -> Propriedades.

Mostra o portal do Azure com a ID do objeto de identidade gerenciada pelo sistema e o Locatário de Identidade para um Azure Data Factory.

  • ID do objeto de identidade gerenciado
  • Locatário de identidade gerenciada

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 para a identidade gerenciada do Data Factory para suas fontes de dados do Azure, siga estas etapas. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.

  1. Selecione Controle de acesso (IAM) na página do portal do Azure para a fonte de dados.

  2. Selecione Adicionar>Adicionar atribuição de função.

    Captura de tela que mostra a página Controle de acesso (IAM) com o menu Adicionar atribuição de função aberto.

  3. Selecione a função necessária para conceder o acesso necessário à fonte de dados. Isso pode variar dependendo da fonte de dados e das permissões exigidas lá pelo data factory. Por exemplo, se o data factory só precisar ler de um SQL Server do Azure, selecione a função Leitor .

  4. No separador Membros, selecione Identidade gerida e, em seguida, selecione Selecionar membros.

  5. Selecione a subscrição do Azure.

  6. Em Identidade gerida atribuída pelo sistema, selecione Data Factory e, em seguida, selecione uma fábrica de dados. Também pode utilizar o ID de objeto ou o nome da fábrica de dados (como o nome da identidade gerida) para localizar esta identidade. Para obter a ID do aplicativo da identidade gerenciada, use o PowerShell.

  7. 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-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 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           : ADFV2DemoFactory
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.DataFactory/factories/{factoryName}?api-version=2018-06-01

Resposta: Você receberá uma resposta como mostrado no exemplo abaixo. A secção "identidade" é preenchida em conformidade.

{
    "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":{

    }
}

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.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

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 detalhes, 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.

Consulte os tópicos a seguir que apresentam quando e como usar a identidade gerenciada:

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 Data Factory se baseia.

Consulte Limitações de identidades gerenciadas, que também se aplicam a identidades gerenciadas no Azure Data Factory.