Verwenden einer verwalteten Identität für den Zugriff auf Azure Data Manager für Energie aus anderen Azure-Diensten

In diesem Artikel wird beschrieben, wie Sie mithilfe einer verwalteten Identität auf die Datenebene oder die Steuerungsebene von Azure Data Manager for Energy von anderen Microsoft Azure-Diensten zugreifen.

Es gibt eine Notwendigkeit für Dienste wie Azure Functions, um Azure Data Manager für Energie-APIs nutzen zu können. Mit dieser Interoperabilität können Sie die besten Funktionen mehrerer Azure-Dienste verwenden.

Sie können z. B. ein Skript in Azure Functions schreiben, um Daten in Azure Data Manager for Energy aufzunehmen. In diesem Szenario sollten Sie davon ausgehen, dass Azure Functions der Quelldienst ist und Azure Data Manager for Energy der Zieldienst ist.

Dieser Artikel führt Sie durch die fünf Standard Schritte zum Konfigurieren von Azure Functions für den Zugriff auf Azure Data Manager for Energy.

Übersicht über verwaltete Identitäten

Eine verwaltete Identität von Microsoft Entra ID ermöglicht Ihrer Anwendung den einfachen Zugriff auf andere von Microsoft Entra geschützte Ressourcen. Die Identität wird von der Azure-Plattform verwaltet und erfordert nicht, dass Sie geheime Schlüssel erstellen oder drehen. Jeder Azure-Dienst, der auf Azure Data Manager für Energiesteuerungsebene oder Datenebene für jeden Vorgang zugreifen möchte, kann dazu eine verwaltete Identität verwenden.

Es gibt zwei Typen von verwalteten Identitäten:

  • Vom System zugewiesene verwaltete Identitäten haben ihren Lebenszyklus an die Ressource gebunden, die sie erstellt hat.
  • Von Benutzern zugewiesene verwaltete Identitäten können für mehrere Ressourcen verwendet werden.

Weitere Informationen zu verwalteten Identitäten finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.

Derzeit können andere Dienste eine Verbindung mit Azure Data Manager for Energy herstellen, indem eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität verwendet wird. Azure Data Manager for Energy unterstützt jedoch keine vom System zugewiesenen verwalteten Identitäten.

Für das Szenario in diesem Artikel verwenden Sie eine vom Benutzer zugewiesene verwaltete Identität in Azure Functions, um eine Datenebenen-API in Azure Data Manager for Energy aufzurufen.

Voraussetzungen

Erstellen Sie die folgenden Ressourcen, bevor Sie beginnen:

Schritt 1: Abrufen der Objekt-ID

So rufen Sie die Objekt-ID für die vom Benutzer zugewiesene Identität ab, die auf den Azure Data Manager für Energie-APIs zugreift:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wechseln Sie zur verwalteten Identität, und wählen Sie dann "Übersicht" aus.
  3. Notieren Sie sich unter Essentials den Wert der Objekt-ID (Prinzipal).

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

Schritt 2: Abrufen der Anwendungs-ID

Rufen Sie die Anwendungs-ID der vom Benutzer zugewiesenen Identität mithilfe der Objekt-ID ab:

  1. Navigieren Sie im Azure-Portal zu Microsoft Entra ID.
  2. Wählen Sie im Menü auf der linken Seite die Option Unternehmensanwendungen aus.
  3. Geben Sie im Feld "Nach Anwendungsname oder Objekt-ID suchen" die Objekt-ID ein.
  4. Beachten Sie für die Anwendung, die in den Ergebnissen angezeigt wird, den Anwendungs-ID-Wert .

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

Schritt 3: Hinzufügen der vom Benutzer zugewiesenen verwalteten Identität zu Azure Functions

  1. Wechseln Sie im Azure-Portal zu Ihrer Azure-Funktion.
  2. Wählen Sie unter Kontoeinstellungen die Option Identität aus.
  3. Wählen Sie die Registerkarte Benutzerseitig zugewiesen und dann Hinzufügen aus.
  4. Wählen Sie Ihre vorhandene vom Benutzer zugewiesene verwaltete Identität und dann "Hinzufügen" aus. Anschließend kehren Sie zur Registerkarte "Benutzer zugewiesen " zurück.

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

Schritt 4: Hinzufügen der Anwendungs-ID zu Berechtigungsgruppen

Fügen Sie als Nächstes die Anwendungs-ID zu den entsprechenden Gruppen hinzu, die den Berechtigungsdienst verwenden, um auf Azure Data Manager für Energie-APIs zuzugreifen. Im folgenden Beispiel wird die Anwendungs-ID zu zwei Gruppen hinzugefügt:

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

So fügen Sie die Anwendungs-ID hinzu:

  1. Sammeln Sie die folgenden Informationen:

    • Mandanten-ID
    • Client-ID
    • Geheimer Clientschlüssel
    • Azure Data Manager für Energie-URI
    • Datenpartitions-ID
    • Zugriffstoken
    • Anwendungs-ID der verwalteten Identität
  2. Verwenden Sie die Api zum Hinzufügen von Membern , um die Anwendungs-ID der vom Benutzer zugewiesenen verwalteten Identität zu den entsprechenden Berechtigungsgruppen hinzuzufügen.

    Hinweis

    Achten Sie in den folgenden Befehlen darauf, die Anwendungs-ID der verwalteten Identität und nicht die Objekt-ID zu verwenden.

    1. Um die Anwendungs-ID zur gruppe users@[partition ID].dataservices.energy hinzuzufügen, führen Sie den folgenden cURL-Befehl über Bash in Azure aus:

       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"
                      }'
      

      Hier ist eine Beispielantwort:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      
    2. Um die Anwendungs-ID zur gruppe users.datalake.editors@[partition ID].dataservices.energy hinzuzufügen, führen Sie den folgenden cURL-Befehl über Bash in Azure aus:

       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"
                      }'
      

      Hier ist eine Beispielantwort:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      

Schritt 5: Generieren eines Tokens

Jetzt können Azure Functions auf Azure Data Manager für Energie-APIs zugreifen.

Die Azure-Funktion generiert ein Token mithilfe der vom Benutzer zugewiesenen Identität. Die Funktion verwendet die Anwendungs-ID, die im Azure Data Manager für Energieinstanz vorhanden ist, während das Token generiert wird.

Hier ist ein Beispiel für den Azure-Funktionscode:

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

Sie sollten die folgende erfolgreiche Antwort von Azure Functions erhalten:

Screenshot of a success message from Azure Functions.

Nachdem die vorstehenden Schritte abgeschlossen sind, können Sie jetzt Azure Functions verwenden, um auf Azure Data Manager für Energie-APIs mit entsprechender Verwendung von verwalteten Identitäten zuzugreifen.

Nächste Schritte

Weitere Informationen zu Lockbox: