Dela via


Använda en hanterad identitet för att få åtkomst till Azure Data Manager for Energy från andra Azure-tjänster

I den här artikeln beskrivs hur du kommer åt dataplanet eller kontrollplanet i Azure Data Manager for Energy från andra Microsoft Azure-tjänster med hjälp av en hanterad identitet.

Det finns ett behov av att tjänster som Azure Functions kan använda Azure Data Manager för energi-API:er. Med den här samverkan kan du använda de bästa funktionerna i flera Azure-tjänster.

Du kan till exempel skriva ett skript i Azure Functions för att mata in data i Azure Data Manager for Energy. I det scenariot bör du anta att Azure Functions är källtjänsten och att Azure Data Manager for Energy är måltjänsten.

Den här artikeln beskriver de fem huvudstegen för att konfigurera Azure Functions för åtkomst till Azure Data Manager for Energy.

Översikt över hanterade identiteter

Med en hanterad identitet från Microsoft Entra-ID kan ditt program enkelt komma åt andra Microsoft Entra-skyddade resurser. Identiteten hanteras av Azure-plattformen och kräver inte att du skapar eller roterar några hemligheter. Alla Azure-tjänster som vill få åtkomst till Azure Data Manager för energikontrollplan eller dataplan för alla åtgärder kan använda en hanterad identitet för att göra det.

Det finns två typer av hanterade identiteter:

  • Systemtilldelade hanterade identiteter har sin livscykel kopplad till resursen som skapade dem.
  • Användartilldelade hanterade identiteter kan användas på flera resurser.

Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser?.

För närvarande kan andra tjänster ansluta till Azure Data Manager for Energy med hjälp av en systemtilldelad eller användartilldelad hanterad identitet. Azure Data Manager for Energy stöder dock inte systemtilldelade hanterade identiteter.

För scenariot i den här artikeln använder du en användartilldelad hanterad identitet i Azure Functions för att anropa ett API för dataplanet i Azure Data Manager för Energy.

Förutsättningar

Innan du börjar skapar du följande resurser:

Steg 1: Hämta objekt-ID:t

Så här hämtar du objekt-ID:t för den användartilldelade identiteten som kommer åt Azure Data Manager for Energy-API:erna:

  1. Logga in på Azure-portalen.
  2. Gå till den hanterade identiteten och välj sedan Översikt.
  3. Under Essentials noterar du värdet för objekt-ID (huvudnamn).

Skärmbild av objekt-ID för en användartilldelad identitet.

Steg 2: Hämta program-ID:t

Hämta program-ID:t för den användartilldelade identiteten med hjälp av objekt-ID:t:

  1. I Azure Portal går du till Microsoft Entra-ID.
  2. Välj Företagsprogram på den vänstra menyn.
  3. I rutan Sök efter programnamn eller objekt-ID anger du objekt-ID:t.
  4. Observera värdet program-ID för det program som visas i resultatet.

Skärmbild av program-ID för en användartilldelad identitet.

Steg 3: Lägg till den användartilldelade hanterade identiteten i Azure Functions

  1. I Azure Portal går du till din Azure-funktion.
  2. Gå till Kontoinställningar och välj Identitet.
  3. Välj fliken Användartilldelade och välj sedan Lägg till.
  4. Välj din befintliga användartilldelade hanterade identitet och välj sedan Lägg till. Sedan återgår du till fliken Användartilldelad .

Skärmbild av en nyligen tillagd användartilldelad identitet i en Azure-funktion.

Steg 4: Lägg till program-ID i berättigandegrupper

Lägg sedan till program-ID:t till lämpliga grupper som ska använda berättigandetjänsten för att få åtkomst till Azure Data Manager för Energi-API:er. I följande exempel läggs program-ID:t till i två grupper:

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

Så här lägger du till program-ID:t:

  1. Samla in följande information:

    • Klientorganisations-ID
    • Klient-ID
    • Klienthemlighet
    • Azure Data Manager for Energy URI
    • Datapartitions-ID
    • Åtkomsttoken
    • Program-ID för den hanterade identiteten
  2. Använd API:et Lägg till medlem för att lägga till program-ID för den användartilldelade hanterade identiteten i lämpliga berättigandegrupper.

    Kommentar

    I följande kommandon ska du använda program-ID:t för den hanterade identiteten och inte objekt-ID:t.

    1. Om du vill lägga till program-ID:t i gruppen users@[partitions-ID].dataservices.energy kör du följande cURL-kommando via Bash i 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"
                      }'
      

      Här är ett exempelsvar:

      {
          "email": "<application ID of the managed identity>",
          "role": "MEMBER"
          }
      
    2. Om du vill lägga till program-ID:t i gruppen users.datalake.editors@[partitions-ID].dataservices.energy kör du följande cURL-kommando via Bash i 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"
                      }'
      

      Här är ett exempelsvar:

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

Steg 5: Generera en token

Nu är Azure Functions redo att komma åt Azure Data Manager for Energy-API:er.

Azure-funktionen genererar en token med hjälp av den användartilldelade identiteten. Funktionen använder det program-ID som finns i Azure Data Manager for Energy-instansen när token genereras.

Här är ett exempel på Azure-funktionskoden:

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

Du bör få följande lyckade svar från Azure Functions:

Skärmbild av ett meddelande om lyckat resultat från Azure Functions.

När föregående steg har slutförts kan du nu använda Azure Functions för att få åtkomst till Azure Data Manager for Energy-API:er med lämplig användning av hanterade identiteter.

Nästa steg

Läs mer om Lockbox: