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 para poder consumir o Azure Data Manager para APIs de 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 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 do Microsoft Entra. A identidade é gerenciada pela plataforma Azure e não exige que você crie ou gire segredos. Qualquer serviço do Azure que deseje acessar o Plano de Controle de Energia ou plano de dados do Azure Data Manager 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 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, confira 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 oferece suporte a identidades gerenciadas atribuídas pelo sistema.
Para o cenário deste 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 o 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:
- Entre no portal do Azure.
- Vá para a identidade gerenciada e selecione Visão geral.
- Em Essentials, observe o valor ID do objeto (principal).
Etapa 2: Recuperar a ID do aplicativo
Recupere a ID do aplicativo da identidade atribuída pelo usuário usando a ID do objeto:
- No portal do Azure, acesse Microsoft Entra ID.
- No menu esquerdo, selecione Aplicativos empresariais.
- Na caixa Pesquisar por nome de aplicativo ou ID de objeto, digite a ID do objeto.
- Para o aplicativo que aparece nos resultados, observe o valor de ID do aplicativo.
Etapa 3: Adicionar a identidade gerenciada atribuída pelo usuário ao Azure Functions
- No portal do Azure, vá para sua função do Azure.
- Em Configurações da Conta, selecione Identidade.
- Selecione a guia Atribuído pelo usuário e selecione Adicionar.
- Selecione sua identidade gerenciada atribuída pelo usuário existente e selecione Adicionar. Em seguida, você retornará à guia Usuário atribuído .
Etapa 4: Adicionar a ID do aplicativo a 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 a ID do aplicativo:
Reúna as seguintes informações:
- ID do Locatário
- ID do Cliente
- Segredo do cliente
- Azure Data Manager para URI de Energia
- ID da partição de dados
- Token de acesso
- ID do aplicativo da identidade gerenciada
Use a API Adicionar 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, certifique-se de usar a ID do aplicativo da identidade gerenciada e não a ID do objeto.
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" }
Para adicionar a ID do aplicativo ao grupo users.datalake.editors@[ID da partição].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 presente na instância do Azure Data Manager for Energy ao gerar o 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:
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óximas etapas
Saiba mais sobre o Lockbox: