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 segredos. 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 ao 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:
- Inicie sessão no portal do Azure.
- Vá para a identidade gerenciada e selecione Visão geral.
- Em Essentials, anote o valor de ID do objeto (principal).
Etapa 2: Recuperar o ID do aplicativo
Recupere a ID do aplicativo da identidade atribuída pelo usuário usando a ID do objeto:
- No portal do Azure, vá para Microsoft Entra ID.
- No menu à esquerda, selecione Aplicativos corporativos.
- Na caixa Pesquisar por nome de aplicativo ou ID do objeto, digite o ID do objeto.
- Para o aplicativo que aparece nos resultados, observe o valor 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 Definições da Conta, selecione Identidade.
- Selecione a guia Usuário atribuído e, em seguida, selecione Adicionar.
- Selecione sua identidade gerenciada atribuída pelo usuário existente e, em seguida, selecione Adicionar. Em seguida, você retornará à guia Usuário atribuído .
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:
Recolha as seguintes informações:
- ID de Inquilino do
- 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
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.
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@[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:
Com as etapas anteriores concluídas, agora você pode usar o Azure Functions para acessar APIs do Azure Data Manager for Energy com o uso apropriado de identidades gerenciadas.
Próximos passos
Saiba mais sobre o Lockbox: