Identidade gerenciada para o Data FactoryManaged identity for Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo ajuda você a entender o que é uma identidade gerenciada para Data Factory (anteriormente conhecido como Identidade de Serviço Gerenciada/MSI) e como ela funciona.This article helps you understand what a managed identity is for Data Factory (formerly known as Managed Service Identity/MSI) and how it works.

Observação

Este artigo foi atualizado para usar o módulo Az PowerShell do Azure.This article has been updated to use the Azure Az PowerShell module. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Para começar a usar o módulo do Az PowerShell, confira Instalar o Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Visão geralOverview

Ao criar um data factory, uma identidade gerenciada pode ser criada junto com a criação de fábrica.When creating a data factory, a managed identity can be created along with factory creation. A identidade gerenciada é um aplicativo gerenciado registrado para Azure Active Directory e representa esse data factory específico.The managed identity is a managed application registered to Azure Active Directory, and represents this specific data factory.

A identidade gerenciada para Data Factory beneficia os seguintes recursos:Managed identity for Data Factory benefits the following features:

  • Armazene a credencial em Azure Key Vault, nesse caso data Factory identidade gerenciada é usada para Azure Key Vault autenticação.Store credential in Azure Key Vault, in which case data factory managed identity is used for Azure Key Vault authentication.
  • Acesse 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, Azure SQL Instância Gerenciada, Azure Synapse Analytics, REST, atividade do databricks, atividade da Web e muito mais.Access data stores or computes using managed identity authentication, including Azure Blob storage, Azure Data Explorer, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, REST, Databricks activity, Web activity, and more. Verifique os artigos do conector e da atividade para obter detalhes.Check the connector and activity articles for details.

Gerar identidade gerenciadaGenerate managed identity

A identidade gerenciada para Data Factory é gerada da seguinte maneira:Managed identity for Data Factory is generated as follows:

  • Ao criar data factory por meio do portal do Azure ou do PowerShell, a identidade gerenciada será sempre criada automaticamente.When creating data factory through Azure portal or PowerShell, managed identity will always be created automatically.
  • 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.When creating data factory through SDK, managed identity will be created only if you specify "Identity = new FactoryIdentity()" in the factory object for creation. Consulte o exemplo do início rápido do .NET - criar data factory.See example in .NET quickstart - create data factory.
  • Ao criar 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.When creating data factory through REST API, managed identity will be created only if you specify "identity" section in request body. Consulte o exemplo do início rápido do REST - criar data factory.See example in REST quickstart - create data factory.

Se você achar que o data factory não tem uma identidade gerenciada associada após a instrução recuperar identidade gerenciada , você pode gerar explicitamente uma atualizando a data Factory com o iniciador de identidade programaticamente:If you find your data factory doesn't have a managed identity associated following retrieve managed identity instruction, you can explicitly generate one by updating the data factory with identity initiator programmatically:

Observação

  • A identidade gerenciada não pode ser modificada.Managed identity cannot be modified. A atualização de um data factory que já tem uma identidade gerenciada não terá nenhum impacto, a identidade gerenciada será mantida inalterada.Updating a data factory which already have a managed identity won't have any impact, the managed identity is kept unchanged.
  • Se você atualizar um data factory que já tem uma identidade gerenciada sem especificar o parâmetro "Identity" no objeto de fábrica ou sem especificar a seção "Identity" no corpo da solicitação REST, receberá um erro.If you update a data factory which already have a managed identity without specifying "identity" parameter in the factory object or without specifying "identity" section in REST request body, you will get an error.
  • Quando você exclui um data factory, a identidade gerenciada associada será excluída junto com.When you delete a data factory, the associated managed identity will be deleted along.

Gerar identidade gerenciada usando o PowerShellGenerate managed identity using PowerShell

Chame o comando set-AzDataFactoryV2 , então você verá os campos de "identidade" que estão sendo gerados recentemente:Call Set-AzDataFactoryV2 command, then you see "Identity" fields being newly generated:

PS C:\WINDOWS\system32> 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 usando a API RESTGenerate managed identity using REST API

Chame a API abaixo com a seção "identity" no corpo da solicitação:Call below API with "identity" section in the request body:

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"}.Request body: add "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.Response: managed identity is created automatically, and "identity" section is populated accordingly.

{
    "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/ADFV2DemoFactory",
    "type": "Microsoft.DataFactory/factories",
    "location": "<region>"
}

Gerar identidade gerenciada usando um modelo de Azure Resource ManagerGenerate managed identity using an Azure Resource Manager template

Modelo: adicionar "identity": {"type": "SystemAssigned"}.Template: add "identity": { "type": "SystemAssigned" }.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<dataFactoryName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.DataFactory/factories",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

Gerar identidade gerenciada usando o SDKGenerate managed identity using SDK

Chame a função create_or_update do data factory com Identity=new FactoryIdentity().Call the data factory create_or_update function with Identity=new FactoryIdentity(). Exemplo de código usando .NET:Sample code using .NET:

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

Recuperar identidade gerenciadaRetrieve managed identity

Você pode recuperar a identidade gerenciada de portal do Azure ou de forma programática.You can retrieve the managed identity from Azure portal or programmatically. As seções a seguir mostram alguns exemplos.The following sections show some samples.

Dica

Se você não vir a identidade gerenciada, gere a identidade gerenciada atualizando sua fábrica.If you don't see the managed identity, generate managed identity by updating your factory.

Recuperar identidade gerenciada usando portal do AzureRetrieve managed identity using Azure portal

Você pode encontrar as informações de identidade gerenciadas de portal do Azure-> suas propriedades de data factory >.You can find the managed identity information from Azure portal -> your data factory -> Properties.

  • ID de objeto de identidade gerenciadaManaged Identity Object ID
  • Locatário de identidade gerenciadaManaged Identity Tenant

As informações de identidade gerenciadas 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.The managed identity information will also show up when you create linked service, which supports managed identity authentication, like Azure Blob, Azure Data Lake Storage, Azure Key Vault, etc.

Ao conceder a permissão, na guia IAM (controle de acesso do recurso do Azure)-> adicionar atribuição de função-> atribuir acesso a-> selecione Data Factory em identidade gerenciada atribuída pelo sistema-> selecione pelo nome da fábrica; ou, em geral, você pode usar a ID de objeto ou nome de data factory (como nome de identidade gerenciada) para localizar essa identidade.When granting permission, in Azure resource's Access Control (IAM) tab -> Add role assignment -> Assign access to -> select Data Factory under System assigned managed identity -> select by factory name; or in general, you can use object ID or data factory name (as managed identity name) to find this identity. Se você precisar obter a ID do aplicativo da identidade gerenciada, poderá usar o PowerShell.If you need to get managed identity's application ID, you can use PowerShell.

Recuperar identidade gerenciada usando o PowerShellRetrieve managed identity using PowerShell

A ID da entidade de identidade gerenciada e a ID do locatário serão retornadas quando você obter uma data factory específica da seguinte maneira.The managed identity principal ID and tenant ID will be returned when you get a specific data factory as follows. Use o PrincipalId para conceder acesso:Use the PrincipalId to grant access:

PS C:\WINDOWS\system32> (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 Azure Active Directory comando com ID de entidade de segurança como parâmetro.You can get the application ID by copying above principal ID, then running below Azure Active Directory command with principal ID as parameter.

PS C:\WINDOWS\system32> 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 identidade gerenciada usando a API RESTRetrieve managed identity using REST API

A ID da entidade de identidade gerenciada e a ID do locatário serão retornadas quando você obter uma data factory específica da seguinte maneira.The managed identity principal ID and tenant ID will be returned when you get a specific data factory as follows.

Chame a API abaixo na solicitação:Call below API in the request:

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 mostrada no exemplo abaixo.Response: You will get response like shown in below example. A seção "identidade" é preenchida de acordo.The "identity" section is populated accordingly.

{
    "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 Outputs no JSON do ARM:To retrieve the managed identity from an ARM template, add an outputs section in the ARM JSON:

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.DataFactory/factories', parameters('<dataFactoryName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

Próximas etapasNext steps

Consulte os tópicos a seguir que introduzem quando e como usar data factory identidade gerenciada:See the following topics that introduce when and how to use data factory managed identity:

Consulte visão geral de identidades gerenciadas para recursos do Azure para obter mais informações sobre identidades gerenciadas para recursos do Azure, que data Factory identidade gerenciada baseia-se no.See Managed Identities for Azure Resources Overview for more background on managed identities for Azure resources, which data factory managed identity is based upon.