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 los servicios como Azure Functions puedan consumir Azure Data Manager para las API de energía. Esta interoperabilidad le permite usar las mejores funcionalidades de varios 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 suponer que Azure Functions es el servicio de origen y Azure Data Manager for Energy es el servicio de destino.

En este artículo se describen los cinco pasos principales para configurar Azure Functions para acceder a Azure Data Manager for Energy.

Introducción a las identidades administradas

Una identidad administrada de Microsoft Entra ID permite que la aplicación acceda fácilmente a otros recursos protegidos por Microsoft Entra. La identidad se administra mediante la plataforma Azure y no requiere que cree ni rote ningún secreto. Cualquier servicio de Azure que quiera acceder a Azure Data Manager para el plano de control de energía o el plano de datos para cualquier operación puede usar una identidad administrada para hacerlo.

Hay dos tipos de identidades administradas:

  • Las identidades administradas asignadas por el sistema tienen su ciclo de vida asociado al recurso que los 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 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 de plano de datos en Azure Data Manager for Energy.

Requisitos previos

Antes de empezar, cree los siguientes recursos:

Paso 1: Recuperar el identificador de objeto

Para recuperar el identificador de objeto de la identidad asignada por el usuario que tendrá acceso a las API de Azure Data Manager for Energy:

  1. Inicie sesión en Azure Portal.
  2. Vaya a la identidad administrada y seleccione Información general.
  3. En Essentials, anote el valor de Id. de objeto (entidad de seguridad).

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

Paso 2: Recuperar el identificador de la aplicación

Recupere el identificador de aplicación de la identidad asignada por el usuario mediante el identificador de objeto:

  1. En el Azure Portal, vaya a Microsoft Entra ID.
  2. En el menú izquierdo, seleccione Aplicaciones empresariales.
  3. En el cuadro Buscar por nombre de aplicación o identificador de objeto, escriba el identificador de objeto.
  4. Para la aplicación que aparece en los resultados, anote el valor de Id . de aplicación.

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

Paso 3: Adición de la identidad administrada asignada por el usuario a Azure Functions

  1. En Azure Portal, vaya a la función de Azure.
  2. En Configuración de la cuenta, seleccione Identidad.
  3. Seleccione la pestaña Usuario asignado y, a continuación, seleccione Agregar.
  4. Seleccione la identidad administrada asignada por el usuario existente y, a continuación, seleccione Agregar. A continuación, volverá a la pestaña Asignado por el usuario.

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

Paso 4: Agregar el identificador de aplicación a los 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@[id. de partición].dataservices.energy
  • users.datalake.editors@[partition ID].dataservices.energy

Para agregar el identificador de aplicación:

  1. Recopile la información siguiente:

    • Id. de inquilino
    • Id. de cliente
    • Secreto del cliente
    • Azure Data Manager for Energy URI
    • Id. de partición de datos
    • Access token
    • Identificador de aplicación de la identidad administrada
  2. Use la API Agregar miembro para agregar el identificador de aplicación de la identidad administrada asignada por el usuario a los grupos de derechos adecuados.

    Nota:

    En los siguientes comandos, asegúrese de usar el identificador de aplicación de la identidad administrada y no el identificador de objeto.

    1. Para agregar el identificador de aplicación a la users@[id. de partición].dataservices.energy group, ejecute el siguiente comando cURL 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"
          }
      
    2. Para agregar el identificador de aplicación a la users.datalake.editors@[id. de partición].dataservices.energy group, ejecute el siguiente comando cURL 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: Generación de 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 que está 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 correcta de Azure Functions:

Screenshot of a success message from Azure Functions.

Con los pasos anteriores completados, ahora puede usar Azure Functions para acceder a Las API de Azure Data Manager for Energy con el uso adecuado de identidades administradas.

Pasos siguientes

Más información sobre la Caja de seguridad: