Usar uma identidade gerenciada para acessar o Azure Data Manager for Energy de outros serviços do Azure

Este artigo descreve como acessar o plano de dados ou o plano de controle do Azure Data Manager for Energy de outros serviços do Microsoft Azure usando uma identidade gerenciada.

Há uma necessidade de serviços como o Azure Functions poderem consumir APIs do Azure Data Manager for Energy. Essa interoperabilidade permite que você use os melhores recursos de vários serviços do Azure.

Por exemplo, você pode escrever um script no Azure Functions para ingerir dados no Azure Data Manager for Energy. Nesse cenário, você deve assumir que o Azure Functions é o serviço de origem e o Azure Data Manager for Energy é o serviço de destino.

Este artigo orienta você pelas cinco etapas principais para configurar o Azure Functions para acessar o Azure Data Manager for Energy.

Visão geral das identidades gerenciadas

Uma identidade gerenciada do Microsoft Entra ID permite que seu aplicativo acesse facilmente outros recursos protegidos pelo Microsoft Entra. A identidade é gerenciada pela plataforma Azure e não exige que você crie ou gire nenhum segredo. Qualquer serviço do Azure que queira acessar o plano de controle do Azure Data Manager for Energy ou o plano de dados para qualquer operação pode usar uma identidade gerenciada para fazer isso.

Existem dois tipos de identidades geridas:

  • As identidades gerenciadas atribuídas pelo sistema têm seu ciclo de vida vinculado ao recurso que as criou.
  • As identidades gerenciadas atribuídas pelo usuário podem ser usadas em vários recursos.

Para saber mais sobre identidades gerenciadas, consulte O que são identidades gerenciadas para recursos do Azure?.

Atualmente, outros serviços podem se conectar ao Azure Data Manager for Energy usando uma identidade gerenciada atribuída pelo sistema ou pelo usuário. No entanto, o Azure Data Manager for Energy não suporta identidades geridas atribuídas pelo sistema.

Para o cenário neste artigo, você usará uma identidade gerenciada atribuída pelo usuário no Azure Functions para chamar uma API de plano de dados no Azure Data Manager for Energy.

Pré-requisitos

Antes de começar, crie os seguintes recursos:

Etapa 1: Recuperar a ID do objeto

Para recuperar a ID do objeto para a identidade atribuída pelo usuário que acessará as APIs do Azure Data Manager for Energy:

  1. Inicie sessão no portal do Azure.
  2. Vá para a identidade gerenciada e selecione Visão geral.
  3. Em Essentials, anote o valor de ID do objeto (principal).

Screenshot of the object ID for a user-assigned identity.

Etapa 2: Recuperar o ID do aplicativo

Recupere a ID do aplicativo da identidade atribuída pelo usuário usando a ID do objeto:

  1. No portal do Azure, vá para Microsoft Entra ID.
  2. No menu à esquerda, selecione Aplicativos corporativos.
  3. Na caixa Pesquisar por nome de aplicativo ou ID do objeto, digite o ID do objeto.
  4. Para o aplicativo que aparece nos resultados, observe o valor ID do aplicativo .

Screenshot of the application ID for a user-assigned identity.

Etapa 3: Adicionar a identidade gerenciada atribuída pelo usuário ao Azure Functions

  1. No portal do Azure, vá para sua função do Azure.
  2. Em Definições da Conta, selecione Identidade.
  3. Selecione a guia Usuário atribuído e, em seguida, selecione Adicionar.
  4. Selecione sua identidade gerenciada atribuída pelo usuário existente e, em seguida, selecione Adicionar. Em seguida, você retornará à guia Usuário atribuído .

Screenshot of a newly added user-assigned identity to an Azure function.

Etapa 4: Adicionar a ID do aplicativo aos grupos de direitos

Em seguida, adicione a ID do aplicativo aos grupos apropriados que usarão o serviço de direito para acessar as APIs do Azure Data Manager for Energy. O exemplo a seguir adiciona a ID do aplicativo a dois grupos:

  • users@[ID da partição].dataservices.energy
  • users.datalake.editors@[ID da partição].dataservices.energy

Para adicionar o ID do aplicativo:

  1. Recolha as seguintes informações:

    • ID do inquilino
    • ID de Cliente
    • Segredo do cliente
    • Azure Data Manager for Energy URI
    • ID da partição de dados
    • Token de acesso
    • ID do aplicativo da identidade gerenciada
  2. Use a API Adicionar Membro para adicionar a ID do aplicativo da identidade gerenciada atribuída pelo usuário aos grupos de direitos apropriados.

    Nota

    Nos comandos a seguir, certifique-se de usar a ID do aplicativo da identidade gerenciada e não a ID do objeto.

    1. Para adicionar a ID do aplicativo ao grupo users@[partition ID].dataservices.energy, execute o seguinte comando cURL via Bash no Azure:

       curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/users@ <data-partition-id>.dataservices.energy/members' \
          --header 'data-partition-id: <data-partition-id>' \
          --header 'Authorization: Bearer \
          --header 'Content-Type: application/json' \
          --data-raw '{
                          "email": "<application ID of the managed identity>",
                          "role": "MEMBER"
                      }'
      

      Aqui está um exemplo de resposta:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      
    2. Para adicionar a ID do aplicativo ao grupo users.datalake.editors@[partition ID].dataservices.energy, execute o seguinte comando cURL via Bash no Azure:

       curl --location --request POST 'https://<Azure Data Manager for Energy URI>/api/entitlements/v2/groups/ users.datalake.editors@ <data-partition-id>.dataservices.energy/members' \
          --header 'data-partition-id: <data-partition-id>' \
          --header 'Authorization: Bearer \
          --header 'Content-Type: application/json' \
          --data-raw '{
                          "email": "<application ID of the managed identity>",
                          "role": "MEMBER"
                      }'
      

      Aqui está um exemplo de resposta:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      

Etapa 5: Gerar um token

Agora, o Azure Functions está pronto para acessar as APIs do Azure Data Manager for Energy.

A função do Azure gera um token usando a identidade atribuída pelo usuário. A função usa a ID do aplicativo que está presente na instância do Azure Data Manager for Energy durante a geração do token.

Aqui está um exemplo do código de função do Azure:

import logging
import requests
import azure.functions as func
from msrestazure.azure_active_directory import MSIAuthentication

def main(req: func.HttpRequest) -> str:
    logging.info('Python HTTP trigger function processed a request.')

    //To authenticate by using a managed identity, you need to pass the Azure Data Manager for Energy application ID as the resource.     
    //To use a user-assigned identity, you should include the   
    //client ID as an additional parameter.
    //Managed identity using user-assigned identity: MSIAuthentication(client_id, resource)

    creds = MSIAuthentication(client_id="<client_id_of_managed_identity>”, resource="<meds_app_id>")
    url = "https://<meds-uri>/api/entitlements/v2/groups"
    payload = {}
    // Passing the data partition ID of Azure Data Manager for Energy in headers along with the token received using the managed instance.
    headers = {
        'data-partition-id': '<data partition id>',
        'Authorization': 'Bearer ' + creds.token["access_token"]
    }
    response = requests.request("GET", url, headers=headers, data=payload, verify=False)
    return response.text

Você deve obter a seguinte resposta bem-sucedida do Azure Functions:

Screenshot of a success message from Azure Functions.

Com as etapas anteriores concluídas, agora você pode usar o Azure Functions para acessar as APIs do Azure Data Manager for Energy com o uso apropriado de identidades gerenciadas.

Próximos passos

Saiba mais sobre o Lockbox: