Uso de una identidad administrada para acceder a Azure Data Manager for Energy desde otros servicios de Azure
En este artículo se describe cómo acceder al plano de datos o al plano de control de Azure Data Manager for Energy desde otros servicios de Microsoft Azure mediante una identidad administrada.
Es necesario que servicios como Azure Functions puedan consumir las API de Azure Data Manager for Energy. Esta interoperabilidad le permite usar las mejores capacidades de múltiples servicios de Azure.
Por ejemplo, puede escribir un script en Azure Functions para ingerir datos en Azure Data Manager for Energy. En ese escenario, debe asumir que Azure Functions es el servicio de origen y Azure Data Manager for Energy es el servicio de destino.
En este artículo se recorren los cinco pasos principales de configuración de Azure Functions para acceder a Azure Data Manager for Energy.
Introducción a las identidades administradas
Una identidad administrada de Microsoft Entra ID permite a la aplicación acceder fácilmente a otros recursos protegidos por Microsoft Entra. La plataforma Azure administra la identidad y no es necesario crear ni rotar ningún secreto. Cualquier servicio de Azure que quiera acceder al plano de control o al plano de datos de Azure Data Manager for Energy para cualquier operación puede usar una identidad administrada para ello.
Hay dos tipos de identidades administradas:
- El ciclo de vida de las identidades administradas asignadas por el sistema se vincula al recurso que las creó.
- Las identidades administradas asignadas por el usuario se pueden usar en varios recursos.
Para obtener más información sobre las identidades administradas, consulte ¿Qué son las identidades administradas para los recursos de Azure?.
Actualmente, otros servicios pueden conectarse a Azure Data Manager for Energy mediante una identidad administrada asignada por el sistema o asignada por el usuario. Sin embargo, Azure Data Manager for Energy no admite las identidades administradas asignadas por el sistema.
En el escenario de este artículo, usará una identidad administrada asignada por el usuario en Azure Functions para llamar a una API del plano de datos en Azure Data Manager for Energy.
Requisitos previos
Antes de empezar, cree los siguientes recursos:
Función de Azure basada en Python, mediante Azure Portal o la línea de comandos
Paso 1: Recuperar el identificador de objeto
Para recuperar el identificador de objeto de la identidad asignada por el usuario que accederá a las API de Azure Data Manager for Energy:
- Inicie sesión en Azure Portal.
- Vaya a la identidad administrada y seleccione Información general.
- En Información esencial, anote el valor de Id. de objeto (entidad de seguridad).
Paso 2: Recuperar el identificador de aplicación
Recupere el identificador de aplicación de la identidad asignada por el usuario mediante el identificador de objeto:
- En el Azure Portal, vaya a Microsoft Entra ID.
- En el menú izquierdo, seleccione Aplicaciones empresariales.
- En el cuadro Buscar por nombre de aplicación o id. de objeto, escriba el identificador de objeto.
- Anote el valor Id. de aplicación que aparece en los resultados para la aplicación.
Paso 3: Agregar la identidad administrada asignada por el usuario a Azure Functions
- En Azure Portal, vaya a la función de Azure.
- En Configuración de la cuenta, seleccione Identidad.
- Seleccione la pestaña Usuario asignado y, a continuación, seleccione Agregar.
- Seleccione la identidad administrada asignada por el usuario existente y, a continuación, seleccione Agregar. A continuación, se le devuelve a la pestaña Asignado por el usuario.
Paso 4: Agregar el identificador de aplicación a grupos de derechos
A continuación, agregue el identificador de aplicación a los grupos adecuados que usarán el servicio de derechos para acceder a las API de Azure Data Manager for Energy. En el ejemplo siguiente se agrega el identificador de aplicación a dos grupos:
- users@[partition ID].dataservices.energy
- users.datalake.editors@[partition ID].dataservices.energy
Para agregar el identificador de aplicación:
Recopile la información siguiente:
- Id. de inquilino
- Id de cliente
- Secreto del cliente
- URI de Azure Data Manager for Energy
- Identificador de partición de datos
- Access token
- Identificador de aplicación de la identidad administrada
Use la API Add Member para agregar el identificador de aplicación de la identidad administrada asignada por el usuario a los grupos de derechos adecuados.
Nota:
En los comandos siguientes, asegúrese de usar el identificador de aplicación de la identidad administrada y no el identificador de objeto.
Para agregar el identificador de aplicación al grupo users@[partition ID].dataservices.energy, ejecute el comando cURL siguiente a través de Bash en 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" }'
Esta es una respuesta de ejemplo:
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Para agregar el identificador de aplicación al grupo users.datalake.editors@[partition ID].dataservices.energy, ejecute el comando cURL siguiente a través de Bash en 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" }'
Esta es una respuesta de ejemplo:
{ "email": "<application ID of the managed identity>", "role": "MEMBER" }
Paso 5: Generar un token
Ahora, Azure Functions está listo para acceder a las API de Azure Data Manager for Energy.
La función de Azure genera un token mediante la identidad asignada por el usuario. La función usa el identificador de aplicación presente en la instancia de Azure Data Manager for Energy al generar el token.
Este es un ejemplo del código de función de 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
Debe obtener la siguiente respuesta de operación correcta de Azure Functions:
Una vez completados los pasos anteriores, puede usar Azure Functions para acceder a las API de Azure Data Manager for Energy con el uso adecuado de las identidades administradas.
Pasos siguientes
Más información sobre Caja de seguridad: