Udostępnij za pośrednictwem


Używanie tożsamości zarządzanej do uzyskiwania dostępu do usługi Azure Data Manager for Energy z innych usług platformy Azure

W tym artykule opisano sposób uzyskiwania dostępu do płaszczyzny danych lub płaszczyzny sterowania usługi Azure Data Manager for Energy z innych usług platformy Microsoft Azure przy użyciu tożsamości zarządzanej.

Istnieje potrzeba, aby usługi takie jak Azure Functions mogły korzystać z usługi Azure Data Manager dla interfejsów API energii. Ta współdziałanie umożliwia korzystanie z najlepszych możliwości wielu usług platformy Azure.

Na przykład możesz napisać skrypt w usłudze Azure Functions w celu pozyskiwania danych w usłudze Azure Data Manager for Energy. W tym scenariuszu należy założyć, że usługa Azure Functions jest usługą źródłową, a usługa Azure Data Manager for Energy jest usługą docelową.

W tym artykule przedstawiono pięć głównych kroków konfigurowania usługi Azure Functions w celu uzyskania dostępu do usługi Azure Data Manager for Energy.

Omówienie tożsamości zarządzanych

Tożsamość zarządzana firmy Microsoft Entra ID umożliwia aplikacji łatwe uzyskiwanie dostępu do innych chronionych zasobów firmy Microsoft. Tożsamość jest zarządzana przez platformę Azure i nie wymaga tworzenia ani obracania żadnych wpisów tajnych. Każda usługa platformy Azure, która chce uzyskać dostęp do usługi Azure Data Manager dla płaszczyzny sterowania energią lub płaszczyzny danych dla dowolnej operacji, może użyć tożsamości zarządzanej, aby to zrobić.

Istnieją dwa typy tożsamości zarządzanych:

  • Tożsamości zarządzane przypisane przez system mają swój cykl życia związany z zasobem, który je utworzył.
  • Tożsamości zarządzane przypisane przez użytkownika mogą być używane w wielu zasobach.

Aby dowiedzieć się więcej o tożsamościach zarządzanych, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?.

Obecnie inne usługi mogą łączyć się z usługą Azure Data Manager for Energy przy użyciu tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika. Jednak usługa Azure Data Manager for Energy nie obsługuje tożsamości zarządzanych przypisanych przez system.

W scenariuszu w tym artykule użyjesz przypisanej przez użytkownika tożsamości zarządzanej w usłudze Azure Functions, aby wywołać interfejs API płaszczyzny danych w usłudze Azure Data Manager for Energy.

Wymagania wstępne

Przed rozpoczęciem utwórz następujące zasoby:

Krok 1. Pobieranie identyfikatora obiektu

Aby pobrać identyfikator obiektu tożsamości przypisanej przez użytkownika, która będzie uzyskiwać dostęp do interfejsów API usługi Azure Data Manager for Energy:

  1. Zaloguj się w witrynie Azure Portal.
  2. Przejdź do tożsamości zarządzanej, a następnie wybierz pozycję Przegląd.
  3. W obszarze Podstawy zanotuj wartość identyfikatora obiektu (podmiotu zabezpieczeń).

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

Krok 2. Pobieranie identyfikatora aplikacji

Pobierz identyfikator aplikacji tożsamości przypisanej przez użytkownika przy użyciu identyfikatora obiektu:

  1. W witrynie Azure Portal przejdź do pozycji Microsoft Entra ID.
  2. W menu po lewej stronie wybierz pozycję Aplikacje dla przedsiębiorstw.
  3. W polu Wyszukaj według nazwy aplikacji lub identyfikatora obiektu wprowadź identyfikator obiektu.
  4. W przypadku aplikacji wyświetlanej w wynikach zanotuj wartość Identyfikator aplikacji.

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

Krok 3. Dodawanie tożsamości zarządzanej przypisanej przez użytkownika do usługi Azure Functions

  1. W witrynie Azure Portal przejdź do funkcji platformy Azure.
  2. W obszarze Ustawienia konta wybierz pozycję Tożsamość.
  3. Wybierz kartę Użytkownik przypisany , a następnie wybierz pozycję Dodaj.
  4. Wybierz istniejącą tożsamość zarządzaną przypisaną przez użytkownika, a następnie wybierz pozycję Dodaj. Następnie wrócisz do karty Przypisane przez użytkownika.

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

Krok 4. Dodawanie identyfikatora aplikacji do grup uprawnień

Następnie dodaj identyfikator aplikacji do odpowiednich grup, które będą używać usługi upoważnienia do uzyskiwania dostępu do interfejsów API usługi Azure Data Manager for Energy. Poniższy przykład dodaje identyfikator aplikacji do dwóch grup:

  • users@[identyfikator partycji].dataservices.energy
  • users.datalake.editors@[identyfikator partycji].dataservices.energy

Aby dodać identyfikator aplikacji:

  1. Zbierz następujące informacje:

    • Identyfikator dzierżawy
    • Identyfikator klienta
    • Wpis tajny klienta
    • Azure Data Manager for Energy URI
    • Identyfikator partycji danych
    • Token dostępu
    • Identyfikator aplikacji tożsamości zarządzanej
  2. Dodaj interfejs API elementu członkowskiego, aby dodać identyfikator aplikacji tożsamości zarządzanej przypisanej przez użytkownika do odpowiednich grup uprawnień.

    Uwaga

    W poniższych poleceniach pamiętaj, aby użyć identyfikatora aplikacji tożsamości zarządzanej, a nie identyfikatora obiektu.

    1. Aby dodać identyfikator aplikacji do users@[identyfikator partycji].dataservices.energy group, uruchom następujące polecenie cURL za pomocą powłoki Bash na platformie 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"
                      }'
      

      Oto przykładowa odpowiedź:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      
    2. Aby dodać identyfikator aplikacji do users.datalake.editors@[identyfikator partycji].dataservices.energy group, uruchom następujące polecenie cURL za pośrednictwem powłoki Bash na platformie 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"
                      }'
      

      Oto przykładowa odpowiedź:

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

Krok 5. Generowanie tokenu

Teraz usługa Azure Functions jest gotowa do uzyskiwania dostępu do usługi Azure Data Manager dla interfejsów API energii.

Funkcja platformy Azure generuje token przy użyciu tożsamości przypisanej przez użytkownika. Funkcja używa identyfikatora aplikacji, który znajduje się w wystąpieniu usługi Azure Data Manager for Energy podczas generowania tokenu.

Oto przykład kodu funkcji platformy 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

Należy uzyskać następującą pomyślną odpowiedź z usługi Azure Functions:

Screenshot of a success message from Azure Functions.

Po wykonaniu powyższych kroków można teraz używać usługi Azure Functions do uzyskiwania dostępu do interfejsów API usługi Azure Data Manager for Energy przy użyciu odpowiednich tożsamości zarządzanych.

Następne kroki

Dowiedz się więcej o skrytce: