Compartilhar via


Usar uma identidade gerenciada para acessar o Gerenciador de Dados do Azure para Energia a partir de outros serviços do Azure

Este artigo descreve como acessar o plano de dados ou o painel de controle do Gerenciador de Dados do Azure para Energia a partir de outros serviços do Microsoft Azure usando uma identidade gerenciada.

Existe uma necessidade de serviços como o Azure Functions para poder consumir as APIs do Gerenciador de Dados do Azure para Energia. 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 Gerenciador de Dados do Azure para Energia. Nesse cenário, você deve supor que o Azure Functions é o serviço de origem e o Gerenciador de Dados do Azure para Energia é o serviço de destino.

Este artigo explica as cinco etapas principais para configurar o Azure Functions para acessar o Gerenciador de Dados do Azure para Energia.

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 alterne segredos. Qualquer serviço do Azure que queira acessar o painel de controle ou o plano de dados do Gerenciador de Dados do Azure para Energia para qualquer operação pode usar uma identidade gerenciada para fazer isso.

Há dois tipos de identidades gerenciadas:

  • As identidades gerenciadas atribuídas pelo sistema têm seu ciclo de vida associado 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, confira O que são identidades gerenciadas para recursos do Azure?.

No momento, outros serviços podem se conectar ao Gerenciador de Dados do Azure para Energia usando uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário. No entanto, o Gerenciador de Dados do Azure para Energia não é compatível com identidades gerenciadas atribuídas pelo sistema.

Para o cenário descrito neste artigo, você usará uma identidade gerenciada atribuída pelo usuário no Azure Functions para chamar uma API do plano de dados no Gerenciador de Dados do Azure para Energia.

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 irá acessar as APIs do Gerenciador de Dados do Azure para Energia:

  1. Entre no portal do Azure.
  2. Acesse a identidade gerenciada e selecione Visão geral.
  3. Em Essentials, observe o valor da ID do objeto (entidade de segurança).

Captura de tela da ID de objeto de uma identidade atribuída pelo usuário.

Etapa 2: recuperar a 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, acesse Microsoft Entra ID.
  2. No menu esquerdo, selecione Aplicativos empresariais.
  3. Na caixa Pesquisar por nome do aplicativo ou ID do objeto, insira a ID do objeto.
  4. Para o aplicativo exibido nos resultados, observe o valor da ID do aplicativo.

Captura de tela da ID de aplicativo para uma identidade atribuída pelo usuário.

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

  1. No portal do Azure, acesse a função do Azure.
  2. Em Configurações da Conta, selecione Identidade.
  3. Selecione a guia Atribuído pelo usuário e selecione Adicionar.
  4. Escolha sua identidade gerenciada atribuída pelo usuário existente e selecione Adicionar. Em seguida, você será direcionado à guia Atribuído pelo usuário.

Captura de tela de uma identidade atribuída pelo usuário adicionada recentemente a uma função do Azure.

Etapa 4: adicionar a ID do aplicativo a grupos de direitos

Em seguida, adicione a ID do aplicativo aos grupos apropriados que irão usar o serviço de direitos para acessar as APIs do Gerenciador de Dados do Azure para Energia. O exemplo a seguir adiciona a ID do aplicativo a dois grupos:

  • users@[partition ID].dataservices.energy
  • users.datalake.editors@[partition ID].dataservices.energy

Para adicionar a ID do aplicativo:

  1. Reúna as seguintes informações:

    • ID do locatário
    • ID do Cliente
    • Segredo do cliente
    • URI do Gerenciador de Dados do Azure para Energia
    • ID da partição de dados
    • Token de acesso
    • ID do Aplicativo da identidade gerenciada
  2. Use a opção Adicionar API Membro para adicionar a ID do aplicativo da identidade gerenciada atribuída pelo usuário aos grupos de direitos apropriados.

    Observação

    Nos comandos a seguir, use 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 de cURL usando o 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"
                      }'
      

      Veja abaixo 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 de cURL usando o 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"
                      }'
      

      Veja abaixo 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 Gerenciador de Dados do Azure para Energia.

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 Gerenciador de Dados do Azure para Energia ao gerar o token.

Veja abaixo 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:

Captura de tela de uma mensagem bem-sucedida do Azure Functions.

Com as etapas anteriores concluídas, agora você pode usar o Azure Functions para acessar as APIs do Gerenciador de Dados do Azure para Energia com o uso apropriado das identidades gerenciadas.

Próximas etapas

Saiba mais sobre o Lockbox: