Identidade gerida do Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Este artigo ajuda-o a compreender o que é uma identidade gerida para a Data Factory (anteriormente conhecida como Identidade de Serviço Gerido/MSI) e como funciona.

Nota

Este artigo foi atualizado para utilizar o módulo Azure Az PowerShell. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja 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

Ao criar uma fábrica de dados, pode ser criada uma identidade gerida juntamente com a criação de fábrica. A identidade gerida é uma aplicação gerida registada no Azure Ative Directory, e representa esta fábrica de dados específica.

A identidade gerida para data factory beneficia as seguintes características:

  • Armazenar credencial em Azure Key Vault,caso em que a identidade gerida pela fábrica de dados é usada para a autenticação do Cofre da Chave Azure.
  • Aceda a lojas de dados ou cálculos utilizando a autenticação de identidade gerida, incluindo armazenamento de identidade Azure Blob, 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 atividade, atividade web, e muito mais. Verifique se o conector e os artigos de atividade estão a ser mais pormenorizados.

Gerar identidade gerida

A identidade gerida para a Data Factory é gerada da seguinte forma:

  • Ao criar a fábrica de dados através do portal Azure ou powerShell, a identidade gerida será sempre criada automaticamente.
  • Ao criar uma fábrica de dados através de SDK, a identidade gerida só será criada se especificar "Identidade = nova FactoryIdentity",)" no objeto de fábrica para criação. Veja o exemplo em .NET quickstart - crie fábrica de dados.
  • Ao criar a fábrica de dados através da REST API, a identidade gerida só será criada se especificar a secção "identidade" no organismo de pedido. Veja o exemplo no arranque rápido REST - crie fábrica de dados.

Se encontrar que a sua fábrica de dados não tem uma identidade gerida associada após a recuperação de instruções de identidade geridas, pode gerar explicitamente uma, atualizando a fábrica de dados com o iniciador de identidade programáticamente:

Nota

  • A identidade gerida não pode ser modificada. Atualizar uma fábrica de dados que já tenha uma identidade gerida não terá qualquer impacto, a identidade gerida é mantida inalterada.
  • Se atualizar uma fábrica de dados que já tenha uma identidade gerida sem especificar o parâmetro de "identidade" no objeto de fábrica ou sem especificar a secção "identidade" no corpo de pedidos REST, terá um erro.
  • Quando eliminar uma fábrica de dados, a identidade gerida associada será eliminada.

Gerar identidade gerida usando PowerShell

Ligue para o comando Set-AzDataFactoryV2 e, em seguida, vê os campos "Identidade" a serem recentemente gerados:

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 gerida usando REST API

Ligue abaixo da API com secção "identidade" no organismo de pedido:

PATCH https://management.azure.com/subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<data factory name>?api-version=2018-06-01

Órgão de pedido: adicione "identidade": { "tipo": "SystemAssigned" }.

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

Resposta: a identidade gerida é criada automaticamente e a secção "identidade" é povoada em conformidade.

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

Gere uma identidade gerida utilizando um modelo de Gestor de Recursos Azure

Modelo: adicionar "identidade": { "tipo": "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 gerida usando SDK

Ligue para a fábrica de dados create_or_update função com Identidade=nova FactoryIdentity(). Código de amostra utilizando .NET:

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

Recuperar identidade gerida

Pode recuperar a identidade gerida do portal Azure ou programáticamente. As seguintes secções mostram algumas amostras.

Dica

Se não vir a identidade gerida, gere a identidade gerida atualizando a sua fábrica.

Recupere a identidade gerida usando o portal Azure

Pode encontrar as informações de identidade geridas a partir do portal Azure -> sua fábrica de dados -> Properties.

  • ID de objeto de identidade gerido
  • Inquilino de Identidade Gerida

As informações de identidade geridas também aparecerão quando criar um serviço ligado, que suporta a autenticação de identidade gerida, como Azure Blob, Azure Data Lake Storage, Azure Key Vault, etc.

Ao conceder permissão, no separador Controlo de Acesso (IAM) do Azure o controlo de acesso (IAM) -> Adicionar a atribuição de funções -> Atribuir acesso a -> selecionar data factory sob o Sistema atribuído identidade gerida -> selecionar por nome de fábrica; ou, em geral, pode usar o ID do objeto ou o nome da fábrica de dados (como nome de identidade gerido) para encontrar esta identidade. Se precisar de obter o ID de aplicação de identidade gerido, pode usar o PowerShell.

Recupere a identidade gerida usando o PowerShell

A identificação do id principal de identidade gerida e o ID do inquilino serão devolvidos quando você receber uma fábrica de dados específica da seguinte forma. Utilize o PrincipalId para conceder acesso:

PS C:\WINDOWS\system32> (Get-AzDataFactoryV2 -ResourceGroupName <resourceGroupName> -Name <dataFactoryName>).Identity

PrincipalId                          TenantId
-----------                          --------
765ad4ab-XXXX-XXXX-XXXX-51ed985819dc 72f988bf-XXXX-XXXX-XXXX-2d7cd011db47

Pode obter o ID da aplicação copiando acima do ID principal, e depois correndo abaixo do comando do Diretório Ativo Azure com o ID principal como parâmetro.

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

Recupere a identidade gerida usando a REST API

A identificação do id principal de identidade gerida e o ID do inquilino serão devolvidos quando você receber uma fábrica de dados específica da seguinte forma.

Ligue abaixo da API no pedido:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}?api-version=2018-06-01

Resposta: Obterá resposta como mostrada no exemplo abaixo. A secção "identidade" é povoada em conformidade.

{
    "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 gerida a partir de um modelo ARM, adicione uma secção de saídas no ARM JSON:

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

Passos seguintes

Veja os seguintes tópicos que introduzem quando e como utilizar a identidade gerida pela fábrica de dados:

Consulte identidades geridas para a Visão Geral dos Recursos Azure para obter mais informações sobre identidades geridas para recursos Azure, em que a identidade gerida pela fábrica de dados é baseada.