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. Confira Instalar o Azure PowerShell para começar. 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.

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.

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:

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": "765ad4ab-XXXX-XXXX-XXXX-51ed985819dc",
        "tenantId": "72f988bf-XXXX-XXXX-XXXX-2d7cd011db47"
    },
    "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.

Shows the Azure portal with the system-managed identity object ID and Identity Tenant for an Azure Data Factory.

  • 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.

  1. Selecione IAM (Controle de acesso) .

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

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  3. Na guia Membros, selecione Identidade gerenciadae selecione Selecionar membros.

  4. Selecione sua assinatura do Azure.

  5. 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.

  6. 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
-----------                          --------
765ad4ab-XXXX-XXXX-XXXX-51ed985819dc 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

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

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

    }
}

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.

Confira os seguintes tópicos que apresentam quando e como usar a identidade gerenciada:

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.